电路功能与优势
理想情况下,无线测量节点具有低功耗、长距离特点,易于与不同传感器接口。通过配合使用ADI公司的三款器件,可以实现平均电流消耗<70 μA、距离接近1 km(无障碍)、数据速率达到每分钟传输的智能测量节点,同时维持16位ADC性能(见图1),使电路适合电池供电和自动化、远程检测等应用。
系统内包含的低功耗温度测量节点每分钟唤醒,测量温度并将结果以10 kbps速率发送到基节点,然后返回睡眠状态。基节点不断接收来自测量节点的数据包,并通过UART将信息发送到PC,以便在“超级终端”内显示。
ADuC7060精密模拟微控制器采用低功耗ARM7内核,拥有多种精密模拟功能。由于内置片上多路复用器、数字可编程增益放大器(PGA)、基准电压源、可编程电流源和24位Σ-Δ型ADC,该器件几乎可直接连接任何温度和桥式传感器。本例中选择的是4线式Pt100(100 Ω铂RTD)温度传感器。有关测量电路的详情请参阅应用笔记应用笔记 AN-0970
本应用选择的无线频段是低于1GHz的免执照ISM(工业、科研和医用)频段。 ADF7021 收发器支持431 MHz至478 MHz及862 MHz至956 MHz范围内的频段,因此是必然选择。该低功耗收发器所需的外部元件极少,可以轻松连接ADuC7060精密模拟微控制器,性能卓越。
ADP121 稳压器利用两节1.5 V电池提供2.5 V电源电压。该稳压器的极低静态电流(无负载时为11 μA)对尽可能延长电池寿命至关重要。
图1. 低功耗远程ISM无线测量节点(简化示意图:未显示去耦和所有连接)
电路描述
连接 ADF7020 ISM收发器和ADuC7060精密微控制器的是两条总线。两者均为串行双向总线:其中一条总线负责配置收发器,需要四个微处理器端口;另一条总线是数据总线,用于在控制器与收发器之间传输数据,该总线至少需要三个微处理器端口。在该应用中,使用的是两个端口,而非具有两个中断的单个双向端口。这样虽然简化了软件,但必须使用额外的二极管和电阻器,以分离输入和输出数据流。两个肖特基二极管的并联组合确保了低于200 mV的逻辑低电平。在相同封装中BAT54C有两个二极管(连接引脚1和引脚2从而得到并联配置)。ADuC7060上的所有数字端口均具有可编程上拉电阻;但也需要外部上拉电阻。对于10 kbps的数据速率,4.7 kΩ的电阻效果不错。
电路汲取的总电流取决于三个因素:个别元件在睡眠和活动模式中的要求、系统活动的时间以及收发器本身活动的时间。
个因素通过选择低功耗元件来解决,例如ADuC7060和ADF7020。第二个因素即地减少系统活动,可通过让系统尽可能长地处于非活动状态来实现。可以考虑在整数与浮点算法间进行折衷,许多情况下整数就足够了,其执行时间更短,因此更省电。一个因素即缩短传送时间,可部分通过使用开销的协议实现,但更主要的是使用ADF7020,该器件具有极高的接收器灵敏度和出色的带外抑制性能,地提高数据包含有正确数据的概率。
代码说明-概述
系统大部分时间处于深度睡眠模式中,功耗为50 μA至60 μA(取决于环境温度)。定时器2每秒将系统唤醒。每60秒执行ADC测量,将结果线性化并发送出去。定时器2可将系统从深度睡眠中唤醒;其他三个定时器无此功能。定时器2是16位器件,表示它采用32 kHz时钟运行时每秒唤醒(睡眠模式内)。启动ADC后,系统进入暂停模式(参见ADuC7060数据手册)。这也是一个低功耗模式,尽管未低至深度睡眠水平。完成后ADC将系统唤醒。根据ADC结果计算温度值,将数据打包后发送。
打包其实就是将适当数据放置在缓冲器内。此时数据包含一个4字节浮点温度值和一个2字节CRC(循环冗余校验)。在更复杂的系统中,该数据之前还会添加节点地址标头、接收信号强度和其他信息。在将该缓冲数据发送至ADF7020收发器前,先发送一个8字节前导码(用于帮助同步接收节点)和一个3字节同步字。后者是一个的3字节数字,接收节点在接收数据包前会进行匹配检查。
接收端上的硬件非常相似;配置一个ADF7020收发器随时接收的同步字。收到同步字后便接收数据包。数据通过UART发送至PC。
图2中显示的是测量节点和基础接收节点主环路的流程图。
图2. 测量和接收节点主环路流程图
代码说明-ADF7020驱动器
ADF7020支持多种调制方案。本例中使用GFSK(高斯频移键控),该方案的优点是频谱效率。在此模式中,ADF7020在发送和接收时均产生数据时钟。时钟上升沿(DATA CLK)产生一个中断,使ADuC7060按图3所示将数据逐位地放置在输出端口上。输出所有数据后,芯片选择解除,ADuC7060重新进入深度睡眠模式。
在接收端上,ADF7020在接收到匹配的同步字后产生一个中断(INT/LOCK端口在九个时钟周期内保持高电平)。
该信号通知ADuC7060处理器准备接收数据包。从数据包接收的每一位均在ADuC7060内产生一个中断。在中断服务程序(ISR)中,读取位流并存储在缓冲器内。接收到数据包内的所有字节后,设置一个标志,指示新数据包已经收到。主环路现在可通过校验和确认数据包的有效性。然后处理正确和完整的数据包。本例中通过UART将以上信息发送至PC进行显示。如图4所示,同一ISR既可接收来自ADF7020收发器的数据,也可向其发送数据。
图3. 数据I/O时序
图4. 处理接收和发送数据的中断服务程序
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。