基于ARM的水位控制系统
2014-03-16贵州大学电气工程学院党长青陈湘萍
贵州大学电气工程学院 党长青 陈湘萍
1.引言
水位控制一直以来都是工业生产的一项重要的控制指标,其控制方法目前使用的也较多,但是随着计算机技术的快速发展与应用,使得水位控制有了更加精确的控制定位,本文运用ARM技术实现了一个水位控制器的设计,该控制器以微控制器为核心,利用超射波检测传感电路实现了水位的高精度控制。
2.硬件电路设计
本水位控制系统硬件电路主要由电源电路、检测超声波检测电路及接口电路构成,其具体设计如下:
2.1 电源电路
本系统采用的STM32F103VET6,STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源。当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。具体电路图如图2.1所示。
图2.1 系统的供电电路图
图2.2 超声波检测电路
2.2 超声波监测系统设计
其测距原理为:通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。这与雷达测距原理相似。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2)。图2.2所示为超声波检测电路。
其超声波时序图如图2.3所示。
由图2.3可看出只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。
图2.3 超声波时序图
2.3 串口通信电路
在本系统中需要用到串口通信,控制发送数据到PC上显示,以实现单片机与PC机的通信。在串口通信中使用到的芯片是MAX3232CSE,MAX3232CSE是一种低功耗拥有两个接收器和两个发射器的串口接口芯片。它兼容了RS-232的特性。供电范围是3V-5.5V。在MAX3232CSE内部,有两个充电泵。该芯片的外围电路非常简单,外部只需要接上4个0.1uF的充电电容就可以使用了。通信速率在120kbps能够保证数据不出错。并且能够保持RS232的输出电平。MAX3232CSE具有低至1uA的关闭模式,在便携式设备中,降低了电源的消耗,延长了电池的寿命。在低能耗的关闭模式中,接收器任然处于激活模式,允许调制解调器接收数据,该接口电路图如图2.4所示。
图2.4 串口通信电路图
以上为本水位控制系统的硬件设计。该硬件设计是实现本系统精确水位控制的基础。
3.系统软件设计
3.1 系统软件部分概述
本系统的程序设计是基于常用的嵌入式系统软件开发平台Keil uVision4,用于实现数字控制器的设计,本系统对水位的控制主要采用数字PID控制器。以下是该数字控制器的设计实现。
3.2 数字PID控制算法实现
在本设计中对于控制器的实现主要采用增量式PID算法,这是因为增量式PID算法只需保持当前时刻以前三个时刻的误差即可。它与位置式PID相比,有下列优点:
(1)位置式PID算法每次输出与整个过去状态有关,计算式中要用到过去误差的累加值,因此,容易产生较大的累积计算误差。而增量式PID只需计算增量,计算误差或精度不足时对控制量的计算影响较小。
(2)控制从手动切换到自动时,位置式PID算法必须先将计算机的输出值置为原始阀门开时,才能保证无冲击切换。若采用增量算法,与原始值无关,易于实现手动到自动的无冲击切换。
PID算法代码如下:
3.3 系统流程图
3.3.1 下位机软件流程图
如图3.1所示,系统总体流程是:设定水位值,STM32F103VET6初始化,初始化后继而运行同时使电机转动,通过超声波不断反馈回来的数据判断是否到达了设定的水位值,如果到达了,则使电机以这样的速度稳定运行下去,如果没有达到设定的水位值,则将超声波检测到的数值与给定值做比较,得出误差值,然后将误差值通过DAC0832芯片转换成0~5V电压信号,反馈给执行机构(电机),再通过电机控制水泵的水流速度,来达到水位控制的要求。
图3.1 下位机软件控制流程图
图3.2 上位机软件程序流程图
3.3.2 上位机软件流程图
该模块主要是完成接收下位机传送上来的数据,并将数据以正确的形式显示在控制界面当中。该模块包括界面的设计以及具体的响应函数的设计。上位机的串口通信用的不是VC自带的MSCOMM控件,.这里使用一个动态库,分别是Pcomm.h,Pcomm.lib,Pcomm.dll。输入参数为串口的接收数据,输出参数为编辑框的显示数据。程序的流程图如图3.2所示。
4.系统测试结果
4.1 测试结果
根据要求,水位给定的范围是0~150mm。分别取两组数据进行测量,每组取6个数值。
第一组:0mm~65mm之间取值,所取的值分别为10mm、20mm、30mm、40mm、50mm、60mm。
第二组:65mm到150mm之间取值,所取的值分别为70mm、80mm、90mm、100mm、110mm、120mm。
4.2 测试结果分析
将以上数据进行比较可得,设定水位值每次变化10mm,大约所需要的调节时间为12S到15S,基本符合题目的要求,系统的各个检测单元的测试数据精度很高、显示值与设定值非常接近,这与硬件的选择及其参数的匹配选择是不可分割的。当设定水位值和当前水位值有误差时,会自动通过超声波检测到的数值与给定值做比较,得出误差值,然后将误差值通过DAC0832芯片转换成0~5V电压信号,反馈给执行机构(电机),再通过电机控制水泵的水流速度,来达到水位控制的要求。
5.结束语
本文设计了一个基于ARM的水位控制控制系统,通过能采用ARM7内核芯片和串口通信电路及超声波检测技术实现了水位的精确控制,从测试结果可以看出该系统具有良好的稳定性,而且该系统还具有功耗低稳定性好等特点,具有较高的实用价值。
[1]周立功.ARM嵌入式系统基础教程(第二版)[M].北京:北京航空航天大学出版社,2005.
[2]周立功.ARM嵌入式系统基础教程(二)[M].北京:北京航空航天大学出版社,2005.
[3]周立功.ARM嵌入式系统基础教程(三)[M].北京:北京航空航天大学出版社,2005.
[4]周立功等,EasyArm2131教材.
[5]谭浩强著.C程序设计(第三版)[M].北京:清华大学出版社,2007.
[6]周旭.现代传感器技术[M].北京:国防工业出版社,2007.
[7]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005.
[8]吴春祥.嵌入式水文自动测投系统的研究与设计[D].武汉理工大学,2008.