Proteus实现电子秤仿真与称重检测显示
时间:2022-10-03 23:00:00
Proteus实现电子秤模拟和称重检测显示
- 测量原理(或设计方案)
- 原理图
- 代码
测量原理(或设计方案)
数字电子秤总体框图如图所示:
- 金属箔应变片的工作原理
当电阻线在外力作用下发生机械变形时,其电阻值发生变化,即电阻应变效应的描述
电阻应变效应的关系
金属箔应变片是光刻、腐蚀等工艺制成的应变敏感元件。如图所示,四个金属箔应变片(R1、R2、R3、R4)分别贴在双杆悬臂梁弹性体的上下两侧,弹性体在压力下变形,应变片随悬臂梁变形而拉伸或压缩
- 测量电路
悬臂梁受力状态的变化可以通过应变片转换成串联或并联的电桥。
如图所示,在整个桥测量电路中,两个具有相同应力性能的应变片连接到桥的对面,不同的连接到相邻边缘。当应变片的初始电阻值相等,变化量相等时,桥输出
测量电路的功能是将电阻应变片的电阻变化转化为电压输出。由于惠斯登电桥具有抑制温度变化、侧向力干扰、解决称重传感器补偿问题等诸多优点,因此惠斯登电桥已广泛应用于称重传感器中。由于全桥等臂电桥灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,称重传感器采用全桥等臂电桥。
3.信号放大电路
电子秤的信号放大电路采用三运放差分放大电路,其典型结构如图所示。它主要由两级差分放大器电路组成。其中,运放 A1,A2 同相输入可以大大提高电路的输入阻抗,减少电路对微弱输入信号的衰减;差异输入可以放大电路只放大差异信号,只跟随共模输入信号,使差异信号与共模信号之比(即共模抑制比) CMRR)得到提高。这样在运放 A3 在由核心部件组成的差分放大电路中CMRR 对电阻的要求可以显著降低 R3 和 R4,Rf 和 R5 精度匹配要求,使三运差分放大电路比简单差分放大电路具有更好的共模抑制能力。在 R1=R2,R3=R4,Rf=R5 在条件下,图 2-4 电路增益为:G=(1 2R1/Rg)Rf/R3。根据公式,可以改变电路增益的调节 Rg 阻值实现。
图中,A1、A2、A3 可选择 OP07 集成操作放大器,A1,A2 同一输入端接全桥测量
路的输出端
4.A/D 转换电路
TLC2543 是美国 TI 公司生产多渠道、低价 11 通道 12 位串行 A/D 转换器具有输入通道多、性价比高、单片机接口方便等特点,可广泛应用于各种数据采集系统。TLC2543 与外围电路连接简单,三个控制输入端为 CS(片选),输入/输出时钟(I/O CLOCK)以及串行数据输入端(DATA INPUT)。片内的 14 可选择通道多路器 11 任何输入中的任何一个或 3 在内部自测电压中,采样-保持自动,转换结束,EOC 输出变高。
TLC2543 如图所示。引脚功能说明如下:
AIN0~AIN10:模拟输入端,由内部多路器选择。对 4.1MHz 的 I/O CLOCK,驱动源阻抗必须小于或等于 50Ω;CS:片选端,CS 复位内部计数器由高到低变化,并控制和使能 DATA OUT、DATA INPUT 和 I/O CLOCK。CS 禁止从低到高的变化在设高的变化
DATA INPUT 和 I/O CLOCK;(低电平有效,不需要时间 1.用时保持 0) DATA INPUT:串行数据输入端,串行数据 MSB 为前导并在 I/O CLOCK 的前 4 上升沿移动 4 用于选择下一个模拟输入信号或测试电压,之后 I/O CLOCK依次输入剩余部分;
DATA OUT:A/D 三态输出端的转换结果 CS 高时,引脚处于高阻状态;当 CS
当引脚较低时,引脚从前一次转换结果 MSB 相应的逻辑电平(10 位);
EOC:转换结束。 I/O CLOCK 下降后,EOC 从高电平到低电平
持有转换完成和数据准备传输;
VCC、GND:电源正端、地面;
REF+、REF-:正负基准电压端。 REF+接 VCC( 5V), REF-接 GND。最
大输入电压范围取决于两端电压差;
I/O CLOCK:时钟输入/输出端。
原理图
两个数字管一个用于显示对称重量,另一个用于显示对称重量A/D转换结果的显示可以添加到代码中,以方便我们调整放大电路中的电阻值控制放大倍数
代码
/* 电子秤 要求:测量范围0~1KG,测量精度0.001KG */ #include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit SDO=P1^0; sbit SDI=P1^1; sbit CS=P1^2; sbit CLK=P1^3; sbit wei1=P2^0; sbit wei2=P2^1
; sbit wei3 = P2 ^ 2 ; sbit wei4 = P2 ^ 3 ; sbit wei21 = P2 ^ 4 ; sbit wei22 = P2 ^ 5 ; sbit wei23 = P2 ^ 6 ; sbit wei24 = P2 ^ 7 ; uchar code table [ ] = { 0xC0 , 0xF9 , 0xA4 , 0xB0 , 0x99 , 0x92 , 0x82 , 0xF8 , 0x80 , 0x90 } ; //共阳极数码管0-9的段码 uint read2543 (uchar con_word ) ; void delay (uchar n ) ; void main ( ) { uint ad0 ,ad1 ; uchar ge ; uchar shi ; uchar bai ; uchar qian ; while ( 1 ) { ad0 = read2543 ( 0x00 ) ; //读入AD转换数据 //显示函数待补充; ad1 =ad0 ; qian = ad1 / 1000 ; //控制位数显示 bai = (ad1 % 1000 ) / 100 ; shi = (ad1 % 100 ) / 10 ; ge =ad1 % 10 ; P2 = 0x10 ; P3 =table [qian ] + 0x80 ; //小数点显示 delay ( 5 ) ; P2 = 0x20 ; P3 =table [bai ] ; delay ( 5 ) ; P2 = 0x40 ; P3 =table [shi ] ; delay ( 5 ) ; P2 = 0x80 ; P3 =table [ge ] ; delay ( 5 ) ; } } //向TLC2543写命令及读转换后的数据 uint read2543 (uchar con_word ) { uint ad = 0 ,i ; CLK = 0 ; //时钟首先置低 CS = 0 ; //片选为0, 芯片工作 for (i = 0 ;i < 12 ;i ++ ) { if ( SDO ) //首先读TLC2543的一位数据 ad =ad | 0x01 ; SDI = (bit ) (con_word & 0x80 ) ; //向TLC2543写一位数据 CLK = 1 ; //时钟上升沿,TLC2543输出使能 delay ( 3 ) ; CLK = 0 ; //时钟下降沿,TLC2543输入使能 delay ( 3 ) ; con_word <<= 1 ; ad <<= 1 ; } CS = 1 ; ad >>= 1 ; return (ad ) ; } //延时程序 void delay (uchar n ) { uchar i ,j ; for (i = 0 ;i <n ;i ++ ) for (j = 0 ;j < 125 ;j ++ ) ; }