基于单片机的5kg电子称的设计说明.doc

上传人:可****阿 文档编号:42740939 上传时间:2022-09-16 格式:DOC 页数:19 大小:337.50KB
返回 下载 相关 举报
基于单片机的5kg电子称的设计说明.doc_第1页
第1页 / 共19页
基于单片机的5kg电子称的设计说明.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《基于单片机的5kg电子称的设计说明.doc》由会员分享,可在线阅读,更多相关《基于单片机的5kg电子称的设计说明.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、30年来,工艺流程中的现场称重、配料定量称重、以与产品质量的监测等工作,都离不开电子衡器。这是由于电子衡器不仅得出质量或重量信号,而且也能作为总系统中的一个单元承担着控制和检验功能。随着称重传感器各项性能的不断突破,为电子秤的发展奠定了基础,早在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+:模拟输入:通道A正端输入

7、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、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容

9、被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率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,接到三极管上,三极管的发射极在于电铃相连。5、 复位电路(如图8)Reset端接单

10、片机的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/定义变量unsigned char KEY_NUM = 0; /用来存放按键按下的键值unsigned long HX711_Buffer = 0

11、; /用来存放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_Speed_Max 6 /该值可以改变设置指针闪烁频率/校准参数/因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数

12、才能使测量值很准确。/当发现测试出来的重量偏大时,增加该数值。/如果测试出来的重量偏小时,减小改数值。/该值可以为小数#define GapValue 365/传感器最大测量值,单位是g#define AlarmValue 5000/*/主函数/*void main()Init_LCD1602();/初始化LCD1602LCD1602_write_(0x80);/设置LCD1602指针LCD1602_write_word(Welcome to use!);Get_Maopi();Get_Maopi();Delay_ms(2000); /延时2sGet_Maopi();Get_Maopi();/

13、称毛皮重量/多次测量有利于HX711稳定 LCD1602_write_(0x01); /清屏 /读取EEPROM中保存的报警值 maxValueTable0 = byte_read(0x2000); maxValueTable1 = byte_read(0x2001); maxValueTable2 = byte_read(0x2002); maxValueTable3 = byte_read(0x2003); Max_Value = maxValueTable0*1000+maxValueTable1*100+maxValueTable2*10+maxValueTable3; /计算超限报警

14、界限值while(1) Get_Weight();/显示当前重量LCD1602_write_(0x80); LCD1602_write_word(Weight=);LCD1602_write_data(Weight_Shiwu%10000/1000 + 0x30);LCD1602_write_data(.);LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30); LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);LCD1602_write_data(Weight_Shiwu%10 + 0x30);LCD16

15、02_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_write(0x2001,maxValueTable1); byte_write(0x2002,maxValueTable2);/保存EEPROM数据 byte_write(0x2003,maxValueTable3); Max_Value = maxVa

16、lueTable0*1000+maxValueTable1*100+maxValueTable2*10+maxValueTable3; /计算超限报警界限值 if(KEY_NUM = 2) /按键加 if(state != 0) maxValueTablestate-1+; if(maxValueTablestate-1 = 10) maxValueTablestate-1 = 0; if(KEY_NUM = 3) /按键减 if(state != 0) maxValueTablestate-1-; if(maxValueTablestate-1 = -1) maxValueTablestat

17、e-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_(0x80+0x40); LCD1602_write_word(MAX=); LCD1602_write_data(maxValueTable0+0x30); LCD1602_write_data(.); LCD1602_write_data(maxValueTable1+0x30);

18、 LCD1602_write_data(maxValueTable2+0x30); LCD1602_write_data(maxValueTable3+0x30); LCD1602_write_word(Kg); break; case 1: LCD1602_write_(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(.);

19、 LCD1602_write_data(maxValueTable1+0x30); LCD1602_write_data(maxValueTable2+0x30); LCD1602_write_data(maxValueTable3+0x30); LCD1602_write_word(Kg); break; case 2: LCD1602_write_(0x80+0x40); LCD1602_write_word(MAX=); LCD1602_write_data(maxValueTable0+0x30); LCD1602_write_data(.); if(Blink_Speed Blink

20、_Speed_Max/2) LCD1602_write_data(maxValueTable1+0x30); else LCD1602_write_data( ); LCD1602_write_data(maxValueTable2+0x30); LCD1602_write_data(maxValueTable3+0x30); LCD1602_write_word(Kg); break; case 3: LCD1602_write_(0x80+0x40); LCD1602_write_word(MAX=); LCD1602_write_data(maxValueTable0+0x30); LC

21、D1602_write_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_(0x80+0x40); LCD1602_write_word(MAX=); LC

22、D1602_write_data(maxValueTable0+0x30); LCD1602_write_data(.); LCD1602_write_data(maxValueTable1+0x30); LCD1602_write_data(maxValueTable2+0x30); if(Blink_Speed = Max_Value | Weight_Shiwu = AlarmValue) /超过设置最大值或者传感器本身量程最大值报警Buzzer = 0;elseBuzzer = 1;/*/称重/*void Get_Weight()Weight_Shiwu = HX711_Read();

23、Weight_Shiwu = Weight_Shiwu - Weight_Maopi;/获取净重if(Weight_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;in;i+)for

24、(j=0;j123;j+);/*/蜂鸣器程序/*void Buzzer_Di()Buzzer = 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);/等待

25、松手return 2; if( KEY3 = 0 )/按键扫描Delay_ms(10);/延时去抖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;四、问题与结果分析经过本次传感器的大作业,我们做的是双平行梁的电子秤,我们的实验电路分为三个模块,分别是采集模块,控制模块,显示处理模块,在传感器的设计中最困难的地方无非在于如何将重力

26、转化为电信号,然后在LCD1602上显示出来,因为在桥式电路中电压的压差很小而且还是模拟信号,所以我们采用了集成24位AD转化芯片,将电信号先放大128倍然后在进行AD转换,通过P32口给出高电平启动信号,然后通过I2C将转化的24位数字量传送到P33口,单片机通过计算得出数值。其次在制作的后期还有一个问题就是电子秤的校准问题,所以计算公式中加了一个宏定义GapValue,通过改变它就能校准电子秤的准确性。最后一个问题就是硬件焊接的问题,注意与软件相结合,比如排阻的焊接注意正负,显示屏加上对比调节。五、总结1、5月15日 开始选择要用那种传感器 5月16日 确定使用金属应变片做压力传感器 5月

27、17日上网搜集各种有关压力传感器的资料5月18日上网采集所需要的元件5月19日开始进行电路图的设计以与构思5月20日绘制出电路图5月23日对电路进行焊接5月25日进行程序的编写5月27日调试相关程序5月28日烧写程序,对硬件进行测试5月30日写设计报告5月31日完成2、徐飞50%(进行硬件的焊接以与程序的编写) 梅杰50%(对电路进行检查以与写设计报告)3、心得体会随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口

28、,越来越受人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件。因此,只有充分了解有关智能仪器、单片机、传感器以与各部分之间的关系才能达到要求。在这次制作中我熟悉了STC89C52单片机功能与工作特性,通过对数据采集的分析,了解了放大器与A/D转换器有更深的认识。学会了采用面向对象的思想,分层次、分模块构建设计的总体框架。最后,我觉传感器这门课应该重视实践能力的培养,而不应该放在理论上,通过这次大作业我了解了好多有关传感器的知识,真正的了解了传感器相关方面的知识。六、参考文献1、陆伯勤,电子称重技术和自动称重系统的进展;自动化博览,19992、文龙,单片机原理与应用;电子科技大学,20003、伯中,景霞,高精度智能电子分析天平;仪器仪表学报,19894、朝青,单片机原理与其接口技术;航空航天大学,199919 / 19

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁