基于STM32和AD7791实现电子秤设计

2020-02-14 08:49崔国强罗德雨王玉花
仪器仪表用户 2020年2期
关键词:电子秤电信号差分

崔国强,詹 宁,罗德雨,易 汉,王玉花

(北方工业大学 信息学院,北京 100041)

电子秤的发展过程经历了由静态称量到动态称量、由模拟化到数字化、由低精度到高精度、由功能单一到功能多样化的转变。随着单片机科技应用迅猛的发展,在医疗设备、食品检测、家用电器等方面向着更加精准、更加便捷、更加智能、更加可靠的方向推进[1]。

课题针对Analog Device 公司推出的模数转换器AD7791 应用于电子秤的设计实现。AD7791 是24 位Σ-Δ型ADC,精度高、稳定性强,可以满足设计中对高精度数字电子秤的要求。该设计方案可以应用于科学研究、食品药品等领域需要较高精度的电子秤设计。

1 系统方案

称重传感器的核心是电阻式应变片,采用两个零漂移放大器ADA4528-1 组成了前端差分放大电路,放大的电信号通过低通滤波器、差分滤波器限制进入AD7791 的噪声。STM32 单片机通过SPI 接口控制AD7791,将该模拟电信号进行模数转换,传输数据并运算输出到LED 显示屏上。系统框图如图1 所示。

图1 系统框图Fig.1 System block diagram

图2 前端处理电路仿真电路图Fig.2 Front-end processing circuit simulation circuit diagram

2 硬件设计

2.1 应变片组成的称重传感器

根据设计的要求,决定选择TCS-130 型电阻应变式传感器。TCS-130 的非线性误差(传感器输出的电压信号与被测物之间对应关系程度的参数)在0.02%左右,重复性误差在0.015%左右,温度影响在0.03%左右。此传感器的内部线路采用的是惠斯登电桥,因为惠斯登电桥具有很多优点,比如可以抑制干扰、抑制温度过高或过低,从而降低对测量结果产生的影响,方便测量等。因此,此电阻应变式传感器也具有抑制温度干扰、稳定性高等优点。TCS-130 型称重传感器的原理是当重物作用于称重板时,电阻应变片受力导致变形,从而其电阻也发生相应改变,使电桥失去平衡,差动信号随之产生,以便于后续电路采集和处理这一重量数据。弹性体受力导致弹性体形变,任何微小的力都会导致称重板发生形变[2]。

2.2 前端处理电路

前端处理电路采用两个超低噪声的零漂移运算放大器ADA4528-1、滤波器以及24 位ADCAD7791。

ADA4528-1 零漂移运算放大器的优点是具有超低噪声,具有轨到轨输入输出摆幅,提供8 引脚MSOP 封装。零漂移放大器的失调电压漂移接近为零,额定温度范围为-40℃~+125℃,扩展工业温度范围,放大器连续自行校正任何直流误差,尽可能保持精确。除了低失调电压和漂移外,零漂移放大器也没有闪烁噪声,这一特性对于电子秤在低频或直流时进行精确测量有极大的帮助。多用于医疗仪器、热电偶、电子秤、称重传感器和桥式传感器、手持式测试设备等精密仪器。ADA4528-1 的增益为1+2R5/R9,由图2 中可得知R5 的值为11.3kΩ,R9 的值为60.4Ω。因此,可以求出此放大器的放大倍数为375 倍,也就说可以将称重传感器输出放大375 倍。

两片ADA4528-1 组成差分放大器,由应变片组成的称重传感器输出的电压信号在输入到ADA4528-1 放大器中放大,放大后的电信号分别通过电容C1、C2 和R5、R6 组成的低通滤波器,电容C5 和R7、R8 组成的差分滤波器,C3、C4 和R7、R8 一起构成的共模滤波器进行滤波,以此来抑制进入AD7791 中的噪声。该电路经过载Multisin 软件平台上仿真电路如图2 所示。

为了能仿真应变片输出的毫伏级微弱电压信号,将桥式电阻设置成图2 中R1-R4 的值。放大后的电信号在经过滤波后输入到AD7791 中进行模数转换,将模拟信号转化为数字信号。

2.3 AD7791及其应用

图3 单一转换时序图Fig.3 Single conversion timing diagram

AD7791 是ADI 推出的一款低功耗、完整的模拟前端,内置24 位Σ-Δ 型低噪声ADC、缓冲器和片内数字滤波器。适用于测量宽动态范围,被广泛应用在低频测量电路中。例如称重秤、压力测量、温度测量、传感器测量、智能变送器、电池应用、便携式仪器仪表等。AD7791 有3 种配置方式,分别是:单一转换方式、连续转换方式和连续读取方式。在单一转换模式下,AD7791 会处于关断模式。当通过在模式寄存器中将MD1 设置为1,并将MD0 设置为0 来启动单次转换时,AD7791 会上电,执行单次转换,然后返回关断模式。DOUT/ RDY 变为低电平时表示转换完成。从数据寄存器读取数据时,DOUT/RDY 将变高。如果CS 为低电平,DOUT/RDY 将会保持高电平,直到另一个转换开始并完成。如果需要的话,即使DOUT/RDY 变高,也仍然可以多次读取数据寄存器。单一转换示意图如图3 所示。

由于一些默认的设置满足本设计的需求,所以在此不用配置。若想要控制AD7791,需要通过SPI 向AD7791 发送命令。同时,如果要读取ADC 采集的数据,那么就要先发送0x38 命令给AD7791,这时再调用读取数据的函数,就可以得到采集值。

低电平信号在两个零漂移放大器ADA4528-1 中进行放大,又经过低通滤波器、差分滤波器和共模滤波器对放大后的电信号的噪声进行抑制,最后将电信号输入到ADCAD7791 中。

采用STM32 单片机控制器,通过SPI 接口对AD7791进行数据读取和数据处理。在本设计中,采用了GPIO 引脚模拟SPI 接口将数据传输到MCU 中进行处理。分别用GPIO 引 脚PA7、PA6、PA5、PA4 模 拟 了SPI 引 脚 中 的MOSI、MISO、SCK、NSS。

LCD 显示模块通过并行接口与STM32 相互连接。

2.4 STM32控制器

图4 主流程图Fig.4 Main flow chart

STM32F103RBT6 作为主控芯片,它是ST 公司推出的增强型系列STM32F103 中的一员,具有高达1MB 的片上闪存,具有72MHZ 的最高主频,丰富的外设(包括串口、定时器、蜂鸣器、LED、2.4 寸TFT-LCD 显示屏、SD 卡接口、USART 接口、SPI 接口、扩展接口等),还有USB、CAN 和集成电机控制模块。Cortex-M3 采用32 位处理器内核,拥有独立的数据总线以及指令总线,共同分享一个4GB 的存储器空间[4]。本次设计中用CT117E STM32 开发板,使用板上资源TFT-LCD、PA7、PA6、PA5、PA4 的GPIO 引脚模拟SPI 通信。

3 系统软件设计

设计软件部分主要包括以下3 个方面:ADCAD7791 的配置使用;基于SPI 通信协议建立STM32 与AD7791 的通信;对采集到的数据进行处理后显示到LCD 上。图4 是设计流程图。AD7791 采集SPI 核心代码如下:

读取ADC 采集值:

ad7791TimeCount = curTempData; //一定时间计算一次

CS_L; //拉低CS 值

SpiSendCom(0x38); //写0X38 命令,进行继续读模式

delay_us(20);

CS_L; //读取数据

while(DI) //等待MISO 线变为高电平

if(GetMs(curTempData) > 20)

SpiAnalogInitReset();

break; //如果超时,则退出

readAd7791Data[readAd7791Count] = SpiReadData(); //获得采集值

表1 采集数据Table 1 Collected data

图5 比例关系Fig.5 Proportional relationship

4 实际测试

将称重传感器放置于水平地面,将程序下载到开发板中调试。在接收到与施加重量成比例的电信号时,将电信号与施加砝码重量逐一记录。记录并找出数据中的比例关系,在保证温度等外部环境保持不变的情况下,进行多次测量。另外,为了使显示结果更加精准,将比例函数分为两段,在1g ~50g 时使用第1 个比例函数,大于50g 的部分使用第2 个比例函数。采集到的数据表1 是20g ~160g的实际采集数据。

重量与采集信号电压的比例函数关系图如图5 所示。

分段比例函数:

if(adcVal > threshold)

weaghtVal = ((adcVal - b2)/k2); //如果大于50g,用系数2

else

weaghtVal = ((adcVal - b1)/k1); //小于50g,使用系数1

LCD 显示:

static u32 uintPrice[2] = {20,20}; // 此数据为单价

static u32 weight[2] = {30,20};

//此数据为ADC 采集到的数据,用于显示在LCD 显示屏上;需要ADC 传入,实时改变。

static u32 TotalPrice[2] = {60,60}; // 此数据为总价格。

extern u32 readAverageVal; //此数据为求得的平均值。

5 结论

利用AD7791 搭建精准电子秤的设计与实现实验平台。经过测试:测量范围在1g ~6KG 之间,测量范围在10g 内时测量精度能达到0.2g。

猜你喜欢
电子秤电信号差分
RLW-KdV方程的紧致有限差分格式
电子秤
符合差分隐私的流数据统计直方图发布
基于联合聚类分析的单通道腹部心电信号的胎心率提取
数列与差分
基于Code Composer Studio3.3完成对心电信号的去噪
关于电子秤的设计
基于随机森林的航天器电信号多分类识别方法
基于STM32的高精度电子秤设计
相对差分单项测距△DOR