图 4.12 键盘电路图 4.2.8 电源设计
本设计用到两个电压 +5v 和+12v。可以分别用7805和7812稳压芯片提供。另外用三个7号电池为DS1302作备用供电电源。主电源电路图如(4.13)所示:
图 4.13 电源设计电路
4.2.9 总电路
如图4.14所示:
图4.14 系统总硬件图
5 、软件设计
5.1 软件所实现的功能:
(1) 实时控制电机
(2) 实时检测是否超出上下限
(3) 实时显示检测的数据、时间、上下限数值 (4) 实时监控键盘输入 (5) 报警控制
5.2 软件流程图
软件流程图如图5.1所示,本程序通过I\\O口Pind.7脚进行判断是否启动电机。启动电机后就进行液面探测。利用I\\O口Pind.0脚进行实时监控。键盘控制要求反应及时,因此本程序的键盘控制放在中断程序中处理。具体流程图如图5.1所示。中断0流程图如图5.2所示 。中断1流程图如图5.3所示。
开始 初始化、及初始化显示 N Pind.7=0 Y Pind.0=0 Y 电机正转、计算电机所走到步数 电机反转计算电机所走到步数 N 是否超出极限 Y 声光报警 N 显示时间、日期、 当前液面数值
图5.1 系统软件流程图
中断0初始化 Pind.4=0 Y 设置上限值 N Pind.5=0 Y 保存当前液位 N 中断1 初始化 设置报警下限值 N 返回 Pind.6=0 Y 保存时间、日期 返回 图5.2 中断0 流程图 图 5.3 中断1 流程图
6 测试方法 6.1 测试方法
(1)先定好原点,我们定的原点为距零水位22.6cm高度的桶口边。 (2)定好原来后开始通电,按下启动按钮,电机缓慢带动探针下降。 (3)当探针探测到水面时,探针不再下降。此时可以从液晶屏幕上读出液
面的高度。
(4)可以放水,和加水,系统可以实时监测水位的变化,并显示当前的水
位高度。
(5) 用键盘调节报警上下限,和断电保存。
6.2 测量结果:
表6.1 测量数据表 实际高度15.6 (cm) 测量高度15.6 (cm) 误差(cm) 0.0 12.0 12.1 0.1 10.0 10.2 0.2 8.0 8.1 0.1 6.8 6.9 0.1 4.0 3.8 0.2 0.0 0.4 1 0.4 0.1 20 20. 表6.2 报警测量值 20.1 15.1 10.1 5.1 实际上限 报警下限 9.9 9.9 5.9 1.9 值 (cm) 上限 20.0 15 10 5 设定 10 10 6 2 报警值 下限 (cm)
6.3 结果分析
通过测试的数据,我们可以看到,在0~20CM内,精度已经达到了题目的要求。但是还是存在误差,误差的主要来源是当步进电机走过的步数越多,线绕在步进电机上转轴上的周长会增大。所以会产生误差,还有就是在人为定零点时也会产生误差,如果定位得不好,就会产生很的误差。
参考文献:
[1] Atmega16 芯片手册
[2] 康华光.电子技术基础:模拟部分.第五版.北京:高等教育出版社.2006 [3] 沈文.AVR单片机C语言开发入门指导.第一版.北京:清华大学出版社.2003