基于单片机的5kg电子称的设计_第1页
基于单片机的5kg电子称的设计_第2页
基于单片机的5kg电子称的设计_第3页
基于单片机的5kg电子称的设计_第4页
基于单片机的5kg电子称的设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的5kg电子称的设计一、意义:随着科技的发展,电子称在生活中的应用很是广泛,几乎在称重时都会用到,小到超市,菜场的称重,大到工程中的称重。电子秤的主要特点是体积小,电路比较简单,应用广泛,有很多量程和精度可以选择,满足了很多场合的要求,电子秤的应用对普通的杠杆原理的称重有着很大的优点,精度比杠杆称重精度高的多,应用不受太大的限制,所以应用非常广泛。研究和制作各种不同精度和量程的电子秤对人们的生活有着重要的意义。背景:中国是发展中国家,在国际上,电子秤行业与发达国家相比有很大的差距,如美国,德国,西欧,电子称重已经达到了很高的水平。特别是在准确度和可靠性等方面有了很大的提高。特别是近3

2、0年来,工艺流程中的现场称重、配料定量称重、以及产品质量的监测等工作,都离不开电子衡器。这是由于电子衡器不仅得出质量或重量信号,而且也能作为总系统中的一个单元承担着控制和检验功能。随着称重传感器各项性能的不断突破,为电子秤的发展奠定了基础,早在20世纪60年代就出现了0.1%称量准确度的电子秤,并在70年代中期约对75%的机械秤进行了机电结合改造。如今电子秤已经发展到全电子化,智能化,网络的阶段。外国产智能化程度相当高,通过对原始信息的数字处理,更好的排除了外部干扰对信息影响,提高了产品的耐环境性和测量真实性而且电子秤产品的网络化在国外已经进入实用阶段。如今,国外电子秤品种和结构又有创新,技术

3、功能和应用范围不断扩大。二、方案选取:1,用霍尔元件实现 2,用金属应变片实现在选取方案的时候,觉得霍尔元件原理比较复杂,在设计上有一些难度而且霍尔元件在工作时容易被磁场和电场干扰,所以选择方案2来设计电子秤。基本设计思路:当物体放在秤盘上时,物体产生的压力施给传感器,该传感器发生形变,使阻抗发生变化,同时使用激励电压发生变化,传感器输出一个变化的模拟信号。该信号经过放大电路放大输出到电压-频率转换电路转换成便于处理的数字信号输出到微处理器,单片机根据键盘命令将这种结果输出到LED显示电路,显示出要显示的结果,如图1所示。系统方框图:51单片机压力传感器v/f转换信号放大压力传感器压力传感器图

4、1传感器输出的模拟信号被放大整形后由运算放大器组成的v/f转换电路完成电压-频率转换,再经过单片机对测量信号进行处理并根据相应的数据关系译码显示出被测物体的重量。单片机控制适合于功能比较简单的控制系统,算术运算功能强、技术成熟。因此,选用单片机STC89C52来实现系统设计。三、芯片简介:1、 HX711芯片Hx711采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源,片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰能力强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该

5、芯片与后端MCU芯片的接口与编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为20mv或40mv。通道B则为固定的64增益,用于系数参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了计算机的初始化过程。该芯片有两路可选择差分输入,片内低噪音可编程放大器,可选择增益为64和128。片内稳压电路可直接向外部传感器和芯片内A/D

6、转换器提供电源。片内时钟振荡器无需任何外接器件,必要时也可以使用外接晶振或时钟,它能上电自动复位,能够实现简单的数字控制和串口通讯:所有控制由管教输入,芯片内寄存器无需编程,可选择10hz或80hz的输出数据速率,能同步抑制50hz和60hz的电源干扰。封装如图2图2VSUP:电源:稳压电路供电电源;2.65.5v(不用稳压电源时应接AVDD)BASE:模拟输出:稳压电路控制输出(不用稳压电路时无连接)AVDD:电源:模拟电源:2.65.5vVFB:模拟输入:稳压电路控制输入(不用稳压电路时应接地)AGND:地:模拟地VBG:模拟输出:参考电源输出INA-:模拟输入:通道A负端输入INA+:模

7、拟输入:通道A正端输入INB-:模拟输入:通道B负端输入INB+:模拟输入:通道B负端输入PD_SCK:数字输入:断电控制(高电平有效)和串口时钟输入DOUT:数字输出:串口数据输出XO:数字输入输出:晶振输入XI:数字输入:外部时钟或晶振输入(0:使用片内振荡器)RATE:数字输入:输出数据速率控制(0:10hz;1:80hz)DVDD:电源:数字电源:2.65.5vHx711在电子秤方面应用典型方案图,如下图3图32、 STC89C52STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内

8、核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口

9、、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。管脚情况如图4:图4这里就不一一对管脚进行介绍了。各部分硬件电路设计: 1、LCD1602显示电路(如图5)图52管脚接VCC,4到14管脚分别接在单片机对应的管脚。3、 hx711接口电路(如图6)图6这里只用到4个端口,VCC接稳压电路供电电源,单片机P32接HX711数字输入端口,P33接HX711的数字输出端口,实现A/D转换。4、 蜂鸣器电路(如图7)图7从单片机P24引出来接一个电阻R3,接到三极管上,三极管的发射极在于电铃相连

10、。5、 复位电路(如图8)Reset端接单片机的9管脚,实现复位功能。6、 按键电路(如图9)图9通过单片机的P14,P15,P16,P17端口实现对按键的控制。7、 主体电路(如图10)图10该电路为主体部分电路为单片机模块。8、 晶振电路(如图11)图11软件设计部分:主程序流程图开机系统初始化调用显示程序测重物V/F转换数据处理调用按键处理程序整体程序:#include "main.h"#include "LCD1602.h"#include "HX711.h"#include "EEPROM.H"/定义变量

11、unsigned char KEY_NUM = 0; /用来存放按键按下的键值unsigned long HX711_Buffer = 0; /用来存放HX711读取出来的数据unsigned long Weight_Maopi = 0; /用来存放毛皮数据long Weight_Shiwu = 0; /用来存放实物重量long Max_Value = 0; /用来存放设置最大值char maxValueTable4 = 1,0,0,0;unsigned char state = 0; /用来存放设置状态unsigned char Blink_Speed = 0;#define Blink_S

12、peed_Max 6 /该值可以改变设置指针闪烁频率/校准参数/因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数才能使测量值很准确。/当发现测试出来的重量偏大时,增加该数值。/如果测试出来的重量偏小时,减小改数值。/该值可以为小数#define GapValue 365/传感器最大测量值,单位是g#define AlarmValue 5000/*/主函数/*void main()Init_LCD1602();/初始化LCD1602LCD1602_write_com(0x80);/设置LCD1602指针LCD1602_write_word("Welcome t

13、o use!");Get_Maopi();Get_Maopi();Delay_ms(2000); /延时2sGet_Maopi();Get_Maopi();/称毛皮重量/多次测量有利于HX711稳定 LCD1602_write_com(0x01); /清屏 /读取EEPROM中保存的报警值 maxValueTable0 = byte_read(0x2000); maxValueTable1 = byte_read(0x2001); maxValueTable2 = byte_read(0x2002); maxValueTable3 = byte_read(0x2003); Max_V

14、alue = maxValueTable0*1000+maxValueTable1*100+maxValueTable2*10+maxValueTable3; /计算超限报警界限值while(1) Get_Weight();/显示当前重量LCD1602_write_com(0x80); LCD1602_write_word("Weight=");LCD1602_write_data(Weight_Shiwu%10000/1000 + 0x30);LCD1602_write_data('.');LCD1602_write_data(Weight_Shiwu%1

15、000/100 + 0x30); LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);LCD1602_write_data(Weight_Shiwu%10 + 0x30);LCD1602_write_word("Kg");KEY_NUM = Scan_Key(); if(KEY_NUM = 1) /按键1切换设置状态 state+; if(state = 5) state = 0; SectorErase(0x2000); byte_write(0x2000,maxValueTable0);/保存EEPROM数据 byte_writ

16、e(0x2001,maxValueTable1); byte_write(0x2002,maxValueTable2);/保存EEPROM数据 byte_write(0x2003,maxValueTable3); Max_Value = maxValueTable0*1000+maxValueTable1*100+maxValueTable2*10+maxValueTable3; /计算超限报警界限值 if(KEY_NUM = 2) /按键加 if(state != 0) maxValueTablestate-1+; if(maxValueTablestate-1 >= 10) maxV

17、alueTablestate-1 = 0; if(KEY_NUM = 3) /按键减 if(state != 0) maxValueTablestate-1-; if(maxValueTablestate-1 <= -1) maxValueTablestate-1 = 9; if(KEY_NUM = 4)Get_Maopi();/去皮 if(state != 0) Blink_Speed +; if(Blink_Speed = Blink_Speed_Max) Blink_Speed = 0; switch(state) case 0: LCD1602_write_com(0x80+0x

18、40); LCD1602_write_word("MAX="); LCD1602_write_data(maxValueTable0+0x30); LCD1602_write_data('.'); LCD1602_write_data(maxValueTable1+0x30); LCD1602_write_data(maxValueTable2+0x30); LCD1602_write_data(maxValueTable3+0x30); LCD1602_write_word("Kg"); break; case 1: LCD1602_w

19、rite_com(0x80+0x40); LCD1602_write_word("MAX="); if(Blink_Speed < Blink_Speed_Max/2) LCD1602_write_data(maxValueTable0+0x30); else LCD1602_write_data(' '); LCD1602_write_data('.'); LCD1602_write_data(maxValueTable1+0x30); LCD1602_write_data(maxValueTable2+0x30); LCD1602_

20、write_data(maxValueTable3+0x30); LCD1602_write_word("Kg"); break; case 2: LCD1602_write_com(0x80+0x40); LCD1602_write_word("MAX="); LCD1602_write_data(maxValueTable0+0x30); LCD1602_write_data('.'); if(Blink_Speed < Blink_Speed_Max/2) LCD1602_write_data(maxValueTable1+0

21、x30); else LCD1602_write_data(' '); LCD1602_write_data(maxValueTable2+0x30); LCD1602_write_data(maxValueTable3+0x30); LCD1602_write_word("Kg"); break; case 3: LCD1602_write_com(0x80+0x40); LCD1602_write_word("MAX="); LCD1602_write_data(maxValueTable0+0x30); LCD1602_write_

22、data('.'); LCD1602_write_data(maxValueTable1+0x30); if(Blink_Speed < Blink_Speed_Max/2) LCD1602_write_data(maxValueTable2+0x30); else LCD1602_write_data(' '); LCD1602_write_data(maxValueTable3+0x30); LCD1602_write_word("Kg"); break; case 4: LCD1602_write_com(0x80+0x40);

23、LCD1602_write_word("MAX="); LCD1602_write_data(maxValueTable0+0x30); LCD1602_write_data('.'); LCD1602_write_data(maxValueTable1+0x30); LCD1602_write_data(maxValueTable2+0x30); if(Blink_Speed < Blink_Speed_Max/2) LCD1602_write_data(maxValueTable3+0x30); else LCD1602_write_data(&#

24、39; '); LCD1602_write_word("Kg"); break; default: break; /超限报警 if(Weight_Shiwu >= Max_Value | Weight_Shiwu >= AlarmValue) /超过设置最大值或者传感器本身量程最大值报警Buzzer = 0;elseBuzzer = 1;/*/称重/*void Get_Weight()Weight_Shiwu = HX711_Read();Weight_Shiwu = Weight_Shiwu - Weight_Maopi;/获取净重if(Weight_

25、Shiwu >= 0)Weight_Shiwu = (unsigned long)(float)Weight_Shiwu/GapValue); /计算实物的实际重量elseWeight_Shiwu = 0;/*/获取毛皮重量/*void Get_Maopi()Weight_Maopi = HX711_Read(); /*/MS延时函数(12M晶振下测试)/*void Delay_ms(unsigned int n)unsigned int i,j;for(i=0;i<n;i+)for(j=0;j<123;j+);/*/蜂鸣器程序/*void Buzzer_Di()Buzzer

26、 = 0;Delay_ms(10);Buzzer = 1;Delay_ms(10);/*/按键扫描程序/*unsigned char Scan_Key() if( KEY1 = 0 )/按键扫描Delay_ms(10);/延时去抖if( KEY1 = 0 )Buzzer_Di();while(KEY1 = 0);/等待松手return 1; if( KEY2 = 0 )/按键扫描Delay_ms(10);/延时去抖if( KEY2 = 0 )Buzzer_Di();while(KEY2 = 0);/等待松手return 2; if( KEY3 = 0 )/按键扫描Delay_ms(10);/延

27、时去抖if( KEY3 = 0 )Buzzer_Di();while(KEY3 = 0);/等待松手return 3;if( KEY4 = 0 )/按键扫描Delay_ms(10);/延时去抖if( KEY4 = 0 )Buzzer_Di();while(KEY4 = 0);/等待松手return 4; return 0;四、问题及结果分析经过本次传感器的大作业,我们做的是双平行梁的电子秤,我们的实验电路分为三个模块,分别是采集模块,控制模块,显示处理模块,在传感器的设计中最困难的地方无非在于如何将重力转化为电信号,然后在LCD1602上显示出来,因为在桥式电路中电压的压差很小而且还是模拟信号,所以我们采用了集成24位AD转化芯片,将电信号先放大128倍然后在进行AD转换,通过P32口给出高电平启动信号,然后通过I2C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论