引言
为适应防汛和水利调度的现代化、信息化要求,水文监测系统的建设进入了数字化、网络化阶段。在许多重点水域(重点河流、湖泊、水库、水利工程等),往往需要监测多个水文数据才能满足实际需求,包括流速、水位、水质、流量、温度、降水量等。这就为多路数据采集提出了应用需求。另外,大坝上下、河流交汇处、汛情多发地段、引水隧洞等不同地段水文参数往往也各不相同,这就需要进行多点组网实时数据采集和传输。为此设计了一套数据采集和无线传输系统。
系统总体设计
该系统由若干个监测点组成无线监测网络,如图1a所示。监控中心向各监测点发出的各项指令由无线电台发送出去,各监测点在接收到指令后先进行身份识别,当确认本身被选中时便开始执行相应的指令,在执行完指令后,通过无线电台把采集到的数据返回监控中心。其他没被选中的监测点则处于监听状态。图1b为各监测点的原理框图。各监测点子系统由3路传感器(水位、雨量、流量)、ATmega16单片机、RS-485接口电路和无线数传电台组成。3路传感器输出的信号经信号调理电路送入ATmega16单片机,它利用内部自带的A/D转换器采集3路传感器的数据,将其经由RS-485接口电路传送给无线数传电台。
系统硬件实现
ATmega16单片机主要特征及片内A/D转换器
ATmega16单片机芯片内集成了较大容量的非易失性程序和数据存储器以及工作存储器;丰富强大的外部接口性能;特殊的微控制处理器性能。其主要优点是芯片本身自带看门狗电路,片内程序Flash及8通道复用的10位A/D转换器;通用I/O接口具有很强的驱动能力,可省去部分驱动电路,节约了系统成本;附带同步和异步串行接收和转发器(USART),可以实现与PC机和无线电台的联网通讯功能。ATmega16有一个10位的逐次比较的A/D转换器,ADC与一个8通道的模拟多路复用器连接,能够对以PORTA口作为ADC输入引脚的8路单端电压输入进行采样。
多路数据采集的实现
A/D多路数据采集系统是本设计的关键之一,它主要由微处理器、A/D采集处理部分、参数设置、输出单元和通讯接口等功能模块组成。ADC包括样保持电路,以确保输入电压在ADC转换过程中保持恒定。ADC功能单元有独立的专用模拟电源引脚AVCC供电。AVCC和VCC的电压差别不能大于0.3V。ADC转换的参考电源可采用外部的参考电源,外部参考电源由引脚AREF接入,同时AREF引脚外部并接一个0.1μF的电容来提高ADC的抗噪性能。
采集的3路数据是0-15mA的电流信号,通过在输出端加上匹配的负载电阻,可将电流值转换为电压值,电路连接如图2所示。
放大后的模拟信号利用微处理器提供的内部ADC进行模数转换处理,并将10位转换结果放在ADC数据寄存器ADCH和ADCL中。在连续采样模式下,ADC连续取样,并不断更新ADC数据寄存器。通过读取ADC内的数据即可得到所要采集数值的二进制值。
单片机与数传电台的通信
RS-232串口标准是低速率串行通讯中的单端标准。RS-232采取不平衡传输方式,即单端通讯,其收发端的数据信号都是相对于地信号的,所以共模抑制能力差,再加上双绞线的分布电容,传输距离最大约为15米。由于本系统需要工作在室外,气候环境相对恶劣,且需要长距离传输,针对RS-232串口的局限性,所以系统采用具有极强的抗共模干扰能力的RS-485接口。单片机的RS-485接口电路原理图如图3所示,RS-485的A、B为总线接口,DI是发送端,RO是接收端,/RE、DE为RS-485收发使能端,由单片机的PD4口控制。[page]
通信网络
监控中心和若干监测点的数传电台联网组成无线监控网络,通过应答式通信协议可实时监测不同地域的水情。本系统采用GD230V-8电台,该电台的主要参数如下:(1)调制方式:MSK/FSK;(2)接收灵敏度:≤0.25μV;(3)输出功率:8W ;(4)频率范围:220-240MHz;(5)信道速率:2400/1200bps(MSK方式),0-1200bps(FSK方式);(6)数据接口:异步传输,EIA-232/ EIA - 485 /TTL。
监控中心在向各监测点发出指令前先发送一组地址信息,各监测点收到地址信息后首先需要进行身份,如果收到的地址信息与自身相符便给监控中心返回一应答信号,监控中心收到应答信号后即可发出各项指令,被选中的监测点便开始执行相应的指令,并把数据传回监控中心,从而实现多点联网监测。
系统软件设计
软件编程也是实现该多路数据采集的关键之一,本文主要介绍数据采集部分。系统上电后执行初始化程序,复位各个端口。当处于监听状态时,各监测点数据采集模块处于3路自动巡回监测状态,系统开始对0~3通道间隔1s时间采集一次电压值;当接收到监控中心发送来的指令便选中相应的采集通道执行数据采集,调用数字滤波子程序进行滤波得到精确的数值。再通过数据转换和处理后送微处理器的数据存储器,等待数传电台的读取,其工作流程如图4所示。
A/D采集子程序
结束语
ATmega16单片机本身带有多路10位精度的逐次比较式A/D转换器,在该多回路数据采集器系统中可以显著地降低成本。由于ATmega16的A/D转换器转换速度比较高,可以采取一些数字滤波算法来得到较为精确和稳定的转换结果。利用C语言编程,使该多回路数据采集器系统的硬件设计变得简单,A/D采集处理编程也更为容易,大大缩短了开发周期。该方案可应用在河道水文、湖泊水库和沿海潮汛潮位等监测项目上,经山西某水文站实际使用,结果表明:系统工作稳定可靠,具有建网费用低、建设周期短、维护量小等优点。
关键字:ATmega16 水文参数采集 无线传输系统
引用地址:
基于ATmega16的多路水文参数采集及无线传输系统
推荐阅读最新更新时间:2024-03-16 13:32
ATmega16熔丝位设定
特别注意,要使用外部晶体,必须设置熔丝,否则芯片会使用默认的内部晶体。 1、M16的出厂设置 内部RC 振荡1MHz 6 CK + 65 ms CKSEL=0001 SUT=10 JTAGEN=1 默认状况下JTAG已编程(即PC2-PC5 为高电平不可以被拉低) ,如果PC2- PC5要用作普通IO口,需要取消JTAG编程,或者在程序开始时执行以下命令: MCUCSR |= 1 JTD; MCUCSR |= 1 JTD; //注意要连续操作两次。恢复JTAG功能也要连续两次操作。 2、熔丝位配置说明 2.1低位(时钟及启动时间设置) 2.1.1、 BOD(Brown-out
[单片机]
ATMEGA16单片机实现的数控频率计原理图及程序
//包含所需头文件 #include avr/io.h #include avr/interrupt.h #include avr/signal.h /*------宏定义------*/ #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //数码管字型表,对应0, 1, 2, 3, 4, 5, 6, 7, 8, 9// uchar Table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar Data ={0,0,0
[单片机]
ATMEGA16单片机Timer1的OC1A脚输出占空比可调的PWM信号
采用快速PWM方式,通过按键设置OCR1A的值,从而改变占空比; 当数值超出界限时,以了LED和LCD的方式报警; 输出经过滤波可以得到直流信号,改变占空比,输出不一样。 仿真原理图如下 单片机源程序如下: #define MAIN_C #include includes.h /***************************/ /*PWM*/ /*晶振为4MHz*/ /*利用Timer1的OC1A脚输出占空比可调的信号*/ /*通过按键控制OCR1A的值*/ /***************************/ #define PwmOut PD5 //A通道的PWM输出 #define
[单片机]
基于ATmega16单片机的干式变压器智能温度控制器
简介:先容一种由ATmega16单片机构成的干式变压器智能 控制器。该控制器可同时检测4路温度,误差小于±0.5℃,现场运行稳定;用户可通 过人机接口控制变压器冷却风机启、停,设定报警及跳闸阀值。 1工作原理 温控仪由温度监测、信号处理、输出控制三部分组成。系统框图如图1所示,它通过预埋在变压器三相绕组中的三只铂电阻传感器获取绕组温度值,经信号调理电路处理后直接送进控制器的A/D转换输进端。微控制器根据信号数据及设定的各种控制参数,按照嵌进的软件控制规律执行计算与处理,自动显示变压器绕组的温度值、输出相应的控制信号、控制风机的启停,并根据当前状态输出正常、报警和跳闸信号等,同时将各种数据通过RS-485传到上位机实现集中
[单片机]
基于nRF24Z1的无线数字/模拟音频传输系统
当前,随着居住和办公环境空间的增长,音频的布线在大型会议室、汽车等场所越来越难以实现,成本越来越高,迫切需要无线传输高质量的音频。CD音质音频的传输速率就达到1.5Mbps以上,因此对无线系统提出了更高的带宽和距离要求。 ISM 2.4GHz (Industrial Scientific Medical 2.4GHz-2.4835GHz)频段是全球开放的公用频段,具有高带宽和低成本实现的优势。选用具备高带宽特点的ISM2.4GHz的传输系统更能适应CD音质音频的传输。而2.4GHz的其他系统,如监牙、WLAN等存在成本过高或距离受限等缺点,所以本系统使用了专用的ISM音频无线收发芯片nRF24Z1。nRF24Z1提供了标准的工业
[应用]
用89S51制作简易并行编程器ATmega16
;***********************ATmega16(L)简易并行编程器**********************/ ;说明: ;用于没有烧写ATmega16并行编程器的朋友,初用ATmega16的工程师在串行 ;编程时写错熔丝位,及加密位,造成不能再应用串行编程,构成不便,没并行 ;编程将无法再使用,做了一个简易的并行编程器(很简单,用万能板搭焊即可), ;将的芯片加密位及熔丝恢复出厂默认值及恢复串行在线编程功能(ISP)。 ;********************************************************************** ;使用说明: ; 本 电路 有1按键(ke
[单片机]
AVR ATMega16在段式液晶上显示红外码
硬件:ATMega16(8MRC)+HT1621+一体化红外接收头 思路:红外解码采用中断捕捉方式(NEC编码),显示用液晶驱动HT1261 程序如下(WinAVR GCC环境编译): #include avr/io.h #include avr/delay.h #include avr/signal.h #include avr/interrupt.h #include avr/pgmsPACe.h #define HT1621_BIAS 0x29 // 设置LCD偏压发生器为1/3偏压,4个公共端 #define HT1621_RC256K 0x18 // 设置系统时钟源为片内RC(
[单片机]
ATmega16延时程序
使用ATmega16A单片机的延时程序是经常遇到的情况,有的时候没有办法准确的确定延时的长度,使用定时器的有太浪费,可以使用这个不太精确的延时程序,适用于各种晶振的情况下, #define FSOC 8 // //晶振频率宏定义,使用8MHZ晶振,可以使用其他频率的晶振 void Delay_1ms(void) { uint i; for(i=1;i (uint)(FSOC*124);i++) { ; } } void Delay_nms(uint n) //延时n*1ms { uint i=0; while(i n) { Delay_1ms(); WDR();//看门狗 i++; } }
[单片机]