基于单片机的电子测量系统仿真设计

2024-03-19 08:15文浩宋世宇
电子制作 2024年4期
关键词:电桥高电平差动

文浩,宋世宇

(成都理工大学 机电工程学院,四川成都,610000)

1 设计要求

■1.1 设计题目

通过电桥电路、放大电路、数模转换电路、控制部分、显示部分和键盘输入部分构成完整电子秤测量系统,并完成电子秤的硬件设计调试和程序调试仿真。具体要求如下所列:

(1)利用Proteus 构建相应的测量系统硬件,主要包括:电桥电路(半差动)、放大电路(TL082 构成仪用仪表放大器结构)、模数转换电路(ADC0832)、单片机控制部分(AT89C51)、显示部分(LCD1602)和键盘部分(矩阵键盘)。按照一定的器件搭建硬件仿真电路,并完成硬件电路的调试。

(2)利用keil 单片机仿真软件对单片机进行程序仿真,完成控制、计算、AD 采样、键盘输入、显示部分的相应程序编写并调试。

(3)利用proteus 和keil 联合调试仿真,完成整体系统的集成调试。

(4)根据输入电阻的变化和显示输出情况,完成静态标定,完成对系统灵敏度、线性度等指标的测量。

■1.2 设计方案及框图

根据要求,作者拟采用差动电桥来模拟应变式电阻传感器的工作[1],模拟有待称量的物体放在传感器上方,传感器感受应变后产生电阻变化后转为电压变化,由于变化非常微小,所以又采用仪表放大电路将微小的变化放大,将放大信号送入AD 采样芯片,采样后送入MCU 中,通过LCD1602 显示出重量。通过矩阵键盘输入物品的价格,可以直接在LCD1602 中显示商品的单价,重量以及总价,通过此方案画出的设计框图如图1 所示。

图1 电子测量系统设计框图

2 硬件设计

■2.1 电桥电路

如图2 所示,即为半桥差动电路,如果让R1和R2为工作电阻应变片,那么他们两个电阻值分别“一增一减”,实现变化互补达到差动,可以消除线性误差,改善测量结果的质量。半桥差动电桥比单臂电桥测量结果的质量更好。若将电桥四臂都接入电阻应变片,则可以构成全桥差动电桥。这两种都可以提高电桥的灵敏度。但本次设计只采用半桥差动电桥。

图2 半桥差动电路

■2.2 仪用仪表放大电路

仪用仪表放大器电路如图3 所示。两个同相输入接法的运放A1、A2 组成第一级差分放大电路,运放A3 组成第二级差分放大电路。在第一级电路中v1、v2分别加到A1 和A2 的同相端,R1 和两个R2 组成的反馈网络,引入了负反馈,两理想运放A1、A2 的两输入端形成虚短:vp-vn= 0,因而有和,故得:

图3 仪用仪表放大器电路图

于是我们可以计算出电路的电压增益为:

因为在前级电桥电路所产生的变化非常微小,所以本文采用了TL082 构成了仪用仪表放大电路来将其放大。以便于后面的观察,此外增加了一个电压表在输出端,可以方便观察后面AD 采样后的输出是否正确。电路的连接如图3所示。

■2.3 ADC0832 模数转换电路

ADC0832是美国国家半导体公司生产的一种8 位分辨率、双通道A/D 转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,已经有很高的普及率[2]。

芯片各个接口说明:

①:CS_片选使能,低电平芯片使能。

②:CH0 模拟输入通道0,或作为IN+/-使用。

③:CH1模拟输入通道1,或作为IN+/-使用。

④:GND芯片参考0电位(地)。

⑤:DI数据信号输入,选择通道控制。

⑥:DO数据信号输出,转换数据输出。

⑦:CLK芯片时钟输入。

⑧:VCC/REF电源输入及参考电压输入(复用)。

作者采用CH1 为模拟输入端,将前面电路放大后的模拟信号送入ADC0832 芯片,输出送入AT89C51 主控芯片中去。电路连接如图4 所示。

图 ADC0832 模块转换电路

正常情况下ADC0832 与单片机的接口应为4 条数据线,分别是CS、CLK、DO、DI,但由于DO 端与DI 端在通信时并未同时有效,并与单片机的接口是双向的,所以电路设计时可以将DO 和DI 并联在一根数据线上使用。当ADC0832 未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D 转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI 端则使用DI 端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI 端必须是高电平,表示起始信号。在第2、3 个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项见表1。

表1

如表1 所示,当此2 位数据为“1”“0”时,只对CH0 进行单通道转换。当2 位数据为“1”、“1”时,只对CH1 进行单通道转换。当2 位数据为“0”“0”时,将CH0 作为正输入端IN+,CH1 作为负输入端IN-进行输入。当2 位数据为“0”“1”时,将CH0 作为负输入端IN-,CH1 作为正输入端IN+进行输入。

到第3 个脉冲的下沉之后DI 端的输入电平就失去输入作用,此后DO/DI 端则开始利用数据输出DO 进行转换数据的读取。从第4 个脉冲下沉开始由DO 端输出转换数据最高位DATA7,随后每一个脉冲下沉DO 端输出下一位数据。直到第11 个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11 个字节的下沉输出DATD0。随后输出8 位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D 转换的结束。最后将CS 置高电平禁用芯片,直接将转换后的数据进行处理就可以了。更详细的时序说明可见图5。

■2.4 LCD1602 显示部分

LCD1602 是字符型液晶显示器,它的主控芯片是HD44780 或者其他兼容芯片。能够同时显示16x2 即32 个字符。LCD1602 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。

芯片各个接口说明:

①:GND 为电源地。②:VCC 接5V 电源正极。

③:LCD 驱动电源,也叫偏压信号。

④:RS 为寄存器选择,高电平1 时选择数据寄存器、低电平0 时选择指令寄存器。

⑤:RW 为读写信号线,高电平1 时进行读操作,低电平0 时进行写操作。

⑥:EN 端为使能(ENABLE)端,高电平1 时读取信息,负跳变时执行指令。

⑦~⑭:D0~D7 为8 位双向数据端。

DDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码,共80 个字节,其地址和屏幕的对应关系如图6 所示。

图6 地址和屏幕对应关系图

DDRAM 相当于计算机的显存,为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。同样LCD1602 共有80 个字节的显存,即DDRAM。但LCD1602 的显示屏幕只有16×2 大小,因此,并不是所有写入DDRAM 的字符代码都能在屏幕上显示出来,只有写在范围内的字符才可以显示出来,写在范围外的字符不能显示出来。这样,在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。前面说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。例如,如果想在屏幕左上角显示字符“A”,那么就把字符“A”的字符代码41H 写入DDRAM 的00H地址处即可。LCD1602 和AT89C51 连接如图7 所示。

图7 系统整体电路图

■2.5 矩阵键盘部分

作者采用了MM74C922 键盘解码器,这个解码器能够自己独立地进行键盘检测、消抖,可以直接将键盘键值以四位BCD 码输出,节省MCU 的IO 口。而且能自动消除按键抖动,非常方便我们使用矩阵键盘。它还能给出按键是否按下的标志,其数据线还具有三态输出的功能,便于进行总线连接。具体电路可见图7。

■2.6 主控部分

主控部分采用了AT89C51 芯片,AT89C51 是一种带4K字节FLASH 存储器,256 字节片内数据存储器(00H~7FH为片内RAM,80H~FFH 为特殊功能寄存器SFR),32 个I/O口线,两个16 位定时/计数器,5 个中断源,一个全双工串行通信口,片内振荡器及时钟电路的单片机。

P1.0~P1.2 口分别接ADC0832 的片选使能端CS、时钟信号端CLK、数据输出端DI/DO;P1.6 接MM74C922的输入提示端DA;P1.7 接蜂鸣器;P0 端口接上拉电阻作LCD0832 的D0~D7的数据输入端;P2.4~P2.7 依次接MM74C922 的四位数据传输端口A、B、C、D;P3.4~P3.7依次接LCD0832 的EN、RS、RW 端。

具体连接图见图7 所示。

■2.7 整体电路仿真图

整个电路模型由以上几个部分共同组成,将它们连接好后如图7 所示。

3 软件调试及实验效果

■3.1 Proteus 仿真调试

在Proteus中选择需要的元器件,按照原理画出电路图,将各个元件放置在合适的位置,利用总线可以简化电路图,调整位置后可以得到如图7 所示仿真电路图。

■3.2 Keil 程序编写

利用Keil 编写程序,分别编写LCD1602.h、ADC1602.h、MM74C922.h、delay.h 等程序,最后在main.c 中调用函数即可。编写完成函数后,通过编译后,将会生成一个.hex文件,在Proteus 中双击AT89C51 就可以选择生成的.hex文件下载进单片机内,可以实现联合调试。下面为Keil 中编写的部分主函数程序代码。

■3.3 实验效果

在Proteus 中,通过改变滑动变阻器的接入阻值大小,可以模拟不同重量的物品。当没有放置物品,即滑片在正中间的时候,电桥电路此时处于平衡状态,输出电压为0;故显示为0。此时LCD1602 显示如图8 所示。

图8 LCD1602显示图(未放置物品)

当改变左边滑动变阻器滑片位置时,例如改变至65%,相应的右边滑动变阻器应该调至45%,将会显示WT:1.50KG;再输入单价为06(注意输入应从低位输入,此时先按6 再按0),通过程序计算后,总价将会在TOTAL:后方显示。此时LCD1602 显示如图9 所示。

图9 LCD1602 显示图(放置物品)

称量结束后,可以通过清零按钮将输入数据清零,做好了下一次称量的准备。按下清零后回到初始状态。

■3.4 指标情况

3.4.1 灵敏度

测量电桥的输入输出特性(含放大电路),调节输入端滑动变阻器每次变化5%即10Ω,得到多组数据。导入Matlab 后画出的图像如图10 所示。

图10 特性曲线

3.4.2 线性度

通过拟合直线的值,如表2 所示,再根据测得值Y,可以计算出来它的最大偏差为:ΔLMAX=0.178。由此还可以知道满量程YFS= 5,所以可以计算出线性度γL为:

表2

表3

表4

3.4.3 回程误差

通过正反行程测量,得到反行程数据,输入Matlab 中可得正反行程最大误差为:ΔHMAX=0.0700。

所以可以计算出回程误差Hγ为:

■3.5 结语

在电桥电路设计过程中,总是无法得到需要放大倍数的电压值,只修改一个参数无法满足,可以通过修改两个值共同作用从而得到需要的放大倍数;在LCD1602 显示部分,在值的显示部分无法让其完全显示出来时,需要合理安排显示字符的位置,让其完全显示;在总价计算的过程中,10以内单价计算没有问题,超过10 后,就会出现计算错误,输入12 计算,结果却是21 的计算结果,此时是因为输入的值存放的数组中,顺序搞错,才会出现这样的情况,更正后即可正常计算结果并显示出来;整个设计达到了电子秤的基本要求,之后还可以根据需要加上一些其他功能,例如去皮功能,存储功能等,以方便使用。

猜你喜欢
电桥高电平差动
一种基于FPGA的PWM防错输出控制电路
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
电桥法测量电阻的实验研究
变压器差动保护误动原因探讨
DM 50KW中波广播发射机欠推动故障分析
变压器差动保护负相序对差动保护的影响
PDM 1kW中波广播发射机保护电路分析
基于电流突变量的采样值差动保护研究
双源电桥测高阻关键环节和技术的探讨
多采样率转换算法对差动保护的应用研究