比赛设计的电子称是以单片机为主要部件,用C语言进行软件设计。通过传感器测量信号,经过A/D转换系统转换信号输送给CPU控制系统,通过诺基亚5110屏幕显示系统数据,键盘输入系统用来输入操作指令,阀值报警系统可以防止超量程损坏电子称。
系统采用32位的M051芯片作为单片机的主控芯片,外围以称重电路,显示电路,报警电路,键盘电路等构成系统电路板,从而实现了自动称重的各种控制功能。
最终视频演示:https://v.youku.com/v_show/id_XMTQyNjY1Mzg0NA==.html
硬件框图
软件框图:
调试过程
调试工具:逻辑分析仪 示波器 信号发生器 万用表 串口调试助手
调试步骤:
1:压力传感器
淘宝链接:
https://item.taobao.com/item.htm?spm=2013.1.0.127.C...
以上是压力传感器在淘宝的网址
将压力传感器用10伏电压供电,当传感器上放1千克的物体,绿线和白线之间的差分电压为0.5毫伏。说明传感器良好。
2:AD转换模块
用的是HX71124位AD转换模块
淘宝链接:
https://item.taobao.com/item.htm?spm=a230r.1.10.168...
AD的时序
24位AD,用信号发生器给1mv的信号,用串口调试助手对应的十进制输出为48到64,0到20mv的线性关系较好,20mv对应的十进制输出为1100到1241之间。然后改用压力传感器给信号,当压力传感器上不放物体时,对应的十进制输出为1912000,低三位数据的浮动较大,在处理数据时取高4位,结果得到最低位数据每增加1,表示重量增加2.12g。
调试进程:
能用键盘输入小数,与单价相乘,并显示浮点型总价,重量的精确度为2g,当重量超过40千克时,led灯会闪,发出警报。不足之处:每次上电时,在不放重物的情况下,初始值有变化,从0~6不等,用软件改初始值后能维持一段时间,但下次开机时初始值仍不为0.
软件部分遇到的问题及解决过程
1:显示频点不亮
出现的原因 :I/O口接错。
2:显示不清楚:
解决方法:在显示后面加延时,或者是利用其它程序的延时,将显示部分写在其它程序的后面,或者是将一直显示的字写在主函数里面,只执行一遍,这种方法显示效果很好,但
是无法进行刷新,高位显示的数据一旦出现,便不会再消失
3:按键检测不到
出现的原因,局部变量与全局变量命名相同,导致出现错误
还有是因为,延时过长。
4:数据浮动较大
解决方法:用去大去小取平均的数字滤波,但有时会在10个数据中出现几次最大值,于是又进行了中位值滤波和限幅滤波。
5:读取不到数据
出现的原因,P-DOUT不能给其他变量赋值。
解决方法:赋值时将P-DOUT换成PIN
硬件部分遇到的问题及解决过程
M051电子称PCB中的一些错误总结
1. AD模块中的两根差分信号线 中间要用一根地线隔开,线宽应加粗点,
差分信号走线:走线长度,宽度相等。(共模分量减小)
间距相同(差分阻抗一致,反射减小)。
(解决办法:割断PCB上面的这两根线,反面加两根飞线)
2. 电源模块中:变压器出来12V有效值,最高值接近17v,所以用击穿电压为16V的滤波电容 不行。
(解决办法,换个击穿电压为35V的电容。)
3. 蓝牙模块位置放反了,天线旁边不能有其他的线,所以天线一般放在板子的边缘。(以后画此模块要注意了)
4. 诺基亚5110屏的封装 四个固定孔间距大了一点点,板子厚度要用1.0cm的。
5. 画pcb时没预留正负极接口,之后硬件调试不方便。
6. 焊接元器件时,要先焊接电源模块,再测试此模块的工作情况。 再依次焊接其他模块。
7. 拼版时,两个板子之间的距离稍微要留大点,方便回来切割。
8. 画完PCB后,把最后画好的要存好档,不要以后调试时把以前错误的图拿出来调试
9. 5110屏幕布局时放倒了,以后画板时要和搭档多交流。
10:电压过高,导致显示频黑屏,蜂鸣器不受软件控制,一直响。
解决方法:将220转12的变压器换成220转6伏的变压器。
11:AD接反
解决方法:将排针反过来焊接
12:AD采集数据浮动很大
出现的原因:由于布线时两根输入信号线平行,也有可能是因为信号线太细,造成干扰
解决方法:将两根信号线隔断,再接线。
画M051电子称PCB的规范总结
1,布局时:每个模块电路里的元器件尽量放在一起,(遵循布线最短原则)
晶振电路元器件电容晶振的摆放,且下面不能走其他线,此电路离芯片对应的IO口要靠近。
最小系统vcc旁的电容也要靠近mcu
2.布线时:
1. 线宽:最小用10mil,主电源线,电源线要更宽,这个根据电流大小判断。
每个模块的电源线也要适当加粗。
2.先
1