基于单片机的电子秤的设计与实现文档格式.docx
《基于单片机的电子秤的设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子秤的设计与实现文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
仪器由传统的机械部件组成,由机器的各个部分组成,用电子电路代替部分机械部件的机械和电子组合秤,然后从集成电路到当前设计的电子单片机秤。
中国的电子衡器已经从原来的机电型演变为目前的全电子型和数字型。
今天的传统仪表和检测设备已被更先进的智能称重设备取代,已在工业制造和科学研究中得到证明。
并且在科学研究和工业制造中取得了巨大的成就。
基于单片机的电子称称重的实现在进行电子称重时,首先由压力传感器采集测试物体的重量并转换成电压信号。
该信号由放大器电路线性放大,然后由A/D转换电路转换成电脑能识别的数字信号送到主控电路的单片机中,经过单片机转换和处理,从而将被测物体的重量显示在液晶显示器上。
根据设计的基本要求,本电子秤分为信息采集模块,数据处理与编译模块,人机交互与液晶显示模块三大模块。
为了使本电子称的设计更智能化,在扩展功能上,本设计增加了一个过载报警提示功能,以保护设备尽量不超载工作。
数据采集模块由压力传感器、信号放大电路和A/D转换电路组成。
转换后的数字信号送给控单片机处理,由单片机完成对该数字信号的处理,驱动显示模块完成人机间的信息交换[1]。
这部分对软件有较高的设计要求,所以系统的大部分功能都需要对软件进行控制。
2系统整体设计
2.1系统硬件方案设计
根据各组成部分的功能要求来设计出的方案有以下几种:
方案一根据需要的功能设计能实现基本功能的简易电子秤(如图2-1所示)。
图2-1方案一结构图
此方案使用数码管显示物体的重量及其他相关信息。
使用内部带有A/D转换功能的单片机,程序量少,简单可行。
基本称重功能可以实现,但不能连接外部数据,各种控制参数不能根据实际情况灵活设置。
并且数码管只能显示简单的数字,不能显示其他复杂的字符及其他操作,因此不能满足显示购物清单的要求,无法达到设计要求。
方案二在信号处理时,通过使用放大倍数,信号转换等来增加信号强度,但是会增加相应的设计成本。
除了提高交换能力之外,可以满足设计需求,LED显示器可以显示购物信息,对象的名称信息等。
其它拓展功能也可以通过切换接口及显示界面的方法来实现(如图2-2所示)。
图2-2方案二结构简图
根据以上设计方案的特点,结合方案的实用性及可行性,设计了第三种方案,作为本设计最终方案,硬件结构(如图2-3所示)。
图2-3系统设计硬件结构图
2.2系统各电路元件选择
2.2.1传感器选择
(1)压电传感器
压电传感器是利用物体受力后在物体特定表面产生的电荷制成的传感器。
其工作原理是晶体受力后在晶体特定表面产生相应的电荷。
压电传感器结构简单、工作可靠,适用于动态力学各方面的的测量,但是压电器件高内阻、功率小,输出的能量微弱,并且电缆分布电容分布和抗干扰效应对外部物流需求的影响非常大[3]。
(2)应变片感器
应变片传感器是一种利用电阻应变陶瓷膜片受力后的效应转换为电信号的传感器。
该传感器由电阻应变片为主要器件制成,所使用的传感器是一个机械传感器,它构成了一个可以使用的敏感源耦合弹性探测[3]。
导体的电阻因机械变形而变化的现象称为电阻应变效应。
在应变计将机械应变信号ΔR/R的变形量和由此产生的电阻变化是处理非常小,很难准确地衡量。
因此,该转换电路是将应变片ΔR/R转换成电压或电流变化。
直流电桥的特点是信号不容易受其他电路的影响,抗干扰能力强。
由于输出信号小,需要用稳定性强的放大电路对输出信号进行放大(如图2-4所示)。
图2-4平衡电桥结构图
当输出电路为开路时,只有电压输出。
电源内阻忽略不计,由分压原理有:
(2.1)
=
当R1/R2=R3/R4或R1R3=R2R4时,即邻臂电阻比值相等或对臂电阻值乘积相等时,电桥平衡。
如式(2.2)示。
(2.2)
若差动工作,即R1=R-△R,R2=R+△R,R3=R-△R,R4=R+△R,按式(2.3),则电桥输出电压为
(2.3)
根据以上各传感器的参数及特点,本设计选择电阻应变式传感器。
考虑到平台承受的重量,振动和冲击组件,称量范围应为0〜5Kg,最大误差应小于0.005Kg。
为避免传感器承受重量超重而损坏,程应选择大于额定重量5K的传感器,于是选择了一个范围为5Kg,精度为0.01%的应变片传感器。
2.2.2单片机选型
单片机在整个设计中属于核心器件,所以在选择一个合适单片机至关重要。
AT89S52是一个低功耗,高性能CMOS8位的单片机,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51AT89S52引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元[2]。
该芯片特性如下(如图2-5所示)。
图2-5单片机特性
单片机内部结构引脚图(如图2-6所示):
图2-6AT89S52内部结构引脚图
2.2.3转换芯片选择及显示器选择
转换芯片选择
HX711是一款高精度24位A/D转换芯片,特别适用于力学数据转换。
相对于其他类型的集成电路芯片的外围芯片和其它芯片,芯片内直接提供稳定电源供芯片外部传感器和A/D转换器使用,并且供电稳定,还具有集成度高,响应速度快,抗干扰能力强和可靠性高,编程简单等特点。
输入有A\B两个通道。
芯片引脚结构图如下(如图2-7所示)。
图2-7HX711内部引脚结构图
HX711内部结构电路(如图2-8所示)。
图2-8HX711内部结构电路图
显示方式选择
方案一数码管显示
数码管显示,由发光二极管组成可显示数字字符的显示方式。
显示结果是有限,并且如果显示的信息量较大时,则必须级联多个数码管,这会使硬件连接复杂化并增加成本。
方案二LCD液晶显示
LCD1602液晶显示器,用于数字型钟表和许多便携式计算机的一种显示器类型;
可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光[4]。
体积小、功耗低、显示内容丰富。
具体引脚功能说明(如图2-9所示)。
图2-9LCD引脚功能分布图
LCD1602液晶显示模块中的字符生成存储器(CGROM)存储了160个不同的点阵字符模式,每个字符都有固定的代码,通过命令编程执行读写操作、屏幕和光标操作0。
通过比较两显示方案的特点及实用性,LCD的功能更能支持电子秤相关信息的显示,所以最后选择LCD1602显示器作为本电子秤的显示界面。
3系统硬件电路设计
3.1单片机控制电路设计
本设计主控电路由AT89S52单片机为核心,有晶振电路和复位电路共同组成,其连接方式如下(如图3-1所示)。
图3-1单片机主控电路
复位电路用于恢复微控制器的初始状态,并负责在单片机程序不运行或系统崩溃时再次使系统工作。
两种重置方法:
上电复位和手动按键复位。
晶振电路用于提供时钟振荡,给单片机的运行提供脉冲信号,频率稳定。
由石英晶体为主要材料制成。
基本工作原理是如果给晶体施加一个外力,它便会产生点,反之如果给其通电,它便会产生力,这个原理成为机电效应0。
3.2系统电源电路设计
本设计采用双电源供电方式,电源系统可作为系统电源,USB接口电源便于程序调试,一种电源稳压的直流5V电压稳压器,供给系统中的单片机、A/D转换芯片和液晶显示器需要的电源电压,以保证系统正常工作。
外部电源电压需高于5V,以保证滤波电容正常工作。
整体电路设计如下(如图3-2所示)。
图3-2电源电路结构图
C1,C2实现对电源滤波,以滤除可能存在的高频杂波对电源的影响,C4实现对电源电压的平滑稳定作用,当接口电压高时,C4用来储能,当电路供电不足时电容C4充当电源为系统供电,保证设备正常工作0。
LED0用作电源指示,其亮灭代表电源是否正常工作,R0用来限流,以保证LED不被烧坏。
3.3超重提示电路设计
当被测物体的重量超过传感器承受重量最大值时,警报提示电路将发出滴滴的警报声,以免在重量过高时损坏传感器。
控制器的端口由控制PNP三极管基极进行控制。
当单片机I/O口输出高电平时,三极管截止,电路正常没超重;
当单片机的I/O口输出为低电平时,三极管导通,蜂鸣器的正极与电源接通,蜂鸣器通电发出报警声0(如图3-3所示)。
图3-3超重警报电路结构图
3.4系统显示和按键输入电路设计
系统显示电路
显示部分采用LCD1602液晶显示模块,工业字符型液晶显示器,能够同时显示32个字符,专门用来显示字母、数字、符号等的点阵型液晶模块0(如图3-4所示)。
图3-4LCD内部结构图
其引脚功能(如图3-5所示)。
图3-5LCD引脚功能图
按键输入电路
按键输入电路采用4*4矩阵键盘实现,电路结构如图3-6所示。
图3-6按键电路结构图
根据设计要求按键设计了以下功能,基本满足使用需求,如图3-7所示:
图3-7按键功能分布图
该电子秤能自动检测托盘上除被测物以外的重量并清除,即去皮。
计算功能:
输入正确的单价后,按计算按钮计算出量,并在LCD屏幕上显示重量、单价和总价。
4系统软件设计
4.1开发软件介绍
基于单片机的电子称软件开发采用C语言进行程序编译,编译环境为KeilV4。
Keil是美国KeilSoftware公司制造的51系列兼容芯片语言C语言软件开发系统。
它能提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起0。
KeilC51可实现编辑,创建,调试和模拟。
开发人员可以使用ide本身或其他编辑器编辑。
编译并连接C51和A51编辑器并生成可执行文件(.hex)0。
在控制器内部,软件有三个重要方面:
初始化系统,另一个是识别按键,第三个是数据的收集,数据处理和显示。
这三方面的工作都在主程序中完成,程序采用模块化结构,程序结构清晰,编程简单,方便阅读,易于调试和修改。
4.2系统运行流程图
显示子程序主要用于确定是否需要显示以及怎样显示,并且是最重要的程序之一。
设计运行流程(如图4-1所示)。
图4-1系统显示部分流程图
4.3系统代码
初始状态屏幕显示。
voidshizhong_hanshu()
{
init();
Init_DS1302();
//初始化芯片
init_1602();
//初始化lcd
while
(1)
{
if(du_k2==0)
dianzhicheng_hanshu();
//跳去运行电子称
tmpchange();
//温度转换
wendu_100bei=tmp();
//获得温度
show_date();
keyscan();
if((shi==clock_shi)&
&
(fen==clock_fen)&
(status==2)&
(miao<
5))
{
clock_flag=1;
TR1=1;
}
}
获取重量并显示
voidget_pizhong()
uintj;
ulonghx711_dat;
for(j=0;
j<
5;
j++)
Delay10ms();
hx711_dat=ReadCount();
temp=(uint)(hx711_dat/100);
voidget_weight()
ulonghx711_data,a;
uintget,aa;
hx711_data=ReadCount();
get=(uint)(hx711_data/100);
if(get<
(temp+4))
while
(1)
if(du_k1==0)
shizhong_hanshu();
//跳去运行时间
weight=0;
TR0=0;
chaozhong_flag=0;
clock=1;
if(leiji_flag==1)
{
weight_shuzhi(leiji_weight);
//显示累计重量
P3=0xf0;
if(P3!
=0xf0)
{
leiji_count--;
break;
}
}
else
weight_shuzhi(weight);
//显示重量
hx711_data=ReadCount();
get=(uint)(hx711_data/100);
if(get>
(temp+4))break;
}
按键操作。
(1)超重警报
if(weight>
=0)
if(weight>
5000)
{chaozhong_flag=1;
TR0=1;
}//重量大于5000g,超重报警
else
{chaozhong_flag=0;
TR0=0;
clock=1;
weizhi_zifu(0x00,'
+'
);
else{weizhi_zifu(0x00,'
-'
(2)去皮
if(dat==16)
qi_weight=weight+qi_weight;
gotomm;
(3)清除
if(dat==12)
{s--;
*s=0;
price_shuzhi(1,'
'
gotonn;
(4)累计
if(dat==14)
leiji_flag=1;
leiji_weight=leiji_weight+weight;
leiji_count++;
if(leiji_count==10)
{leiji_count=0;
write_com(0x01);
//清屏;
init_1602();
system();
weizhi_zifu(0x04,0x30+leiji_count);
gotonn;
(5)置零
if(dat==15)
s--;
qi_weight=0;
weight=0;
price=0;
money=0;
pricetable[2]=0;
pricetable[1]=0;
pricetable[0]=0;
leiji_flag=0;
leiji_weight=0;
leiji_count=0;
chaozhong_flag=0;
clock=1;
TR0=0;
//清屏;
5系统整体调试
5.1开发过程中遇到的问题及系统实物调试
开发过程中遇到的问题
1、在开发时很多因素都会影响设计效果,考虑不够仔细、完全。
2、设计不够优化,需要改进。
比如超重没警报电路没有设置保护电路。
3、对各种需要的器件的性能、参数、可拓展功能都不熟悉,使用起来得先去了解器件各方面的性能和参数,比较困难。
4、对单片机语言不够深入的了解和使用,开发过程比较艰辛。
系统实物调试效果图
经过不懈的努力和指导老师的细心指导,设计最终得以完成,最终完成的实物调试图如下(如图5-1所示)。
图5-1系统实物效果图
5.2系统设计总结
这次设计增强了我对大学所学知识更深入了解。
同时增强了单片机和C语言的编程能力,以及软件调试经验,还了解到相关领域其他知识,这在我未来工作和学习中有很大的帮助。
由于时间仓促,经验的缺乏,理论方面也不够充分,在完成设计时,仍然存在一些能力方面问题。
个人技能和理论知识应该加强。
这次宝贵的实际经验对自己各方面的提高有着极大的帮助。
此次设计,我是以单片机STC89C52为核心设计的一个数字电子秤。
在设计实现过程中,我开始掌握电子设计的基本概念,规则和流程,在不断改进的过程中逐渐丰富理论知识和动手实验操作的能力,并且养成了积极思考和解决问题的习惯。
虽然在这过程中充满了艰辛,但成功实现设计要求时的那种自豪感也是其他事物无法给予的,我很感谢能有这次能将理论与实际结合的机会!
附录
附录A系统整体结构电路图
系统整体结构电路图设计完成(如图A-1所示)。
图A-1系统电路结构图
系统PCB制作完成(如图A-2所示)。
图A-2系统PCB图