本文基于单片机和AD574设计了一款简易电子秤。电子秤是根据重力作用测量物体质量的装置,本文在分析测量原理的基础上,选择了比较简单的51系列单片机作为主控制系统,根据测量要求设计了传感器电路、AD转换电路、超量程报警电路、显示电路、按键电路等,根据硬件电路,完成了相应的软件设计。经过测试,该简易电子秤应用简单,方便快捷,具有良好的应用前景。
电子秤是一种根据重力作用测量物体质量的检测装置,随着电子技术的发展,在国民经济的各个领域,电子秤的应用越来越广泛,对电子秤的要求也越来越高,本文根据当前电子秤的应用情况,分析采用单片机和AD574设计一款简易电子秤装置,在分析测量原理的基础上,选择了比较简单的51系列单片机作为主控制系统,根据测量要求设计了传感器电路、AD转换电路、超量程报警电路、显示电路、按键电路等,根据硬件电路,完成了相应的软件设计。
1.测量原理
电子秤一般由三部分组成,称重传感器、承重系统、传力复位系统。在这个基础上,分成了其他的硬件电路子单元,如单片机最小系统电路、传感器电路、AD转换电路、超量程报警电路、显示电路、按键电路、存储电路等。其测量原理是:将物体放置在承重系统的秤台上时,其重量参数会通过传感器,产生压力-电效应,转换为与其重量相对应的电信号,然后通过放大电路将电信号放大并经过AD处理,最后将信号输入给单片机处理,经单片机处理后,将输入信息显示在LCD上。测量的精度一般由称重传感器决定。
2.硬件电路设计
2.1 总体设计框图
根据其测量原理,设计整体硬件框图如图1所示。主要包含压力传感器电路模块、放大电路模块、AD转换模块、LCD显示器模块、阈值报警模块、单片机控制系统模块。
2.2 传感器电路设计
设计采用SP20C-G501电阻应变式传感器,称重传感器由组合式S型梁结构及金属箔式应变计构成,具有过载保护装置。过程设计中采用惠斯登电桥进行电压采集转换,它能抑制温度变化的影响,抑制干扰能力强,补偿方便简单,因此选用的传感器精度高、零漂小、工作稳定等。传感器原理图如图2所示:
其工作原理:用应变片测量时,将其粘贴在弹性体上。当弹性体受力变形时,应变片的敏感栅也随之变形,其阻值发生相应的变化,通过转换电路转换为电压或电流的变化。由于内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式(1)给出: [Eout=R2×R4(R2+R4)×△R1R1+△R2R2+△R3R3+△R4R4×Ein] (1)
2.3 AD转换电路设计
AD574是美国Analog Device公司生产的12位单片A/D转换器。它采用逐次逼近型的A/D转换器,最大转换时间为25us,转换精度为0.05%,所以适合于高精度的快速转换采样系统。芯片内部包含微处理器借口逻辑(有三态输出缓冲器),故可直接与各种类型的8位或者16位的微处理器连接,而无需附加逻辑接口电路,切能与CMOS及TTL电路兼容。AD574采用28脚双列直插标准封装。
2.4 LCD显示电路设计
显示电路采用LCD显示。其驱动方式包括静态驱动、动态驱动。本设计采用动态驱动的方式,电路原理图如图4所示。
2.5 报警电路设计
报警电路采用有源蜂鸣器设计,只要通电流即可发声进行报警,在其两端并联一个反向的二极管,防止误报警。
3.程序设计
根据硬件原理分析和设计,软件同样分为几个部分:传感器信号采集部分、AD转换部分、显示部分和报警部分,其中数据处理部分最为重要,处理过程同样比较复杂。必须利用单片机的中断系统结构,如图6所示。
其主要部分程序代码如下:
#include
sbit CSPIN = P2^7; //93c46:CS sbit SCKPIN = P2^6; //93c46:CLK sbit SDOPIN = P2^4; //93c46:DATA OUT sbit SDIPIN = P2^5; //93c46:DATA IN void EEPROMByteWrite(UINT8 addr,UINT8 value); //写值为value到地址addr中 void WriteRom(UINT8 addr,UINT8 value); //写值为value到地址addr中,但不包括写允许和写禁止 UINT8 EEPROMByteRead(UINT8 addr); //从93C46中读出地址为addr的值 UINT8 ReceiveByte(void); //接收8位数据 void Sendsck(UINT8 c,UINT8 c1); void EEPROMByteWrite(UINT8 addr,UINT8 value) {Sendsck(0x80,0x60);//write enable CSPIN=0; _nop_(); _nop_(); WriteRom(addr,value);Sendsck(0x80,0x00);//write disable CSPIN=0; _nop_(); _nop_(); SCKPIN=0; Delay1ms(10);} UINT8 EEPROMByteRead(UINT8 addr) {UINT8 value; Sendsck(0xc0,addr); Delay1ms(1); value=ReceiveByte(); SCKPIN=0; CSPIN=0; Delay1ms(20); return(value);} void Writelong(UINT8 addr,UINT32 d)//写入一个LONG类型 {EEPROMByteWrite(addr,d>>24); EEPROMByteWrite(addr+1,d>>16); EEPROMByteWrite(addr+2,d>>8); EEPROMByteWrite(addr+3,d&0xff);} UINT32 Readlong(UINT8 addr)//读一个LONG类型 {UINT8 d8; UINT32 d32=0; d8=EEPROMByteRead(addr); d32|=d8; d8=EEPROMByteRead(addr+1); d32<<=8; d32|=d8; d8=EEPROMByteRead(addr+2); d32<<=8; d32|=d8; d8=EEPROMByteRead(addr+3); d32<<=8; d32|=d8; return(d32);}
4.结论
本论文通过对电子秤的称重原理进行分析,在此基础上介绍了硬件设计和软件设计,最后完成了本简易电子秤装置的设计,采用高精度AD转换芯片AD574和实时处理的MCU-AT89C52单片机进行处理,精度高,操作简单,可推广性强。