概述
MAXQ3210微控制器是一款功能强大的RISC微控制器,器件所具备的功能和特性使其非常适合电池供电的监控和音频报警系统。微控制器内部集成了5V至9V稳压器、压电扬声器驱动器和模拟比较器,大大降低了系统的元件数量。另外,停机模式、唤醒模式等多种低功耗特性使其在9V电池供电时能有效延长工作时间。
本文用笔记提供了一个利用MAXQ3210微控制器实现水位监测及音频报警的系统,该系统利用矿物质对水的电导率的影响来检测水位,并在必要时给出报警信号。本文介绍的方案还不能直接用作最终产品,只是说明有效利用MAXQ3210功能的案例。实例中使用的水位检测机制并未在极端环境下进行可靠性测试,也没有对其长期工作的有效性进行评估。本应用笔记提供的只是一个简单案例,可以对自来水进行有效的监测。
本应用笔记中的程序针对MAXQ3210编写,并进行了测试,也可以运行在包含类似资源的其它MAXQ器件,如MAXQ3212。例程开发环境是MAX-IDE 1.0版和MAXQ3210评估板修订版B版。关于评估套件的详细信息,请参见MAXQ3210EVKIT。
工作原理
本应用笔记将详细讨论MAXQ3210的功能及特性,MAXQ3210的内部比较器允许使用最少外围器件实现简单的水位监测系统。通过使用处理器的低功耗休眠模式和唤醒定时器,使电池供电监测报警系统在绝大部分时间处于停机模式,只是周期性地唤醒系统检测水位,判断是否发出报警信号。
以下部分说明MAXQ3210的一些功能及在本应用如何有效利用这些功能,并对这些功能的结构、设置进行说明。
水监测传感器探头
水监测传感器探头如图1所示,如上所述,该传感器不是针对最终产品设计的。它由一片塑胶材料固定屏蔽夹子形状的电极。电极之间的距离可以任选或由具体材料决定。传感器通过一个间距为0.1的4引脚连接器直接连接到MAXQ3210评估板的J4 (引脚9-P0.4、11-P0.5/CMPI和13-P0.6)。1.0M电阻(图中靠近连接器的导线部分)作为传感器电极的一个上拉电阻,该电阻直接焊接到连接器的一个引脚。
图1. 水监测探头
图2. 水监测原理图
水监测传感器探头与处理器的连接原理图如图2所示。传感器一端连接至MAXQ3210的内部模拟比较器输入端CMPI,P0.5。该输入还与1.0M电阻相连,电阻的另一端接处理器的端口引脚,P0.6。软件将P0.6配置为输出,并在系统初始化部分将其置为高电平。由于比较器具有高输入阻抗,这种配置在正常条件下使CMPI接近于VCC (例如,传感器电极没有浸入水中)。传感器的另一端连接至端口P0.4,P0.4配置为输出引脚并置为低电平。当两个传感器电极都浸入水中时,水的电导率强行比较器输入下拉至地。发生这种情况时,比较器输出CMPO改变。关于模拟比较器及其工作的详细信息将在本文的后续内容讨论。
停机模式的重要性
除断电状态外,停机模式是MAXQ3210的最低功耗模式。停机模式下禁止处理器内部环形振荡器、唤醒定时器(如果使能)以外的所有电路工作。片上时钟、定时器和外设电路都将停止工作,程序也会停止运行。一旦进入停机模式,MAXQ3210的绝大部分时间处于静止状态,其功耗主要由漏电流决定。结合唤醒定时器使用停机模式,可实现低功耗工作。
实际工作环境下,水位变化非常慢。因此,处理器在绝大部分时间内可处于停机模式,只需在较长的时间间隔内唤醒一次简单的传感器检测操作。实例中,选择一分钟作为传感器的采样周期。该时间间隔既不会错过报警,也能够有效利用处理器的停机状态,充分延长电池的使用寿命。如果这个周期对于特定的应用过长或过短,可将软件中的唤醒延时常数(WUDel)改为所要求的数值,然后重新编译程序。以下唤醒定时器周期公式给出了这个时间间隔的计算方式:
当处理器时钟控制寄存器的STOP位,CKCN.4,置1时,处理器立即进入停机模式。如发生以下任何条件,处理器将退出停机模式:
P1.1/RESET出现低电平有效复位(如果没有禁止)
上电复位(如果没有禁止)
P0.6/INT出现外部中断(如果使能)
唤醒定时器计时到0(如果使能)及中断被响应
处理器由于唤醒定时中断而退出停机模式不会影响处理器的配置,其中包括时钟控制位设置。外部复位引起的退出停机模式则不同,处理器将恢复到默认上电状态。因此,在进入停机模式之前,处理器应该初始化为标准工作状态,以便在退出停机模式时恢复到原配置。唤醒定时器中断及其中断服务程序(ISR)除了使处理器退出停机模式外,还将启动其它系统功能(如,检测传感器、使扬声器发声、低电池电压检测等)。
唤醒定时器
MAXQ3210的唤醒定时器是一个20位的定时器,可设置为系统时钟递减计数,也可以设置为对处理器内部环形振荡器计数。应用软件将初始值装入唤醒定时器寄存器(WUT),随后定时器从这个设定值开始递减计数。当定时器计数值达到0时,休眠周期结束,唤醒定时器控制(WTCN.1)寄存器的中断标志位(WTF)置位。如果中断使能,该标志将触发一次中断,使处理器退出中断模式。如果屏蔽中断,处理器将不退出停机模式。
通过WUT寄存器,处理器及其软件可访问20位定时器的前16位,低4位只允许定时器硬件访问。尽管如此,任何情况下只要软件对WUT寄存器进行写操作,其低4位也将清零。唤醒定时器的周期由以式给出:
唤醒定时器周期 = (源时钟周期) x WUT[19:4] x 16
其中WUT[19:4]是20位定时器的前16位。注意,由于在WUT寄存器没有包含定时器的低4位,周期数必须乘以16。通过使用这个公式,可看出一般在使用频率为8kHz的环形振荡器时,最大唤醒周期大约为131秒。上文中选择一分钟为休眠周期,将倒计数值30,000 (07530h)装载到WUT即可产生一分钟的休眠时间。假设唤醒定时器对环形振荡器进行计数。
配置唤醒定时器时需要对定时器控制寄存器进行一次写操作,将唤醒寄存器(WTE)的使能位WUTC.0置位以使能定时器。同时,唤醒定时器(WTCS)的时钟选择位WUTC.2必须置1,定时器才能对处理器的环形振荡器进行计数。因此,应用程序必须向定时器控制寄存器(WUTC) 写入十六进制数05初始化定时器。唤醒定时器标志(WTF)的WUTC.1位由定时器硬件置位,但必须由中断服务程序清除,以防止重复响应同一中断。
模拟比较器
MAXQ3210内置1位模数比较器及其2.5V的电压基准,这些电路是本应用的关键。比较器有两个输入端,+和-,如图2所示。比较器输出是两个输入端模拟电压之差的函数。本应用中,2.5V基准连接至“+”输入端,“-”输入端连接至传感器的一端。如图所示,“-”输入端通过一个1.0M电阻由设置为高电平的端口P0.5上拉至高电平。因此,在正常状态下,“-”输入端电压接近于5V,高于“+”输入端2.5V基准电压。比较器的极性选择(CPOL)位CMPC.1在本应用中设置为0。比较器输出结果CMO如下:
CMO = 0当(VREF<cmpi)时 <="" p="">
CMO = 1当(VREF>CMPI)时
由此可见,正常状态下比较器输出CMPO为0。当水监测传感器的电极浸入水中时,两电极之间的导电性将比较器输入拉至地电位。这种状态下,基准电压高于CMPI,比较器输出CMO变为高电平。由于比较器的高输入阻抗,正常情况(无报警)下,只有非常小的电流流入比较器输入端。当水监测传感器电极浸入水中时,水的电导率和1.0M电阻可以限制传感器电极之间的电流。
扬声器驱动
MAXQ3210提供了一个板上3引脚压电扬声器驱动接口,该接口可直接驱动压电扬声器。3引脚接口的引脚配置如下:
HORNB (扬声器铜片):这个输出连接至压电扬声器的金属电极。
HORNS (扬声器银片):这个输出连接至压电扬声器的陶瓷电极。当压电扬声器驱动使能时,这个输出为HORNB提供互补输出。
压电扬声器采用自驱动,使用扬声器控制寄存器的扬声器使能(HREN)位HRNC.0开启或关闭压电扬声器驱动器。当HRNC.0置1时,扬声器驱动器被激活,扬声器将发出声音报警。当HRNC.0位清零时,扬声器不发声。在本应用实例中,在传感器电极浸入水中时,扬声器将在一定的时间间隔内发出5声蜂鸣声。如果检测到低电池电压,扬声器将每次发出8声蜂鸣声,然后停止一分钟。这种模式将一直持续到电池电压过低导致系统复位,或外部触发复位(外部复位没有禁止时会发生这种情况)。
环形振荡器
MAXQ3210内置一个环形振荡器,作为系统上电复位或退出停机模式的默认时钟源。环形振荡器使能后立即开始振荡,不象晶体振荡器至少需要65536个时钟周期才能达到稳定状态。从停机模式唤醒时,如果系统延迟65,536个时钟,在没有执行指令(例如,没有任务运行)等待这个周期结束期间将会消耗大量功率。退出停机模式时,使用环形振荡器可以避免这种功耗。实际上,退出停机模式时,环形振荡器也需要4个时钟周期达到稳定状态,但与晶体振荡器相比,该时间间隔短得多。
为降低功耗,初始程序将环形振荡器配置为处理器的系统时钟。将环形振荡器选择(RGSL)位CKCN.6置1实现。将该位置位,而处理器运行在晶体振荡器时(处于系统初始化阶段),时钟源将立即切换到环形振荡器,这时没有4个时钟周期的延迟。
环形振荡器的工作频率设置在8kHz,实际频率可能因不同器件而变化。频率还会随着温度和电源电压的变化而变化,因此,如果应用需要精确定时,则需考虑这些变化因素。在本应用中,频率的精确性并不重要。
由于处理器在停机模式时,晶体振荡器不工作,本应用中唤醒定时器必须设置为工作在环形振荡器下(WTCS = WUTC.2 = 1)。系统也可以使处理器工作在晶体振荡器下,而唤醒定时器则工作在环形振荡器下。考虑到对唤醒定时器寄存器的读/写操作存在时序差异,本文没有采用这种方法。
低电池电压检测
MAXQ3210配备了低电池电压检测电路,将低电池电压检测(LBDE)使能位PWCN.1置1,一旦输入电源VDD降至低电池电压门限VBF以下,低电池电压中断标志位(LBF) PWCN.3将由处理器的硬件置位。如果中断使能,该中断标志位将触发一次中断,但该中断在此应用中没有使用。每次处理器退出停机模式并检测水位传感器时,会检测一次中断标志位。如果电池电量过低,扬声器将每次发出8声蜂鸣声,然后停止一分钟,并如此循环。
评估板注意事项
为本应用编写的程序已在MAXQ3210评估板上进行过测试。在这个开发环境下工作时,需要注意以下事项。第一,需注意处理器工作在环形振荡器下,通过串口至JTAG板实现与评估板的通信,由处理器调试/JTAG总线完成。JTAG时钟不能高于处理器时钟的1/8。如果工作在环形振荡器的处理器违反这条规定,JTAG接口板将无法与评估板进行通讯。JTAG接口板没有从评估板上收到恰当信息时,PC机软件将认为通讯失败。发生这种情况时,PC机显示一个错误消息,调试器被挂起。在将时钟源更改为环形振荡器的程序之前插入一个长延时可以避免这种情况。上电复位时环形振荡器选择位RGSL清零。插入这段延时,调试器就有时间在环形振荡器正常工作之前获得开发板的控制权。提供延时的程序在源文件中被‘加注释’,但作为一个解决方案实例被保留在文件中。
另外一个需要注意事项是开发板上的MAX5160LEUA数字电位器,当跳线J11短路时,这个器件连接至电压比较器的输入端CMPI,该设计为在输入端加载各种不同的电压提供了便利。电位器的内部电阻链的末端H连接至评估板电源VCC5;另一端L连接至地,滑动端W连接至CMPI。数字电位器的H-L端电阻为50k,阻值比CMPI的高阻输入(FET输入)低得多。在本应用中,开发板的短路器J11被去除。数字电位器没有与CMPI连接,以充分利用其输入端的高阻特性。
虽然对本应用并不重要,但在实际工作环境下,不同类型、品牌的电池在使用时的限制有很大差异。MAXQ3210的低电池电压检测门限设置在大约7.2V,这个设定值适合绝大多数碱性电池的应用。一块新的9V碱性电池在检测到低电池电压后会在一段合理的时间内正常报警,而有些电池在极端环境下可能允许的报警时间非常短。
对于任何最终投产的产品设计,都必须考虑、检验电池类型及外部工作环境。所提供的应用软件、评估板的扬声器将通过声控报警指示电池电量过低,直至电池电量降至系统复位状态。此时,电池将被耗尽,为了继续工作就必须更换电池。
测试本应用笔记方案时,为了节省电池功耗,去除了开发板的电阻R1和R2。这两个电阻分别是发光二极管LED D1和D2的限流电阻,该应用不需要LED。
结论
MAXQ3210微控制器所包含的诸多功能使其不仅适用于化学检测器、报警系统以及白色家电等注重成本的电池供电应用,还适用于那些要求高性能、低功耗的应用。微控制器内部集成的5V至9V稳压器、压电扬声器驱动器和模拟比较器使系统元器件数量最少。另外,当系统使用单节9V电池供电时,系统内置8kHz的环形振荡器、低电池电压检测电路、20位唤醒定时器和低功耗停机模式等功能可有效支持系统的低功耗工作,延长系统的工作时间。