1、嵌入式液位自动检测装置摘要随着社会的发展我们的生活不断向自动化、智能化方向发展,在生活中很多地方都要求我们对液位进行测量以满足我们生产生活的各种要求。通过本文的研究,总结出了压力传感器实现液位测量的优势:体积小,实际应用系统简单实用,成本低,效益好;具有较高的性能价格比;系统不易受到干扰,可靠性高。同时基于嵌入式的测量系统具有实时性强、可移植性好,便于二次开发开发。将测量技术应用到实际生产过程做了有益的尝试也为液位测量提供了有参考价值的设计思路。关键词:传感器;传感器技术;液位测量;嵌入式系统;Automatic detection device embedded levelAbstractW
2、ith the development of the society we live we to automation, intelligent direction, in many places in life we are required to measure liquid level to meet a variety of production and living our requirements.Through this research, summed up the advantages of pressure sensor for liquid level measureme
3、nt: small size, practical application system is simple and practical, low cost, good benefits; to have the high performance price ratio; the system less susceptible to interference, high reliability. At the same time measurement system based on embedded system has strong real-time performance, good
4、portability, convenient for the two development. The measurement technique is applied to the actual production process and do some beneficial attempt also provides a valuable reference idea for liquid level measurement.Keywords: sensor; sensor technology; liquid level measurement; embedded system;设计
5、说明书目录论文总页数:15页1.引言12.设计要求13.方案比较与论证13.1超声波测量13.2电阻式测量13.3压差法测量13.4压力传感器概述23.5传感器选型24.硬件系统设计34.1信号调理电路34.2 AD采集电路44.3嵌入式模块电路65.软件设计65.1AD采集与信号处理65.2串口95.3数据采集105.4显示116.数据误差136.1数据测量与校准136.2误差分析14参考文献151.引言随着社会的发展我们的生活不断向自动化、智能化方向发展,在生活中很多地方都要求我们对液位进行测量以满足我们生产生活的各种要求。我们这次的课题研究液位的测量方法与实现通过对液位的测量研究使用嵌入
6、式系统完成液位的测量。2.设计要求(1)制作一个单面板,实现液位测量。注意,该题目测试不严格要求精度,但能直观的测量出液位(2)该测量板可以带处理器、串口与TQ2440相连,也可直接相连,最后需在TQ2440中得出测量数据(3)技术指标:测量范围0150cm,分辨率3cm3.方案比较与论证3.1超声波测量超声波测量通过换能器将电功率脉冲转换为超声波,射向液面,经液面反射后再由换能器将该超声波转换为电信号。超声波是机械波,传播衰减小,界面反射信号强,且发射和接收电路简单,因而应用较为广泛;但超声波的传播速度受介质的密度、浓度、温度、压力等因素影响,其测量精度较低。3.2电阻式测量电阻式测量方法特
7、别适用于导电液体的测量,敏感器件具有电阻特性,其电阻值随液位的变化而变化,通过电阻值变化值变化可以的得到电压值的变化经过校准即得到液位。同时也可以通过浮力用探针式利用跟踪测量法来测量液位,以液位上升的情形为例来说明液位测量原理,当液位上升时,提起探针完全脱离液体,然后缓慢降低探针寻找液面,则探针与液体刚接触时的位置即与液位相对应。探针式的特点是测量精度很高、控制电路复杂。3.3压差法测量我们都知道液体会在容器里会产生压力且压强PgH,在液体密度均匀不变的情况下、g保持不变,液位的高度H和压强P成正比,通过压强的变化我们可以得到液位高度。我们可以用压力传感器来测量水压的变化来测量液位。通过这种方
8、法测量液位精度高、测量稳定维护方便,是比较成熟的液位测量方法。 我们这次课题采用压差法测量液体液位,提高测量精度简化外围电路设计。图3-1系统框图通过压力传感器测量水压,由于传感器输出信号比较微弱我们通过差分方式输入仪表放大器进行放大,将信号放大到05V然后用STC12C5A60S2进行AD采集,并进行数据的采集滤波。最后通过串口将数据发送到TQ2440开发板上进行数据显示。3.4压力传感器概述在各类传感器中压力传感器具有体积小、重量轻、灵敏度高、稳定可靠、成本低、便于集成化的优点,可广泛用于压力、高度、加速度、液体的流量、流速、液位、压强的测量与控制。除此以外,还广泛应用于水利、地质、气象、
9、化工、医疗卫生等方面。由于该技术是平面工艺与立体加工相结合,又便于集成化,所以可用来制成血压计、风速计、水速计、压力表、电子称以及自动报警装置等。压力传感器已成为各类传感器中技术最成熟、性能最稳定、性价比最高的一类传感器。压力传感器是用于测量液体与气体的压强的传感器。压力传感器工作时将压力转换为电信号输出。随着微电子工业的迅速发展,单片机控制的智能型控制系统作为压力传感器的一种被广泛应用于电子产品中,为了使自己对单片机控制的智能型控制系统有较深的了解。经过综合分析选择了由单片机控制的智能型液位控制系统作为研究项目,通过训练充分激发自己分析问题、解决问题和综合应用所学知识的潜能。并且,液位控制在
10、高层小区水塔水位控制,污水处理设备和有毒,腐蚀性液体液位控制中也被广泛应用。3.5传感器选型传感器我们选用MPS20N0040D-S,它是一款SMD 封装的产品。此款产品被广泛应用于与气压相关的产品。并且具有良好的可重复性和长时间的工作稳定性。量程040KPa,线性度0.3%,其内部结构为一个电桥可有效的抑制共模干扰,同时也可以进行在线校准提高精确度。传感器外部安装1根直径为5mm的软管,一端安装在被测液位底部;另一端与传感器连接。水箱水位高度发生变化时,引起软管内气压变化,然后传感器把气压转换成电压信号,输送到AD转换器。图3-2 传感器内部结构图4.硬件系统设计4.1信号调理电路水箱水位高
11、度发生变化时,引起软管内气压变化,然后传感器把气压转换成电压信号,电压信号经过放大电路,单片机采集到输出信号就可以判断出液位高度。图4-1 信号调理电路如图4-1所示,为信号调制信号电路图,液位变化引起传感器MPS20N0040D-S输出电压信号有微弱的变化,将微弱的信号用INA282仪表运放将信号放大,单片机采集INA282输出信号,INA282采用双电源供电,放大更精确,ICL7660为正压变负压芯片,将+5V转变为-5V。D3为电源指示灯。图4-2 信号调理电路实物图4.2 AD采集电路通过压力传感器测量水压,通过差分方式输入仪表放大器进行放大,将信号放大到05V然后用STC12C5A6
12、0S2进行AD采集,并进行数据的采集滤波。最后通过串口将数据发送到TQ2440开发板上进行数据显示。图4-3 AD采集电路如图4-3所示,为AD采集电路和单片机串口电路,单片机选择STC12C5A60S2,单片机采集INA282放大过后的电压,再通过内部滤波,再通过串口发送出去,选择芯片为MAX232.图4-4 单片机实物电路图4.3嵌入式模块电路嵌入式模块选择天嵌公司的TQ2440开发板,开发板详细资料和电路接口见其他资料。图4-3 TQ2440 嵌入式开发板TQ2440开发板上有串口(RS232),AD采集电路板上也纯在串口(RS232),将两个串口接在一起,两个电路板经过程序控制,就实现
13、串口通信,能够把水位高度先通过STC12C5A60S2采集,再通过串口发送到TQ2440开发板,然后再通过QT显示出液面高度。5.软件设计5.1AD采集与信号处理我们通过STC12C5A60S2单片机自带的AD采集气压传感器的变化程序流程图如图:图5-1 AD采集程序流程图特殊功能寄存器说明sfr ADC_CONTR = 0xBC; /ADC控制寄存器sfr ADC_RES = 0xBD; /ADC结果寄存器高位sfr ADC_RESL = 0xBE; /ADC结果寄存器低位sfr P1ASF = 0x9D;/P1口模拟功能控制寄存器sfr P1M0 = 0x92;/IO输出模式寄存器sfr
14、P1M1 = 0x91;/ IO输出模式寄存器主要代码说明1、ADC初始化void InitADC()P1ASF=0xff; /设置P1口为AD输入口ADC_RES=0; /清零结果寄存器ADC_RESL=0;ADC_CONTR=0x88; /ADC控制寄存器设置1000 1000-即开启ADC的电源,540时钟转换周期Delay(2); /延时一段时间让ADC的电源稳定 /ADC_CONTR=0x88;/开启ADC转换,选择通道0AUXR1&=0xfb; /将ADRJ置0P1M0 = 0x01;P1M1 = 0x01;2、开始AD转换uint AD_get(uchar channel)ES
15、= 0;ADC_CONTR=0x88|channel; /开启AD转换1000 1000 即POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 _nop_();_nop_();_nop_();_nop_();/要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR 寄存器while(!(ADC_CONTR&0x10); /等待转换完成ADC_CONTR&=0xe7; /关闭AD转换,ADC_FLAG位由软件清0ES = 1;return(ADC_RES); /返回AD转换完成的8位数据3.滤波与液位换算void Get_AD
16、date()float res;uint res1; res = AD_work(channel1); / Clr_lux(); res1=res*10000; res1 = 5300 - res1; res1 = res1 / 5; lux0=res1/10000+0; lux4=c; lux5=m; lux1=res1%10000/1000+0; lux2=res1%1000/100+0; lux3=res1%100/10+0;/ lux5=res1%10+0; lux6=0; send_com(lux); send_char(n); /send_char(0x0d); /send_cha
17、r(0x0a);/ Delay(100); 我们通过采集100次AD值进行均值虑波提高数据精度。5.2串口通过单片机采集的数据用串口发给TQ2440进行处理。串口初始化设置定时器1工作方式2波特率设置为9600.void Init_UART()TMOD = 0x20;/设置定时器1工作方式2SCON = 0x50;PCON = 0x00;TH1 = 0xfd;TL1= 0xfd;TR1 = 1;/启动定时器1/SM0 = 0;/SM1 = 1;/REN = 1;EA = 1; /打开总中断ES = 1;5.3数据采集主函数主要代码如下:#includeAD.h#include UART.h/#
18、include reg51.hvoid INIT();void main()Delay(100);Init_UART();InitADC();send_com(12345);while(1)Get_ADdate();Delay(500);图5-2 主程序流程图5.4显示(1)设置波特率首先使用gedit test.cpp命令打开test.cpp文件,修改串口设备号。本项目中使用串口2进行数据交互。图5-3 设置波特率修改函数serial_fd = open(*/dev/ttySAC2*,0_PDWR,0);选择串口号2.修改波特率 图5-4 设置波特率主要代码这里仅仅使用数据输入,只需cfse
19、tispeed(&0pt,B9600);(2)编译arm版本的test.使用make命令编译完成后,应用程序“test”在/opt/EmbedSky/Qte/arm-qtopra-2.2.0/qtopia/opt/Qtpia/bin下,桌面图标test.png在/opt/EmbedSky/Qte/arm-qtopra-2.2.0/qtopia/opt/Qtpia/pics,启动器test.desktop在/opt/EmbedSky/Qte/arm-qtopra-2.2.0/qtopia/opt/Qtpia/apps/EmbedSky/下.然后使用。将这三个文件分别考到TQ244开发板上相应文件
20、夹下。重启生效。图5-5 液位显示效果图6.数据误差6.1数据测量与校准我们通过实验完成了液位测量,采用AD采集得到了气压传感器的电压值但是不能得到我们需要测量的液位高度,我们采用米尺测量校准得到了液位高度。下面是测量数据。表6-1 测量数据校准实际液位(cm)测量液位(cm)56109151720222528303150538081通过测量我们将测量误差控制在3cm以内,并在TQ2440上进行了液位显示完成了设计要求。图6-1 液位校准6.2误差分析可以看出本次课程设计制作的液位检测装置精度不是很高误差到达3cm,由于本次设计不强调精度在器件选型方面,选用了精度较低的器件。误差主要由以下几个
21、方面。(1)AD精度不够高压力传感器输出信号比较微弱且当距离在小范围内变化(0-10cm)时电压值的变化很小,这就要求我们AD的精度较高能够分别出10mv内电压的精确变化,我们选用的STC12C5A60S2 单片机AD位数为8位,不足以精确测量液位。(2)气压测量存在误差压差法测量液位高度需要测量起始气压然后通过做差得到液位高度。如果起始气压测量不准缺也会造成测量不准。(3)受环境影响由于外界环境温度不同也会使气压有所不同,同时在不同的密度液体里也会使压强不一样,在不同地域重力常数也会影响气压值。参考文献1王俊峰,孟令启.现代传感器应用技术M.北京:机械工业出版社,2007.2范晶彦.传感器与检测技术应用M.北京:机械工业出版社,2005.3宋文绪,杨帆.自动检测技术M.北京:高等教育出版社,2000.4周航慈.单片机应用程序设计技术M.北京:北京航空航大大学出版社,2005.5徐惠民,安德宁.单片微型计算机原理接口与应用M北京:北京邮电大学出版社,1996.6刘侃,张永泰,刘洛琨.ARM程序设计优化策略与技术J单片机与嵌入式系统应用, 2004,(04).7徐千洋.LinuxC函数库参考手册.M中国青年出版社.2002.8杜春雷.ARM体系结构与编程M.清华大学出版社.20039邹思铁.嵌入式Linux设计与应用M.北京清华大学出版社.2002