1引言
在工业控制现场,常常需要采集大量的现场数据,如电压、电流、温度、湿度、气压等,并将这些数据采集模块采集的数据传输到主机进行处理,由主机根据处理的结果,将控制信号传输给现场执行模块进行各种操作。目前数据的传输基本是基于有线的网络,如RS485,CAN等。这些有线的网络一般具有成本比较高、维护不方便等缺点。而无线传输相对具有一定的优势,如成本低、可靠性高、维护方便等。本文介绍一个基于PTR2000无线数据采集系统。通过本系统,不仅能了解数据采集的一般过程以及一般数据采集系统的构成,还能了解PTR2000模块、ADuc812单片机、USB100模块的功能。该系统最高传输速度可达19.2 kb/s。
2系统原理
该系统由工控机、USB100、AT89C51单片机、PTR2000(2块)、ADuc812单片机构成。
2.1ADuc812高性能单片机
AnologDevice公司的ADuc812高性能单片机由与 8051兼容的内核[1]、片内外围设备、电源单元和模拟单元组成。8051兼容的内核额定的工作频率是12 MHz(最大可达16 MHz),3个16 b定时计数器,功能包括看门狗定时器、电源监视PSM、高速ADC以及DMA控制器。片内有8 kB的闪速/电可擦除程序存储器,640 B的闪速/电可擦除数据存储器和256 B的片内数据RAM,支持16 MB的外部数据存储空间和64 kB的外部数据寻址空间,为多处理器接口和I/O扩展提供了32条可编程的I/O口线,端口3有高电流驱动能力,同时具有标准的UART接口和可配置的I2 C端口或SPI端口。模拟单元包括8通道、高速(200 kb/s)自校准12 b ADC、片内4OPPM/C电压基准、2个电压输出DAC和片内温度传感器等,可构成一个强大的12 b数据采集系统。
2.2USB100通用串行总线协议模块
USB100是基于ASIC设计的,内部封装了USB1.1全部协议以及多达384 B的发送缓冲区和128 B的接收缓冲接口,对USB接口的操作如同对外部存储器操作一样方便,由USB100模块完成全部协议的转换和封装,使开发 过程变得十分简单。
各管脚说明如下:
P1~P9,P16,NC:空脚。
P10,VCC:输出,+5 V输出,提供给外部MCU使用,最大400 mA。
P11,USBVCC:输入,USB接口的电源脚。P12~P13,D+,D-:输入/输出,USB数据线。P14~P15,GND:电源地。
P17,RXE:输出,高表示模块没有数据输出;低表示模块有数据输出,可以读数据。
P18,TXE:输出,高表示模块发送缓冲区已满;低表示发送缓冲区为空,可以发送数据。
P19,WR:输入,将8 b并行总线上的数据锁存入内部缓冲区。
P20,RD:输入,允许内部接收缓冲区数据通过8 b并行总线读出。
P28~P21,D0~D7:8 b双向数据线,他是一个8 b并口,USB100通过他与单片机交换数据。
USB100模块的控制时序:
发送时序当单片机检测到USB100模块TXE为低时,表示内部发送缓冲区允许发送数据到USB端口,可以 将数据通过8 b数据总线发给USB100模块,发送数据锁存由WR控制,USB100模块TXE为高时,禁止发送数据。
接收时序当单片机检测到USB100模块RXF为低时,表示内部接收缓冲区有来自USB端口的数据,可以通过8 b数据总线将数据读入发给USB100模块,接收数据锁存由RD控制,接收时序如图5所示。
2.3PTR2000无线传输模块
PTR2000是一个小型、超低功耗无线数据收发模块。 该模块工作频率为国际通用的数传频段433 MHz[3],采用了FSK调制,抗干扰能力强,采用了DDS+PLL频率合成技术,频率稳定性极好,灵敏度达到-105 dPm,最大发射功率为+10 dPm,工作电压2.7~5.25 V,具有2个工作频道,工作最高速度可达19.2 kb/s(也可工作在其他频率,如9 600 b/s),可直接与CPU串口使用如8031等,也可以接计算机RS232串口,软件编程非常方便。由于该模块采用了低发射功率、高灵敏度设计,使用无需申请许可证。
各管脚说明如下:
P1:VCC,电源输入端,接2.7~5.25 V。
P2:CS,频道选择,CS=0选择工作频道1,即433.92 MHz;CS=1选择工作频道2,即434.33 MHz。
P3:DO,数据输出。
P4:DI,数据输入。
P5:GND,接地端。
P6:PWR,节能控制,PWR=1,正常工作状态;PWR=0,待机微功耗状态。
P7:TXEN,发射接收控制,TXEN=1模块处于发射状态,TXEN=0模块处于接收状态。
3采集系统的编程
3.1单片机ADuc812编程
程序在初始化了各种参数以后,开始不断循环,查询A/D端口,将各路A/D端口的数据不断采集,并通过串口输入PTR2000,由PTR2000将数据传输出去;同时该模块不断查询串口,若有由PTR2000通过串口输入的数据,及时将数据输出到D/A端口。本程序采用C语言编程,主程序为main()。
注:FFH开始采集数据标志;EEH结束标志。
3.2AT89C51单片机编程
AT89C51负责传输数据,一方面他通过PB口与USB100的并行数据口相连,负责从USB100接收或者将数据传输给USB100模块;另一方面AT89C51通过串口与另一块PTR2000相连,负责将从USB100模块接收的数据传给PTR2000,或者将从PTR2000模块接收的数据传给USB100模块。他的程序与ADuc812的程序相似,区别在于他没有开始和结束标志,并且他查询的是USB100模块是否有数据输出和串口是否接收到PTR2000传来的数据。
3.3工控机编程
在工控机上安装好USB100模块的专用驱动程序后,USB100即可作为一个标准的设备来编程,可以按照与串口完全一样的方法进行编程。在本次设计中采用了VC编程,在VC中采用MSComm控件,将USB接口作为一个标准的串口使用。程序分为两部分:一部分是USB接口程序;另一部分是应用程序部分。将由ADuc812采集到的A/D数据用直观的图像的方法显示出来。
4结语
本设计介绍的无线数据采集系统对于其他无线数据传输的应用具有一定的参考价值,通过适当改变硬件配置,以及适当修改程序,可以应用于远程抄表、远程监控等领域。