基于ARM超声波测液位自动控制系统设计.doc

上传人:仙人指路1688 文档编号:4144747 上传时间:2023-04-07 格式:DOC 页数:28 大小:1.21MB
返回 下载 相关 举报
基于ARM超声波测液位自动控制系统设计.doc_第1页
第1页 / 共28页
基于ARM超声波测液位自动控制系统设计.doc_第2页
第2页 / 共28页
基于ARM超声波测液位自动控制系统设计.doc_第3页
第3页 / 共28页
基于ARM超声波测液位自动控制系统设计.doc_第4页
第4页 / 共28页
基于ARM超声波测液位自动控制系统设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《基于ARM超声波测液位自动控制系统设计.doc》由会员分享,可在线阅读,更多相关《基于ARM超声波测液位自动控制系统设计.doc(28页珍藏版)》请在三一办公上搜索。

1、本 科 课 程 设 计 (论文)题目:基于ARM超声波测液位自动控制系统设计学 院:机电工程学院专 业:自动化班 级:072学 生:高兆吉学 号:1指导教师: 职称:教 授指导教师: 职称:副教授 本 科 课 程 设 计 (论文)任务书 机电学院 自动化专业 07级 2班 学生 题目:基于ARM超声波测液位自动控制系统设计内容简介:原始依据:(包括设计(论文)的工作基础、研究条件、应用环境、工作目的等):超声波是一种在弹性介质中的机械震荡,纵向分辨率较高,超声波对色彩、光照度、外界光线和电磁场不敏感,因此超声波测距对于被测物处于黑暗、有灰尘或烟雾、强电磁干扰、有毒等恶略环境有一定的适应能力。本

2、文利用超声波遇到障碍物返回特性,通过计算时间差达到测水位的目的。采用ADS1.2编程环境,使用LPC2131开发板,结合C语言实现软件编程,达到测距目的,实现控制水位的要求。主要内容和要求:(包括设计(研究)内容、主要指标与技术参数,并根据课题性质对学生提出具体要求):本文论述采用嵌入式系统技术研制成功的超声波测距的原理与方法。该测距系统是利用超声波传感器发送超声波来测试相对应的距离。工作时,LPC2131间歇性发出10US以上的一系列的短脉冲。最后由LPC2131对接受的时间差进行处理,自动测出液位距离,之后与给定液位进行比较,再由LPC2131自动控制相应的电机蓄水或放水。该超声波测距系统

3、具有测距原理简单,成本低,制作方便,易于实时控制等特点。设计一种基于ARM超声波测液位自动控制系统。介绍了超声波测距的原理及LPC2131的性能和特点,并在此基础上,给出了实现超声波测液位方案的系统框图及软、硬件设计。日程安排:12010年6月25日-2010年6月27日对课程设计课题进行研究,了解各个课题的发展过程、前景,了解其中有哪些重要的技术。进行总体方案设计分析需求,确定系统主要性能指标。22010年6月25日-2010年6月27日1) 进行硬件电路设计、原理图绘制及电路板制作;2) 软件设计编写程序。32010年6月25日-2010年6月27日系统调试、实验分析与论文撰写。42010

4、年6月25日论文答辩目 录第1章 绪论51.1 引言1.2背景及意义1.3国内外的发展概况第2章 方案设计与论证22.1方案比较论证22.2方案选择32.3系统原理总框图4第3章 系统硬件电路设计4 3.1 器件选择3.2 控制器选择及介绍3.2.1 内部原理框图3.3电源电路模块设计43.3.1电路原理图53.4超声波检测系统设计53.4.1方案选择53.4.2超声波检测电路原理图73 .5键盘显示电路系统设计83.5.1键盘显示板原理图9 3.6 步进电机工作原理 3.6.1 步进电机结构图 3.6.2 线圈通电顺序 3.6.3步进电机的控制 3.6.4步进电机驱动电路 3.7 直流电机工

5、作原理 3.7.1 结构图 3.7.2 直流电机驱动电路第4章 软件设计10 4.1系统软件部分概述 4.1.1 ADS1.2的介绍4.2系统流程图10 4.3调试与分析第5章 系统测试125.1测试条件125.2测试仪器125.3测试结果125.4测试小结12附录:12A参考文献:12B程序清单:12第1章 绪论1.1引言超声波:科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹。我们人类耳朵能听到的声波频率为2020000赫兹。当声波的振动频率大于20000赫兹或小于20赫兹时,我们便听不见了。因此,我们把频率高于20000赫兹的声波称为“超声波”。 超声波具有如下特性: 1) 超声

6、波可在气体、液体、固体、固熔体等介质中有效传播。 2) 超声波可传递很强的能量。 3) 超声波会产生反射、干涉、叠加和共振现象。 4) 超声波在液体介质中传播时,可在界面上产生强烈的冲击和空化现象。1.2背景及意义水情水位测量一直是水文、水利部门的重要课题。为及时发现事故苗头,防患于未来,经济实用、可靠的水位无线监测系统将会发挥巨大的作用水位是水库大坝安全、水利排灌调度、蓄水、泄洪的重要参数之一。水位的自动化监测、传输和处理为水库现代化建设提供了良好的基础资料。在工农业生产的许多领域都需要对水位进行监控,可能现场无法靠近或现场无需人力来监控。我们就可以通过远程监控,坐在仪器前就能对现场进行监控

7、,既方便又节省人力。为了保证水利发电站的安全生产,提高发电效率,水电站生产过程需要对水库水位、拦污栅压差和尾水位进行监测。但是,由于不同电站有着不同的实际情况,因此就有着不同的技术要求,而且水位参数的测量方法和测量位置不同,对监测设备的要求亦有所不同。这样往往造成监测系统设备专用化程度高,品种多,互换性差,不利于设备维护,亦增加了设备设计、生产、安装的复杂性。因此,在综合研究水电站水位监测的实际情况以及特点的基础上,利用现代电子技术,特别是单片机技术和不挥发存储器技术,设计开发一种通用性好,可靠性高,维护方便,可适用于多种监测环境的多模式水位自动监测系统具有重要的实际意义。1.3国内外的发展概

8、况传感器是实现测量及控制的首要环节,一般传感器有模拟式和数字式两类,模拟式传感器,在和计算机及数字化仪器相连的时候必须采用A/D转换器把模拟量转换为数字量,且易受电磁干扰,不利于远距离传输。数字式传感器直接将待测量转换为数字量输出,其输出信号抗干扰能力强,功耗小,可与数字设备直接连接。数字式传感器的这些特点,特别适合应用于水情遥测系统中。但限于成本控制本设计依然采用模拟传感器。水位监测系统在我国的应用已相当普及。大型国家水坝常采用由PC机和单片机组成的主从式的多机联网系统,单片机作为下位机,负责大坝现场各水位点的选通和采集,作为上位机的PC机,则负责大坝水位的集中显示和管理记录,PC机作为通用

9、机,在用于专项的应用上时,难免会在很多方面存在问题,比如体积大,功耗大,运行不稳定、很难做到不间断运行等。而PC机与单片机之间的通讯方式主要采用RS485总线技术和现场总线技术两种。RS-485是使用较为广泛的双向有补偿传输线标准,其最大每段总线长度为1200米,每段最多支持32个节点,采用单组双绞线双向主从通信。当总线加长或节点增多时需要使用中继器连接,全网络支持最多256个节点。RS-485通信技术应用时间较长,软硬件实现较为容易,因此是国内粮情测控系统采用较多的通信方式。第3章 系统硬件电路设计3.1 器件选择 1、2803芯片2、电源3、电阻、电容、发光二极管、导线4、ARM板5、步进

10、电机、直流电机6、水箱、水阀、水管3.2 控制器选择及介绍器件1:EasyARM2131LPC2131微控制器是基于一个支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-S CPU,并带有32kB、64kB、128kB、256kB和512kB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。 较小的封装和很低的功耗使LPC2131特别适用于访问控制和POS机等小型应用中;由于内置了宽范 围的串行通信接口和8/16/32kB的片内SRAM

11、,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供大规 模的缓冲区和强大的处理功能。多个32位定时器、1个或2个10位8路的ADC、10位DAC、PWM通道、47个GPIO以及多达9个边沿或电平触发的 外部中断使它们特别适用于工业控制应用以及医疗系统。特性16/32位ARM7TDMI-S核,超小LQFP64封装。8/16/32kB的片内静态RAM和32/64/128/256/512kB的片内,Flash程序存储器。128位宽度接口/加速器可实现高达60MHz工作频率。单个Flash扇区或整片擦除时间为400ms。256字节行编程时间为1ms。Embedd

12、edICE RT和嵌入式跟踪接口通过片内RealMonitor软件对代码进行实时调试和高速跟踪。1个(LPC2131/32)或2个(LPC2134/36/38)8路10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44us。2个32位定时器/外部事件计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。低功耗实时时钟具有独立的电源和特定的32kHz时钟输入。多个串行接口向量中断控制器。可配置优先级和向量地址。小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压)。通过片内PLL(100us的设置时间)可实现最大为60MHz的 CPU操作频率。片内

13、集成振荡器与外部晶体的操作频率范围为130 MHz,与外部振荡器的操作频率范围高达50MHz。3.2.1 内部原理框图 3.3电源电路模块设计3.3.1、电源电路:由于步进电机的电压和驱动电路需12V,以下为12v和5v电源电路。3.4超声波检测系统设计传感器是实现测量及控制的首要环节,一般传感器有模拟式和数字式两类,模拟式传感器,在和计算机及数字化仪器相连的时候必须采用A/D转换器把模拟量转换为数字量,且易受电磁干扰,不利于远距离传输。数字式传感器直接将待测量转换为数字量输出,其输出信号抗干扰能力强,功耗小,可与数字设备直接连接。数字式传感器的这些特点,特别适合应用于水情遥测系统中。但限于成

14、本控制本设计依然采用模拟传感器。目前主要测水位的液位传感器有浮子式水位传感器、水位跟踪式传感器、超声波水位传感器、雷达激光水位传感器,压力式水位传感器等。下面是一些主要水位传感器的简单介绍 3.4.1方案选择 、本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(2cm)超近,稳定的测距是此产品成功走向市场的有力根据!2 主要技术参数:1:使用电压:DC5V2:静态电流:小于2mA3:电平输出:高5V 4:电平输出:底0V5:感应角度:不大于15度6:探测距离:2cm-450cm7:高精度:可达0.3cm接线方式,VCC、trig(控制端)、

15、 echo(接收端)、 GND本产品使用方法:一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了模块工作原理:(1)采用IO触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是 超声波从发射到返回的时间测试距离=(高电平时间*声速(340M/S)/2。3.4.2超声波检测电路原理图1、发送电路接收电路3.5.1键盘显示板

16、原理图 3.6 步进电机工作原理步进电机是机电一体化的关键部件之一,被广泛应用于需要精确定位、同步、行程控制等场合。一、步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必须以脉冲电流来驱动。若每旋转一圈以200个励磁信号来计算,则每个励磁信号前进1.8 度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。二、步进电动机的励磁方式可分为全部励磁及半步励磁,其中全步励磁又有1相励磁及2相励磁之分,而半步励磁又称1-2相励磁。图为步进电动机的控制等效电路,适应控制A、B、/A、/B 的励磁信号,即可控制步进电动机的转动。每输出一个脉冲信号,步进电动机只走一步。因此,依序不断送出脉冲

17、信号,即可步进电动机连续转动。分述如下:相励磁法:在每一瞬间会有二个线圈同时导通。因其转矩大,振动小,故为目前用最多的励磁方式,每送一励磁信号可走1.8 度。若以2 相励磁法控制步进电动机正转,其励磁顺序如图所示。若励磁信号反向传送,则步进电动机反转。3.6.1 步进电机结构图1.1 反应式步进电机1.2 永磁式步进电机3.6.2 线圈通电顺序相顺序从0 到1 称为一步,电机轴将转过18 度,01234 则称为通电一周,转轴将转过72 度,若循环进行这种通电一周的操作,电机便连续的转动起来,而进行相反的通电顺序如4321 将使电机同速反转。通电一周的周期越短,即驱动频率越高,则电机转速越快,但

18、步进电机的转速也不可能太快,因为它每走一步需要一定的时间,若信号频率过高,可能导致电机失步,甚至只在原步颤动。3.6.3步进电机的控制(1).步进电机的正反转控制在步进电机转动的过程中改变绕组的励磁顺序可改变转动方向.(2). 步进电机控制系统框图一般一个完整的步进电机控制系统包括控制器,驱动器,电机三部分.(3).步进电机的现场应用驱动电路综合系统使用的是小型步进电机,对电压和电流要求不是很高,为了说明应用原理,故采用最简单的驱动电路,目的在于验证步进电机的使用,在正式工业控制中还需在此基础上改进。一般的驱动电路可以用下图所示的形式。1.9 一般的驱动电路在实际应用中一般驱动路数不止一路,用

19、上图的分立电路体积大,很多场合用现成的集成电路作为多路驱动。常用的小型步进电机驱动电路可以用ULN2003或ULN2803。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类低速小功率驱动的系统。ULN2003 由8组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动8 组负载的能力,为单片双极型大功率高速集成电路。ULN2003 内部结构及等效电路图如下图所示:图.2.0 3.64步进电机的驱动电路: ULN2803A 8个NPN达林顿晶体管,连接在阵列非常适合逻辑接口电平数字电路(例如TTL,CMO

20、S或PMOS上/ NMOS)和较高的电流/电压,如电灯,电磁阀,继电器,打印锤或其他类似的负载,广泛的使用范围:计算机,工业和消费应用。所有设备功能由集电极输出和 钳位二极管瞬态抑制。 该ULN2803是专为符合标准TTL,而制造ULN2804适合6至15V的高级别CMOS或PMOS上。该电路为反向输出型,即输入低电平电压,输出 端才能导通工作3.7 直流电机工作原理1.直流电动机的工作原理:实质上是一台装有换向装置的交流电动机;(1) 原理:带电导体在磁场中受到电磁力的作用并形成电磁转矩,推动转子转动起来(2) 特点: a、 外加电压并非直接加于线圈,而是通过电刷和换向器再加到线圈b、 电枢

21、导体中的电流随其所处磁极极性的改变方向,从而使电磁转矩的方向不变。c、 电枢电动势反电势(与I反向);d、 电磁转矩驱动转矩(与n同向)(说明:直流电机是可逆的,它们实质上是具有换向装置的交流电机)3.7.1 结构图3.7.2 直流电机驱动电路第4章 软件设计4.1系统软件部分概述 本系统的软件设计,是基于嵌入式系统程序设计的前后台设计思想,即传统的主函数加中断的程序设计思想,整个系统的运行是在一个while(1)加上若干个中断服务程序。前台的程序设计,使用方便、简单、思路很清晰。 本系统的程序设计是基于常用的嵌入式系统软件开发平台ADS1.2,这个开发平台的界面十分友好,使用非常方便。 4.

22、1.1 ADS1.2的介绍ADS是ARM公司的集成开发环境软件,他的功能非常强大。他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级。ADS包括了四个模块分别是:SIMULATOR;C 编辑器;实时调节器;应用函数库。 ADS的编译器调试器较SDT都有了非常大的改观,ADS1.2提供完整的WINDOWS界面开发环境。C 编译器效率极高,支持c以及c+,使工程师可以很方便的使用c语言进行开发。提供软件模拟仿真功能,使没有Emulators的学习者也能够熟悉ARM的指令系统。配合FFT-ICE使用,ADS1.2提供强大的实时调试跟踪功能,片内运行情况尽在掌握中。AD

23、S1.2需要硬件支持才能发挥强大功能。目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE。而简易下载电缆不能支持ADS1.24.2系统流程图: 开始 GPIO引脚设置,定时器捕获以及键盘显示引脚设置 主程序(键盘输入,步进电机驱动,直流电机驱动) 中断程序返回4.3调试与分析 (1)、键盘输入模块:程序实现的是想输入每分钟电表要发出脉冲的个数,即我们所需要的恒定流量的大小。子程序主函数见主程序:(2)、超声波脉冲捕获模块:通过定时1的cap1.0和cap2.0对接受的脉冲进行捕获,之后进行键盘显示。 (3)、PID算法模块:通过键盘模块中输入的流量大小

24、与水表脉冲捕获到的脉冲数进行PID公式进行PID调整,然后在调节步进电机的转动,来实现恒流量。子程序函数见主程序:(4)、步进电机转动模块:通过前面计算出来的误差大小来控制步进电机的正反转,从而该变水阀的开度,最后实现恒定流量输出。(5)、直流电机转动模块:通过计算之后比较出差值控制点的转动与停止进而控制液位高度,与步进电机相互作用,保证工程要求的高度。第5章 系统测试5.1测试条件5.2测试仪器5.3测试结果5.4测试小结 附录: A 程序清单:/*Copyright (c)* Guangzou ZLG-MCU Development Co.,LTD.* graduate school* *

25、-File Info-* File name:main.c* Last modified Date: 2004-09-16* Last Version:1.0* Descriptions:The main() function example template*-* Created by:Chenmingji* Created date:2004-09-16* Version:1.0* Descriptions:The original version*-* Modified by:* Modified date:* Version:* Descriptions:*/#include conf

26、ig.h#define key 15uint32 w=0;uint8 digitable11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80;uint8 selectable8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uint8 T0Flag = 0;uint8 DATA08;uint8 setdata=30,x=0,k=0,SF=0,R=0;uint32 TK = 0x09,M=0,T1=0;uint32TIME=0,DISTANCE=0,i=0;uint32CAP1_1=0,CAP1_2=

27、0;/*延时程序*/void DelayNS(uint8 dly);/*定时器0设定*/ void Timer0(void);/*定时器1设定*/ void Time1(void);/*IRQ中断服务程序*/ void _irq Timer0_IRQ(void);/*IRQ中断设置*/ void IRQ_Init(void);void _irq Timer1_CapInt(void); /*PWM初始化*/voidPWM_Init(void); /*SPI设定*/ void SPI(void); /*发送设置*/ uint8 MSEND(uint32 data);/*二进制转化为十进制*/ v

28、oid ZH(uint32 num,uint8 wei); /*键盘显示*/ void key_display (void); /*计算距离*/ void distance (void); /*MAIN主程序*/ int main (void) PINSEL0 = (PINSEL0&(0XC0FF03)|0X809502);/P0.4,P0.5,P0.6为SPI功能 P0.0选择PWM1功能 P0.11 接CAP1.1 PINSEL1 = (PINSEL1 & (0X0C)| 0X04);/p0.17接CAP1.2 IRQ_Init( ); SPI( ); Timer0( ); Time1(

29、); IRQEnable( ); PWM_Init(); PWMTCR = 0x09; / 启动PWM输出 while(1) distance(); key_display(); return 0;/*函数*/*/ /*计算距离*/ void distance (void) DISTANCE=T1;/*17000/Fpclk;/计算距离 /*TIME1捕获IRQ中断服务程序 */void _irq Timer1_CapInt (void)if(T1IR&0x01)!=0)/ MR0中断服务T1IR = 0x01; VICVectAddr = 0x00;/ 向量中断处理结束T1CCR = (1

30、3)|/ 设置CAP1.1上升沿捕获(1 5)|/ 允许产生中断(1 7)|/ 设置CAP1.2下降沿捕获(1 8);/开捕获elseif(T1IR&0x20)!=0)/ CR1中断服务CAP1_1 = T1CR1;T1IR = 0x20;if(T1IR&0x40)!=0)/ CR2中断服务CAP1_2 = T1CR2;T1IR = 0x40;T1TC=0;T1=CAP1_1-CAP1_2;CAP1_1 = 0;CAP1_2 = 0; VICVectAddr = 0x00;/ 向量中断处理结束/*定时器1设定*/ void Time1(void)T1PR = 0;T1CCR = (1 3)|/

31、 设置CAP1.1上升沿捕获(1 5)|/ 允许产生中断(1 7)|/ 设置CAP1.2下降沿捕获(1 0;dly-) for(i=0;i50000;i+); /*二进制转化为十进制*/ void ZH(uint32 num,uint8 wei) DATA0wei = num%10; DATA0wei+1 = num/10; return; /*IRQ中断设置*/ void IRQ_Init(void) VICIntSelect = 0x00000000; VICVectCntl1 = 0x24; VICVectAddr1 = (uint32)Timer0_IRQ; VICVectCntl0

32、= 0x20|5; VICVectAddr0 = (uint32)Timer1_CapInt; VICIntEnable = (14|15); /*定时器0设定*/ void Timer0(void) T0TC = 0; T0PC = 0; T0MCR = 0X03; T0MR0 = Fpclk/400; T0TCR = 0X01; /*TIME0 IRQ中断服务程序*/ void _irq Timer0_IRQ(void) T0Flag = 1; T0IR = 0X0F; VICVectAddr = 0; /*PWM初始化*/void PWM_Init(void) PWMTC = 0; /

33、定时器初值为0 PWMPC = 0; / 不分频 PWMPCR = 0X200; / PWM1为单边延输出 PWMMCR = 0X01; / PWM0匹配时复位 PWMMR0 = Fpclk/10; / 设置PWM周期 PWMMR1 = PWMMR0/2; / 设置PWM的占空比 PWMLER = 0X03; / 使能PWM匹配0、1锁存 PWMTCR = 0X09; / PWM使能,启动PWM定时器 /*SPI设定*/ void SPI(void) PINSEL0 = (PINSEL0&(0X0FF00)|0X05500); S0PCCR = 0X08; S0PCR = (03)| (14)

34、| (15)| (06)| (07); /*发送设置*/ uint8 MSEND(uint32 data) SPI_SPDR = data; while(SPI_SPSR&0X80) =0); return(SPI_SPDR); /*键盘显示*/ void key_display (void) if(T0Flag=1) while(w=400) if(M=0) ZH(setdata,0); ZH(0,2); ZH(0,4); ZH(DISTANCE,6); w = 0;待添加的隐藏文字内容2 if(SF) SF = 0; else SF = 1; if(M=0) x = DATA0k; else if(k=R) if(SF=0) x = 10; else x = DATA0k; else x = DATA0k; w+; T0Flag = 0; MSEND(digitablex); MSEND(selectablek); if(IO0PIN & key) !=0) if(TK = k) switch(TK) /*修改键*/ case 0:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号