MAXQ3210集成了用于环境监视的外围部件。当环境条件不安全和发生变化时,它能够通过压电喇叭驱动器和大电流LED驱动器等外围部件进行告警。这些外围部件在简单的保安系统、烟雾警报器、温度监视器和运动检测器等应用中很实用。
此外,MAXQ3210为环境监视电路提供了多种接口选项。其内部的电压比较器可以监视外部电路输出的随外部环境变化的电压值。其外部电路可以很简单,比如测量温度的热敏电阻;也可以较复杂,比如测量电容充电时间的斜率式模数转换器(ADC)。
除了电压比较器外,MAXQ3210也可以通过数字I/O口监视外部电路。例如,当环境条件超出范围时,外部监视电路可以通过中断引脚向MAXQ3210发送中断请求信号。MAXQ3210也可以使用串行通信协议,通过数字I/O口与测量距离和照明情况的外部IC电路进行数据传输。
图1. MAXQ3210的环境监视主程序循环在大部分时间内处于休眠状态,定期唤醒后去读取并分析传感器输出。
启动后,微控制器首先要经过一个初始化过程,将相关寄存器和配置位按照应用要求进行设置。如果微控制器初次加电,可能还需要一些额外的操作,例如制造商设定的一些测试和配置。经过初始化和加电检测后,应用程序进入主循环体,开始测量和响应外部环境的变化。首先,应用程序通过电压比较器或数字I/O口读取环境信息,并分析环境条件是否超出范围。接下来,进行系统诊断,如检测外部电路、测量电池电压、核实存储在数据EEPROM中的性故障信息等等。随后,应用程序检查状态信息,其中包括告警(如低电池)和提示信息(如温度过高)。如果环境情况要求执行一些动作,有以下一些选项我们将在下面讨论:驱动喇叭发声,使LED闪烁,通过I/O引脚和其他设备通信,或者简单地把告警信息存入数据EEPROM以便后续分析。
该环境监视应用的主循环体在下面几段中给出。用于环境监视的状态机非常简单:获取传感器输出并分析它是否超出了某种门限(温度太高,空气中烟雾浓度太大等)。如果超出边界,则发出告警。
MainLoop: move DP[0], #CONDITION_FLAG ; see if we are alarming move ACC, @DP[0] ; read the alarm flag jump z, MainLoop_NoSignal ; skip next code if not alarming ; ; If our condition is above threshold, see if it is ; time to sound the horn ; call CheckSignalTime ; see if it is time to sound the horn jump nz, ReadAndSleep ; back to sleep if no signal call SignalCondition ; sound horn, light LEDs, etc. jump ReadAndSleep ; let's go to sleep now ; ; In a real sensor, we still want to take readings even if we are ; signaling. We need to check to see if environmental conditions ; have returned to normal. ; MainLoop_NoSignal: call CheckForSelfTest ; time to run periodic diagnostics? jump z, ReadAndSleep ; skip if not time yet call SelfTest ; perform self diagnostics ReadAndSleep: call ReadSensor ; get a 'sensor reading' call AnalyzeSensor ; see if condition out of threshold jump Sleep ; put the device into low power mode其中的SelfTest为系统诊断子程序。系统诊断子程序用于监视电池电压和外部电路的异常情况。在SelfTest中也很适合实现一个计时器,用它来跟踪MAXQ3210投入运行的时间,从而计算外部传感器系统的工作寿命。
该应用程序说明了MAXQ微控制器外围部件的易操作性,以及如何节省代码的存储空间和执行周期。例如,仅需用一个单比特来开关喇叭。
SoundTheHorn: move HORN_DRIVER, #1 move LC[0], #10 call DelayMilliseconds move HORN_DRIVER, #0 ret
定期检测外部环境条件时,应用程序可以用两种方式唤醒处于低功耗停止模式的MAXQ3210,使其执行代码。这两种方式分别是外部中断或定时器唤醒。在等待外部电路触发条件的应用中,外部中断方式比较合适。比如,在等待开门或热敏电阻上的压降超出门,就应该采用外部中断。
唤醒定时器是另外一种使MAXQ3210脱离停止模式的方式。唤醒功能在前面的应用中已有讨论:外部监视电路唤醒MAXQ3210,使其检测外部环境条件,必要时进行响应,然后再返回到停止模式。图2示出了这种工作方式的电流消耗模式。从中可以看出,在大部分时间内,MAXQ3210微控制器处于低功耗休眠模式。当MAXQ3210从休眠模式醒来后电流消耗增大。此时正是高性能MAXQ核的用武之处。MAXQ3210能够更快地完成任务,在高功耗状态下停留的时间更短,而更多的时间处于低功耗休眠模式。
图2. 监视应用程序在大部分时间内休眠以节省功耗,它定期醒来并快速运行。
由于电池是大多数监视应用中的关键部件,检测电池是否快用完很重要。MAXQ3210通过检测一个寄存器状态位来判断电池电压是否低于门限。这个门限被固定于7.7V,这正是9V电池濒临耗尽时的电压。在这个电平下,电池还有一定的电量,可保障MAXQ3210继续运行一段时间。低功耗应用系统,比如烟雾警报系统,可以在电池电压低于门限后工作几天或几周,并不断发出低电压告警信号。
为了防止家庭或办公室遭受水灾,可以为地下室安装水位监视系统。该系统可以利用湿度传感器或类似于卫生间冲洗水箱的装置来检测水位。当水溢出或超过一定水位时,传感器或浮漂触发外部中断,MAXQ3210鸣喇叭,发出警报。此外,MAXQ3210可以和公司或家庭网络通信,把警报发给公司或家庭成员。
温度监视是另一种可能的应用。超市冰柜或运输车冷冻车厢内的温度不能过高。为此,可以用简单的热敏电阻和MAXQ3210构成监视系统。当冷却器内的食物温度超过安全界线时,系统发出警报。这种监视系统有许许多多的用途,比如,用于监视网络设备、实验室设备、保藏艺术品、饮料以及其他易腐烂物品的温度。
监视应用的目的也可能是为了方便用户。当宠物、小孩或入侵者进入家庭的禁区时,由MAXQ3210构成的运动检测器可以向主人发出警报。当然,该检测器应该可以通过按钮来开关。
MAXQ3210也很适合实现一个辅助泊车装置。它可以根据距离探测电路测量的距离使喇叭发出不同的警报声音。这种系统需要一些配置和智能处理。在车库内停车时,系统能够帮助车主防止碰撞墙壁,但用户并不希望他们从探测电路前面走过时系统鸣喇叭警告。为此,可用软件实现延迟,当系统初次探测到移动时,软件可以让系统等待两秒钟看是否有进一步的移动。若无,这可能是有人在传感器前面走动。也可以通过按钮来开关系统;这样可以避免用户在车库内工作时系统不断地发出警告。
板上压电喇叭和LED可被用作应用中的测试信号和发生设备。默认状态下,压电喇叭输出经过阻尼的声音―响亮,但不刺耳。也可通过跳线来短路阻尼电路,使喇叭发出强的85dB音量。
MAXQ3210评估工具可以配合MAX-IDE使用。它支持MAXQ3210的硬件调试引擎,可进行源代码级的调试和监视内存。
图3. MAXQ3210评估工具配备有压电喇叭、LED和9V电池座,支持完整的应用开发。
MAXQ3210的另一个优点是高性能,低功耗。单周期MAXQ核和大量的寄存器空间允许应用程序更高效地保存数据并更迅速地执行任务。MAXQ3210在更多的时间内处于低功耗休眠模式,而执行代码的时间更少。
,MAXQ3210的电池监视功能和数据EEPROM便于实现灵巧、自我监视的应用。电池快耗尽时器件可警告用户。此外,系统还可跟踪其元件的寿命,实现有计划的设备更新。
值得注意的是,虽然本文只讨论了MAXQ3210在环境监视中的应用,实际上它的应用范围要广阔得多。利用其数据EEPROM、支持捕获、比较和PWM操作的16位定时器、以及高性能MAXQ微控制器核,MAXQ3210可以应用在许多领域。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。