《简易数字电子秤设计.pdf》由会员分享,可在线阅读,更多相关《简易数字电子秤设计.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.数字电子秤数字电子秤摘要本课程设计制作的电子称以 89c52 单片机为控制器,利用电阻应变式称重传感器的全桥式称重原理,及通过受力改变内部应变片的阻值使,电路的输出电压与传感器所受压力成线性关系,建立相应的数学模型。设计思路为将传感器所测得的电压值进行模数转换,并将此转换数值与具体重量相对应,再将最终数值通过 1602 液晶屏显示。由于此称重传感器在受压时形变量小,使输出电压信号十分微弱,于是本设计采用运放连接成差分放大电路将其微弱的信号进行放大处理,再通过 AD0809 将此模拟量转化为数字量,输送给单片机,由单片机来控制
2、其重量的显示。关键词关键词:89c52,全桥式称重传感器,AD0809。The Digital Electronic ScaleAbstractAbstract:The design of digital electronic scale uses the chip 89c52 as itsmonitor,and sets up the mathematical model that bases the principles of FullBridge system weighing sensor,whose characteristic is the output voltage chang
3、eis linearity with the pressure on the foil gage.The design thought is makingthe analog output of voltage into digital quantity,then make it match with theweight specific,finally display the data through the 1602LCD.As the changeof the resistance value on foil gage is very small so as the original o
4、utputvoltage,so uses the operational amplifier to amplify the signal and then inputto the AD0809 chip to transform it into digital quantity,which finally inputtedinto89c52microcontroller,andthe89c52microcontrollerstaskismanipulating the date and making the LCD display the number.Key wordsKey words:8
5、9c52 microprocessor,semi-bridge system weighing sensor,AD0809 chip.目录1系统设计.31.1设计要求.31.2总体设计方案.31.2.1 设计思路.31.2.2 方案论证与比较.31.2.3 模块组成.51 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.2硬件电路设计.62.1模拟信号处理部分.62.1.1信号采集部分.62.1.2信号的放大处理.72.2 模数转换.102.3 数字信号的处理部分.112.3.1单片机控制 LCD 显示.123软件设计.1
6、44系统测试.154.1 测试使用的仪器及工具.154.2 指标测试及测试结果.154.3 结果分析.155结论.16参考文献.17附录 1元器件清单:.18附录二 电路原理图及印制板图.191信号放大部分电路原理图及 PCB 图.192信号处理部分电路原理图及 PCB 图.21附录三 程序清单.231系统设计1.1设计要求设计制作一个电子称的电路,称重范围分为三档,0-1.999kg、0-19.99kg、0-199.9kg。用三位半数字表头显示称重结果。具有量程自动转换功能。1.2总体设计方案1.2.1 设计思路应变式称重传感器是将电阻的变化转化为电压变化,但电阻因受力变化很小,使传感器输出
7、的信号较小,需要先进行放大处理,并且输出的信号是电压量,为模拟信号,而单片机能处理的信号是数字信号,因此需先将信号进行模数转换再输入单片机中进行1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.处理并控制 1602LCD 显示其重量。1.2.2 方案论证与比较(一)控制部分的方案论证与选择方案一:采用89C52作为控制核心。51单片机具有主频12M,三十二个I/O引脚,8Kflash程序存储空间,256 byte RAM,三个定时、计数器,五个中断源,且价格低廉,C语言程序编写容易,控制方便。方案二:采用FPGA(现场可
8、编程门阵列)作为系统的控制器。FPGA可以实现各种复杂的逻辑功能,规模大,密度高。由于其集成度高,使其成本偏高,同时其芯片引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。方案三:采用ARM7芯片LPC2148,具有512K flash程序存储空间、主频达48M、三个定时器、四个外部中断、内部RTC、采用三级流水线模式运行程序,拥有 I2C、SPI、UART等通信接口。同时其芯片引脚也较多,不便控制。且价格较贵。方案选择:本系统可以采取89C52、FPGA、ARM三种控制器。ARM比89C51单片机具有更强大的控制功能、更快的运行速度,可更快捷地进行高精度的测量,但本设计运行速
9、度要求不高,89C52就能满足所需要的功能。因此综合考虑选择89C52作为控制部件。(二)模数转换及显示部分的方案论证与选择方案一:将放大后的信号输入A/D转换芯片TCL2573进行A/D转换,由于此芯片可直接用于数字显示,故转换后的数字量直接用数码显示器进行显示。此方案的优点是外部电路非常简单,能实现较高的精度。缺点是无法对A/D转换进行控制。其方案图如图1.1。基于 TCL2573的 AD 转换数码管显示图1.1 方案一方框图方案二:将放大后的信号输入到AD0809进行模数转换,再将得到的数字信号送至单片机进行处理并送入液晶显示。此方案的优点是可控制性好,可通过软件的编程实现换1 文档来源
10、为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.挡,电路简单,液晶的硬件电路也比数码管的简单,且技术领先于数码管,可显示的内容也比数码管多。采用单片机对数据稍加处理,能通过软件在一定程度上弥补与调试硬件所无法避免的数据抖动,使最终所测得的数据更可靠、参考性更强,而且价格也不贵。其方案图如图1.2。基于 AD0809 的模数转换换挡控制单片机液晶屏显示图1.2 方案二方框图1.2.3 模块组成本设计模块主要分为三个部分,信号采集放大部分与模数转换和信号的处理显示部分。其中信号采集部分主要是运算放大器对信号的放大,数据处理及显示部分主
11、要是用AD 进行对模拟数据的转换及用液晶对数据的显示。其模块方框图如图 1.3称重传感器单片机控制信号采集放大图 1.3 模块框图模数转换液晶屏显示2硬件电路设计2.1模拟信号处理部分2.1.1信号采集部分电阻应变式传感器是把电阻应变计粘贴在弹性敏感元件上,然后以适当的方式组1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.成电桥的一种将力(重量)转换成电信号的传感器。电阻应变式称重传感器包括两个主要部分,一个是弹性敏感元件:利用它将被测的重量转化为弹性体的应变值;另一个是电阻应变计:它作为传感元件将弹性体的应变同步的转
12、换为电阻的变化。电阻应变片的电阻变化率大约在 10e-6 到 10e-2 数量级之间。这样小的电阻变化用一般测量电阻的仪表很难测出,必须用一定形式的测量电路将微小的电阻变化率转变成电压或电流的变化,才能用二次仪表显示出来,在电阻应变式称重传感器中,通过桥式电路将电阻的变化转换为电压的变化,电阻应变式称重传感器的原理框图如图 2.1载荷 P应变 x电阻变化输出应变片图 2.1 电阻应变式称重传感器的原理框图敏感元件测量电桥因为单个称重传感器的量程是 50KG,如果要达到设计要求,就要用四个称重传感器构成全桥测量,其连接后的电路等效图见图 2.2图 2.2称重传感器全桥式连接上图中,B 传感器红色
13、引线接电源正,D 传感器红色引线接电源负,为此传感器提供工作电源。A 传感器红色引线输出正信号,B 传感器红色引线输出负信号。作为原始输出信号。2.1.2信号的放大处理鉴于用示波器测得称重传感器输出电压信号非常小,为毫伏级,不便于处理,需加外部放大电路来获得足够的增益,综合考虑一些常用运放电路的特点,差动放大电路具有输入阻抗为无穷大,对小信号的放大影响小,因此,选择差动放大器进行前级放大,然后,再用两级放大提高放大倍数,以便进行量程切换。差动放大电路的连接电路图如图 2.3图 2.3前级差动放大根据理想运算放大虚短、虚断的特点,可推出此差动放大电路的放大倍数为:A=-R6/R4*(1+2R1/
14、R3)图 2.4后级放大前一部分的放大倍数 A1=10,后一部分的放大倍数也为 10。OUT1 是作为 20kg200kg 量程的模拟信号输出,OUT2 作为 2kg20kg 量程的模拟信号输出,OUT3 作为 0kg2kg 量程的模拟信号输出。仿真图如 2.5。图 2.5 信号放大仿真图 2.2 模数转换模拟量要输入到单片机中进行处理,首先要进过模拟量到数字量的转换,单片机才1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.能接收,处理。在此,采用 AD0809。ADC0809 是 8 位逐次逼近型 A/D 转换器。它
15、由一个 8 路模拟开关、一个地址锁存译码器、一个 A/D 转换器和一个三态输出锁存器组成。多路开关可选通8 个模拟通道,允许 8 路模拟量分时输入,共用 A/D 转换器进行转换。三态输出锁器用于锁存 A/D 转换完的数字量,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809 要求输入模拟量的信号为单极性的,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。其引脚图2.6图 2.6 AD0809 引脚图其中 IN0IN7 为 8 条模拟量输入通道ALE 为地址锁存允许输入线,高电平有效。
16、当ALE 线为高电平时,地址锁存译码器将 A,B,C 三条地址线的地址信号进行锁存,将译码后被选中的通道的模拟量输入转换器进行转换。A,B 和 C 为地址输入线,用于选通IN0IN7 上的一路模拟量输入。通道选择表如下表所示:C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7ST 为转换启动信号。当 ST 为上升沿时,所有内部寄存器清零;下跳沿时,开始进行 A/D 转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当 EOC 为高电平时,表明转换结束;否则,表明正在进
17、行A/D 转换。OE 为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0 为数字量输出线。CLK 为时钟输入信号线。因 ADC0809 的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(),VREF()为参考电压输入。鉴于 AD0809 的特点及工作原理,其所需的时钟信号可通过将从单片机的31 脚输出的 2MHz 的信号经 74ls290 进行 4 分频来获取。由于 ADC0809 内部带有输出锁1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理
18、排版.word 版本可编辑.欢迎下载支持.存器,可以与 AT89S51 单片机直接相连。此外,由于传感器部分只有三路信号的输出,因此只需将三路模拟信号进行转换,只需两根地址输入线来控制所需数量的通道的开启,在此选用 A、B 地址线分别与单片机引脚P10 和 P11 相连,而 C 地址线始终接地电平,此时由通道选择表可知,只有IN0IN4 会循环开启。编程实现模数转换功能时应注意:初始化时使ST 和 OE 信号全为低电平,将要转换的通道的地址送到 A,B,C 端口上,在 ST 端给出一个至少有 100ns 宽的正脉冲信号。根据EOC 信号来判断是否转换完毕,当EOC 变为高电平时,这时给 OE
19、为高电平,转换的数据就输出给单片机了。其实际电路的连接,及程序的编写请见后文附录。2.3 数字信号的处理部分将 AD0809 的 DOD7 引脚与单片机的片 P3 口相连,将由 AD0809 转换后的信号输入到单片机中,单片机接收到信号后,在内部程序的控制下,实现相应的功能。单片机与AD0809 引脚之间的连接如 2.7 所示:图 2.7单片机与 AD 芯片引脚连接图由于 ST 引脚与 ALE 引脚的控制信号在此是同步的,因而可以将其连接在一起,由一路信号控制。2.3.1单片机控制 LCD 显示1602 可显示 16*2 的内容,即可以显示两行,每行 16 个字符。其指令代码的操作如下:基本操
20、作时序:1 读状态:输入:RS=L,RW=H,E=H输出:D0D7=状态字2 写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲输出:无3 读数据:输入:RS=H,RW=H,E=H输出:D0D7=数据4 写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲输出:无初始化过程:1 延时 15ms2 写指令 38H(不检测忙信号)3 延时 5ms4 写指令 38H(不检测忙信号)5 延时 5ms6 写指令 38H(不检测忙信号)1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.7(以后每次写指令、读/写数
21、据操作之前均需检测忙信号)8 写指令 38H;显示模式设置9 写指令 08H;显示关闭10 写指令 01H;显示清屏11 写指令 06H;显示光标移动设置12 写指令 0CH;显示开及光标设置3软件设计基于调试的方便性和可靠性,程序采用模块化、结构化的程序设计方法,把总的编程过程逐步细分,分解成一个个功能子模块,每个功能模块相互独立,每个模块都能实现某个具体的功能。本设计按任务模块划分的程序主要有 LCD 初始化程序,主程序,A/D转换子程序、显示子程序。程序流程图如下:开始初始化测量 AD0 通道数据是否大于 20kg采样 AD0 通道数据 50 次图 3.1 程序设计流程图取平均值显示4系
22、统测试否是采样 AD1 通道数据 50 次 4.1 测试使用的仪器及工具标准电子秤标准电子秤 4.2 指标测试及测试结果采用电子秤模块测物体体重,所得数据结果如表 4.1 所示。表 4.1 测试结果1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.实 际 重 量0.81(kg)测 量 重 量00.8(kg)测 量 误 差0.01(kg)4.3 结果分析基本达到所要求的指标,但测量的精度不是很高,测量值与实际值有一定的误差。误差分析:1.受传感器本身的影响,因此是利用应变片受力发生形变而将电阻的变化转化为电压输出,其形变量
23、与所受力不可能完全成线性关系,且其弹性形恢复慢,受压后可能无法恢复到原来状态,这就可能引入很大的误差,所以使用一段时间后必须调零。2受 AD 转换芯片的影响,8 位的 AD0809 的分辨率有限,对于小的电压变化无法分辨出来,导致最终结果有一定的偏差。0.0800.201.0103.208.00330573.128.0033.2056.015结论本设计实现了用电阻应变式称重传感器测量物体重量的功能,能将所测物体的重量通过液晶屏明了的显示,并可实现自动转换量程的功能,比较理想的实现了设计指标的要求,除此之外,该模块还可以实现手动调零的功能。心得体会:通过设计该课程设计学到了很多东西,除了对软件、
24、硬件的设计还包括对电子称的安装设计。因为量程达到 200kg,所以电子称本身要结实,反反复复找了几次材料,最终总算是做出个简易电子称。考虑到传感器本身的性能,在自动切换量程方面,大量程(0-200.0kg)的设计难度不算太大,小量程(0-2.000kg)最为困难,因为传感器本身就不是很灵敏,在受到很大压力时形变也很小,对于小的压力感应不出来。再说如果真把 AD 采样精确到 0.001kg,则相应的 AD 芯片的转换的频率就要达到 19 位,尚且不说有无 19 位的 AD,即使有也因直流放大后的信号也没那么稳定,才用高转换频率的 AD 也无多大的意义,所以采用了八位 AD,且只利用其 3 路放大
25、信号输出,这也是本设计精髓的地方。参考文献(1)黄智伟全国大学生电子设计竞赛制作实训北京:北京航空航天大学出版1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.社,2007(2)黄智伟全国大学生电子设计竞赛系统设计北京:北京航空航天大学出版社,2006(3)黄智伟全国大学生电子设计竞赛电路设计北京:北京航空航天大学出版社,2006(4)黄智伟等.基于 multisim2001 的电子电路计算机仿真设计与分析.北京:电子工业出版社,2004(5)黄智伟.印制电路板(PCB)设计技术与实践.北京:电子工业出版社,2009(6
26、)康华光.电子技术基础.数字部分(第五版).北京:高等教育出版社,2006(7)康华光.电子技术基础.模拟部分(第五版).北京:高等教育出版社,2006(8)黄智伟单片无线收发集成电路原理与应用北京:人民邮电出版社,2005(9)杨宝清.实用电路手册.北京:机械工业出版社.2002(10)集成电路查询网:(11)电子电路查询网:附录 1元器件清单:附录二 电路原理图及印制板图1信号放大部分电路原理图及 PCB 图原理图图 1.1 信号放大部分原理图PCB 图图 1.2 信号放大部分 底层 PCB 图图 1.3 信号放大部分 顶层 PCB 图2信号处理部分电路原理图及 PCB 图原理图图 1.4
27、 信号处理部分原理图PCB 图图 1.5 信号处理部分 底层 PCB 图图 1.6 信号处理部分 顶层 PCB 图1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.附录三 程序清单/电子秤.c#include 1602.hsbit st=P12;sbit eoc=P13;sbit oe=P14;uchar mydat50,dat0=0;uint dat1=0;void delayms(uint t)void ad(uchar addr)main()uchar i=0;P1=P1-P1%4+addr;oe=0;st=0;s
28、t=1;st=0;delayms(1);while(eoc=0);oe=1;dat0=P2;oe=0;uint i=0,j=0;for(i=0;i110;i+)for(j=0;j=23)elsefor(i=0;i50;i+)dat0=dat1/54;ad(1);mydati=dat0;dat1+=dat0;for(i=0;i50;i+)dat0=dat1/60;dat1=0;lcd_pos(0);/在液晶屏上显示位置lcd_wdat(0 x30+dat0/100);/在液晶屏上显示数据lcd_pos(1);lcd_wdat(0 x30+dat0/10%10);lcd_pos(2);lcd_wd
29、at(0 x30+dat0%10);lcd_pos(3);lcd_wdat(k);lcd_pos(4);lcd_wdat(g);ad(2);mydati=dat0;dat1+=dat0;1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持./1602/1602c c#include 1602.hsbit LCD_RS=P37;sbit LCD_RW=P36;sbit LCD_EN=P15;void delay1(int ms)unsigned char y;while(ms-)for(y=0;y250;y+)_nop_();
30、_nop_();_nop_();_nop_();dat1=0;lcd_pos(0);lcd_wdat(0 x30+dat0/100);lcd_pos(1);lcd_wdat(0 x30+dat0/10%10);lcd_pos(2);lcd_wdat(.);lcd_pos(3);lcd_wdat(0 x30+dat0%10);lcd_pos(4);lcd_wdat(k);lcd_pos(5);lcd_wdat(g);delayms(200);1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持./*/*/*检查 LCD 忙状态
31、*/*lcd_busy 为 1 时,忙,等待。lcd-busy 为 0 时,闲,可写指令与数据。*/*/*/bit lcd_busy()bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0 x80);LCD_EN=0;return(result);/*/*/*写指令数据到 LCD*/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。*/*/*/void lcd_wcmd(uchar cmd)while(lcd_busy();LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P
32、0=cmd;1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;/*/*/*写显示数据到 LCD*/*RS=H,RW=L,E=高脉冲,D0-D7=数据。*/*/*/void lcd_wdat(uchar dat)while(lcd_busy();LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;/*/*/*LCD 初始化设定*/*/*/void l
33、cd_init()delay1(15);lcd_wcmd(0 x38);/16*2 显示,5*7 点阵,8 位数据delay1(5);lcd_wcmd(0 x38);1 文档来源为:从网络收集整理.word 版本可编辑.文档收集于互联网,已重新整理排版.word 版本可编辑.欢迎下载支持.delay1(5);lcd_wcmd(0 x38);delay1(5);lcd_wcmd(0 x0c);/显示开,关光标delay1(5);lcd_wcmd(0 x06);/移动光标delay1(5);lcd_wcmd(0 x01);/清除 LCD 的显示内容delay1(5);/*/*/*设定显示位置*/*
34、/*/void lcd_pos(uchar pos)lcd_wcmd(pos|0 x80);/数据指针=80+地址变量/1602/1602H H#ifndef _1602_H#define _1602_H#include#include#define uchar unsigned char#define uintunsigned int#define delayNOP();_nop_();_nop_();_nop_();_nop_();void delay1(int ms);bit lcd_busy();void lcd_wcmd(uchar cmd);void lcd_wdat(uchar dat);void lcd_init();void lcd_pos(uchar pos);#endif1 文档来源为:从网络收集整理.word 版本可编辑.