简易数字电子秤设计
一、引言
随着科技的发展,数字电子秤在日常生活和工业应用中扮演着越来越重要的角色。本文将围绕一款基于单片机控制的简易数字电子秤的设计展开详细阐述,介绍其设计理念、硬件电路设计、软件编程以及系统测试等方面的内容。
电子秤作为精确测量物体重量的工具,广泛应用于商业贸易、工业生产和家庭使用中。传统的机械秤由于操作繁琐且读数不够直观,逐渐被数字电子秤所取代。数字电子秤具有读数直观、使用方便、称重准确等优点,因此得到了广泛的认可和使用。
二、总体设计
1.系统框图概述
简易数字电子秤的系统结构包括传感器模块、信号调理电路、模数转换器(ADC)、单片机控制电路和显示电路等几部分。具体系统框图如下:
```
+--------------------------+
+----------------------| |-------------+
| | | | |
传感器 信号调理 模数转换 单片机 显示电路
模块 电路 电路 控制电路
+---------+ +------+ +----------+
| | |
电源电路 键盘输入模块
+-----------------------------+
```
2.各模块功能描述
2.1 传感器模块
称重传感器是电子秤的核心部件,主要功能是感应物体的重量并将其转化为电信号。本设计采用应变片式传感器,通过应变片的形变引起电阻变化,进而转化为电压信号。
2.2 信号调理电路
信号调理电路用于将传感器输出的微弱电信号进行放大和滤波处理,以便后续的模数转换。常用的方法包括差分放大电路和全桥测量电路。
2.3 模数转换电路
A/D转换电路将模拟信号转换为数字信号。本设计采用HX711芯片,该芯片集成度高、抗干扰性强,并且具备24位高精度,能够确保重量数据的准确性。
2.4 单片机控制电路
单片机是整个系统的控制核心,本设计采用STC89C52单片机,负责数据处理、显示及用户交互等功能。
2.5 显示电路
显示电路用于将最终的重量值显示给用户。本设计采用LED数码管显示,能够实时显示称量结果。
三、硬件电路设计
1.传感器选择与工作原理
本设计选择应变片式电阻传感器,当传感器受到外力作用时,应变片的电阻值发生变化,通过电桥测量电路将电阻变化转化为电压信号。电桥测量电路如下图所示:
```
V_in
|
___|R1
| | | |
R2 R3 R4
| | | |
A B C D
| | | |
___|Rf
|
V_out
```
当四个桥臂电阻达到平衡状态时,电桥输出为零;当有压力作用时,桥臂电阻值发生变化,电桥失去平衡,输出电压与压力成正比。
2.信号调理电路设计
为了增强信号的稳定性和准确性,需要对传感器输出信号进行放大和滤波处理。本设计采用AD620放大器构建差分放大电路,如下图所示:
```
V_in1
|
AD620 |
| GND
O/P |
V_in2 |
| |
GND |
V_out |
|
V_ref >+----+
| |
VDD |
| |
VSS >-----+
```
3.A/D转换电路设计
本设计采用HX711芯片,该芯片内部集成了稳压电源、片内时钟振荡器等外围电路,具有集成度高、响应速度快、抗干扰能力强的特点。其典型接口电路如下图所示:
```
HX711 单片机
+-------------+---------+
| | |
NC SCK DATA
DT DOUT VCC,VEE,GND,PDWN
NGND NC NC,DVDD
STL NC NC,DVDD,SCK,DIN,CLK
EXT NC NC,DVDD,DIN,DOUT,CLKIN
NC NC NC,DVDD,CS,FS,RESET,CLKON
```
4.单片机控制电路设计
选用STC89C52单片机作为主控单元,其主要功能是对采集的数据进行处理,并通过显示电路显示重量。STC89C52单片机具有丰富的I/O接口和强大的处理能力,适用于本设计的需求。
5.显示电路设计
采用四位一体共阳极LED数码管显示,驱动电路简单且显示效果稳定。数码管的段选信号由单片机控制,通过位选码实现动态扫描显示。
显示电路如下图所示:
```
------------+--+---------+---------+--+------+------------+
+5V R1 Q1 ... Q8 锁存器 74HC595 数码管DS1
| | | ... | CN DS2
| | | | | ... DSn
GND |------+ GND | ... | |
... DP ... | |
| |
EN ... | |
... ... ... | |
地 ... ... ... ... ... | |
... ... | |
... ... | |
... ... | |
..........................| |
```
四、软件设计及实现
1.软件流程图
软件部分主要包括系统初始化、数据采集与处理、数据显示等步骤。系统通电后,首先初始化单片机及相关外设,然后进入数据采集循环。采集到的数据经过滤波处理后,再进行标定和单位转换,最后送显示电路显示。软件流程图如下:
```mermaid
flowchart TD
初始化(初始化变量,定义初值) --> 调用A/D采集模块(采集数据)
A/D采集模块 --> 数据处理(滤波,调零,定标)
数据处理 --> 显示模块(调用数码管显示子函数)
```
2.主要函数说明
2.1 A/D数据采集函数
该函数负责从HX711芯片读取24位A/D串行二进制数据,并将其转换为十进制数。具体代码如下:
```c
unsigned long Read_Ad() {
unsigned long ad_data = 0; // A/D采集串行二进制数据转为十进制数存放在这里
//前24个AD脉冲选择通道和增益为128或者64,第25个AD脉冲开始采集高8位数据,接下来的1SK,1~SK3依次采集低8位,最后一位是零点校正标志位。
for (int i = 0;i < 24;i++) {
while(!HX711); //检测HX711的DOUT引脚是否输出低电平,如果输出为低则表示可以进行数据接收。
ad_data = (ad_data << 1) + (1&HX711_DOUT); //读取一位A/D数据,存入ad_data中并左移一位。
}
delay_us(50); //延时等待A/D转换结束
return ad_data; //返回采集到的24位高低电平组合成的二进制数。如果没有加入调零程序的话此时得到的数值为原始输出值。
}
```
2.2 显示刷新函数
该函数负责将处理后的数据传输到显示电路,并按位选码动态扫描显示。具体代码如下:
```c
void DisplayRefresh(unsigned long weightValue) {
// 动态扫描显示千位、百位、十位、个位和单价小数点后两位数码管的数值。
// 延时程序要对千位、百位、十位位选延时100ms,各位数码管的延时时间设置为1ms,如果不设置延时因为视觉暂留的现象会看到各位数码管同时被点亮,从而观察到四位数码管同时被点亮的现象,所以这里要设置延时。
//千位位选延时100ms,百位位选延时100ms十位位选延时100ms个位位选延时100ms,如果各位数码管的延时时间过短会导致数码管不够亮,不便于观察,实验时可以调整延时时间来得到最佳观察亮度。
}
```
3.数据处理与误差校正方案
为了保证测量精度,需要对采集的数据进行误差校正和单位换算。具体步骤如下:
- 滤波处理:通过软件算法去除噪声干扰,提高数据稳定性。
- 标定过程:通过已知重量物体进行多次测量,求取平均值,确定零点偏移量和灵敏度系数。
- 单位换算:将A/D采集到的数字量转换为相应的重量单位,如克或千克。
五、系统测试与性能验证
1.测试仪器及工具列表
为了全面验证设计的简易数字电子秤的性能,需要准备以下测试仪器和工具:
- 标准砝码:用于校准和测试电子秤的准确性。
- 万用表:用于检测电路板上各测试点的电压值。
- 示波器:用于观测信号波形及其变化。
- PC机:用于MATLAB绘图及分析。
- 焊接工具:用于电路板的焊接工作。
- EDA仿真工具:用于设计和测试原理图。
- MCU烧写工具:用于程序下载和调试。
- 其他基本电工工具。
2.指标测试及测试结果分析
2.1 物体称重标定与测试
为了检验电子秤的准确性,需使用标准砝码对其进行标定和测试。具体步骤如下:
- 初始标定:在不放任何物品的情况下,调节电子秤使其初始读数为“0”。记录此时的初始输出值。例如,若初始读数为70g,则需要在程序中减去这个初始值。
- 多点校准:在电子秤上放置不同重量的标准砝码(如10g, 20g, ..., 100g),记录每次的输出值,绘制成线性图表。理想情况下,输出值与实际重量呈线性关系。通过MATLAB进行曲线拟合,得出线性方程y=kx+b,其中k为灵敏度系数,b为零点偏移量。通过最小二乘法拟合直线,求得k≈76.043,b≈64.044。定标后的校验过程表明线性相关度很高,满足设计要求。
- 重复性测试:多次重复测量同一重量的标准砝码,检查读数的一致性。若存在误差,可进一步调整软件中的滤波和误差校正参数。
- 误差分析:通过对比实测值和真实值之间的偏差,计算电子秤的测量误差。若误差超出预期范围(如±5g),需重新检查硬件连接和软件算法。
2.2 输出电压信号测试与分析
使用示波器观测A/D转换前后的信号波形,验证信号的稳定性和噪声情况。具体步骤如下:
- 传感器输出电压测试:在未加载和满载情况下,使用万用表测量电桥输出端的电压值。未加载时的电压值约为0V,而满载时应接近最大输出电压。
- 放大电路测试:测量经过AD620放大后的输出电压,确保其在合理范围内(约2.5V)。调整放大器增益以获得最佳放大效果。
- A/D转换测试:读取HX711的输出数据并进行验证。确保A/D转换后的数据能正确反映输入模拟信号的大小。例如,当输入电压为2.00mV时,对应的A/D值为336480,符合设计预期。
- 动态响应测试:在不同加载和卸载速度下观测输出信号的变化情况,确保无滞后或过度振荡现象。
- 温度影响评估:在不同环境温度下进行测试,检查温度变化对输出信号的影响