基于MSP430系列超低功耗单片机的多参数环境监测仪

发布者:hylh2008最新更新时间:2018-04-11 来源: eefocus关键字:MSP430系列  超低功耗  单片机  环境监测仪 手机看文章 扫描二维码
随时随地手机看文章

    本文以智能建筑为应用背景,介绍一种通用性很强的便携式多参数环境监测仪。它以MSP430F437超低功耗单片机为核心,配置新式的微型低功耗传感器,实现了建筑物内温度、湿度、光照度、有害气体浓度等参数的采集处理、存储、通信等功能。文中详细阐明了传感器的选取、硬件结构、软件流程等相关技术,并指出该仪器的特点和优势。


    1 传感器的选取

    传感器是决定监测仪精度的关键元件。传感器的选择主要依据工作环境、测量精度、线性度、互换性、灵敏度、响应速度、稳定性、功耗、体积大小以及易于与MCU接口等。本监测仪选用的各类传感器分别为:集成温度传感器TMP35、集成湿度传感器HM1500、热线型半导体气敏传感器MR511以及集成光照度传感器TSL253。与同类产品相比,它们在上述方面有一定的优点,很适合便携式仪表使用。

    TMP35电压输出量与被测温度T成线性关系,其式如(1);HM1500输出量为电压,与被测湿度%RH成正比,且与温度T有关系,其式如(2);MR511内有温度补偿,其输出电压与被测气体浓度C成近似线性关系(线性度≤±5%),其式如(3),式中Nc为器件灵敏度,环境湿度为Vc的值有影响;TSL253电压输出量与被测光照度Ee成正比,且与温度T有关,其式如(4),式中Ne为传感器的灵敏等。

    VT=[10×T](mV)    (1)

    VRH=[600×(%RH+38.5)/(39.1-0.056T)](mV)    (2)

    Vc=[Nc×C](mV)    (3)

    Vec=[(Nc×Ee) ×(1.05-0.002T)](mV)    (4)

    上述各式说明,高精度的监测必须考虑传感器的非线性、温湿度影响、测量误差及环境误差等问题,尤其要着重解决测量中的非线性及温湿度补偿。在布置印刷电路板时尽量减少引线电阻和分布电容以降低测量误差。在电路设计上要加线性化处理电路及温湿度补偿电路,或借助于单片机系统,由软件查表等方法进行处理、修正(用软件实现传感器的校正补偿功能可降低仪器功耗)。如有可能可用标准测量仪进行校准,以提高测量精度。

    图1 监测仪硬件电路原理图

    2 硬件设计

    监测仪主要由MSP430单片机、测量转换、键盘显示、串口通信、电池电源等部分组成。电路中器件很少,功耗较低且功能强大。具体硬件电路原理图如图1所示。

    2.1 MSP430单片机

    单片机系统是监测仪的核心,它完成仪器的功能设定、测量对象选择、信号处理存储、状态信息显示、数据通讯等功能。相对于MCS51、MCS96及PIC[1]等系列,TI公司带闪速存储器的MSP430F系列超低功耗单片机有着很大的优势。MSP430F单片机有多种型号,其功能组合各异,能满足不同应用场合的要求。本设计采用MSP430F437,它的要特点[2]如下:

    ·工作电压低(1.8~3.6V),电流小(280μA/1MHz/活动模式),5种低功耗模式;

    ·16位RISC架构,27条精简指令,125ns指令周期

    ·丰富的中断源并可任意嵌套,用中断请求将系统从备用状态唤醒仅需6μs;

    ·片内看门狗及上电复位电路,可选时钟源(XTAL1、XTAL2或内部DCO);

    ·具有中断功能的内部比较器A;

    ·双向并行I/O口P1和P2(有中断功能)及P3~P6口,多数口有复用功能;

    ·两个16位定时器A、B,均各带3个比较/捕获模块,每个模块可独立编程,用于产生定时脉冲,捕获外部事件;

    ·片内集成4×32段LCD液晶驱动器,其外部引线复用P3~P5口;

    ·通用通信模块UARST0,软件可选同步/异步方式;

    ·具有自动循环采集功能的8通道12位ADC12,自带采样保持器和可选电压基准;

    ·JTAG接口或片内BOOT ROM使程序下载调试极其简便,程序代码由安全熔丝保护。

    图2 地址位多通信协议图

    MSP430F437不需加装存储器,片内自带1K字节RAM及在线可擦除编程32K字节主Flash+256字节信息Flash。片内Flash模块包含3个控制寄存器、时序发生器、擦除/编程电压发生器及Flash存储器本身。其中主Flash分为每段512字节的段0~63,信息Flash分为每段128字节的段A、B。MSP430F437存储器可放大型数表,有高效的查表处理方法。本监测仪安排段0~23为程序代码区、段24为LCD显示字型表、段25~31存放校正和补偿表格、段32~63为用户采集数据保存区、段A+B存放各类参数。

    在电路中,其他主要模块的功能分配为:16位定时器A的比较/捕获模块0实现实现时分秒计时,比较/捕获模块1控制A/D采样周期;16位定时器B可实现PWM输出,预留作控制口;ADC12用于环境参数测量;比较器A作电池欠压监测;复用P3~P5口驱动LCD液晶显示器;通用通信模块UARST0实现RS485串行通信;预留JTAG接口以方便用户对仪器更新升级。

    2.2 测量转换

    MSP430F437的ADC12转换模块具有高速通用的特点,12位的转换精度保证一般采样的分辨率要求。它的8个外部模拟采样通道可任意配置,转换参考电平VR+和VR-来自内部或外部,也可以是两者的组合;内嵌的采样/保持电路给用户提供了对采样时序的各种选择,采样时序可通过软件位、3种内部或外部信号来直接控制。ADC12有4种工作模式。可以在单通道上实现单次转换或多次转换,序列通道上实现单次转换或重单次转换或多次转换,在序列通道上实现单次转换或重复转换。对于序列通道转换,采样顺序完全由用户定义。

    ADC12转换结果保存在16个转换存储寄存器ADC12MEM0~ADC12MEM15中。其值如(5)式:

    NADC=4096×(Vin-VR-)/(VR+-VR-)    (5)

    每个存储寄存器有各自相应的控制寄存器ADC12CTL0~ADC12CTL15,可用软件独立配置采样通道号及转换所需参考电平。

    本监测仪中,各环境参数传感器的输出经U2前置放大后,送入A0~A3模拟输入端。4路信号的转换参考电平均取VR+=2.5V和VR-=0V。ADC12工作模式设为序列通道单次转换,每次转换由定时器A比较/捕获模块1的定时输出OUT1启动。序列单次转换完成后,将置位ADC12中断请求。

    序列通道为ADC12MEM0~ADC12MEM12,对应的控制寄存器ADC12CTL0~ADC12CTL12中通道重复配置A0~A3。这样等时间间隔内每个环境参数可连续采样3次,然后在ADC12中断服务程序内使用中值滤波得到转换结果。

    需要指出的是,ADC12的转换内核与参考电平发生器可分别进入省电模式,为低功耗设计提供便利,而且进一步降低功耗、延长传感元件的使用寿命。测量电路的电源设置为单独可控,由U3的OUT2输出供给,并通过单片机的P2.0来切合。

    2.3 键盘显示

    MSP430F437有6个带复用功能的P1~P6双和同I/O口。其中P1、P2设置成输入时,引脚上任何状态变化都会触发中断。本设计将P3~P5复用于LCD驱动,P1.0~P1.4作3×2快速键盘。

    为读取按键值,首先设置端口功能,P1.0~P1.2为输出口,依次输出低电平;P1.3、P1.4为输入口,开放中断,选定下降沿触发。当有键按下时,在P1口中断服务程序内,完成去抖动延时、键值读取等功能,得到的键值交后续程序处理。

    片内LCD驱动器可工作于静态及2~4多选四种模式,最多可接4~32=128段液晶。图1中R33、R23、R13、R03引脚设定模拟偏置电压,提供驱动能力,典型接线为电阻分压VR33=VCC、VR23=2/3Vcc、VR13=1/3cc、VR03=0V;S0~S31为段输出(每段3μA);COM0~COM3为公共输出,接LCD背极。对LCD的软件控制极其简单,它有一个控制寄存器LCDCTL,定义工作模式及电流消耗。20个显示存储器LCDM(使用16个)存放128段要显示的状态信息,其内容可采用高效的寻址方式查显示字型表获得。

    单片机根据控制键的命令信息,可分别选择仪器“测量/通信”使用方式、“单次/循环”采集类型,并可按键校时、设置参数、启动采集、数据存储确定等。LCD显示屏可由定制、时分、超量程和电池欠电告警组成1×32段,剩余3×32为多用显示区,可依次显示操作提示、工作状态、环境参数测量结果,从而大大方便了用户。

    2.4 串口通信

    为了对采集到的数据进行深入处理(如统计分析、打印存档、绘制曲线图表等),需将数据从检测仪送至计算机。数据传输使用MSP430F437的标准USART通信模块(复位SYNC=0选择异步功能),并外接低功耗器件MAX485E,构成一个半双工RS485串行通信口。

33.gif

    为提高通信的可靠性,便于仪器与其它智能设备组网实现控制功能,本监测仪使用异步通信的地址位多机通信格式。异步帧由1起始位、8数据位、1地址位、1停止位组成,波特率编程为9600bps。USART通信模块的地址位多要通信协议如图2所示。

    通信时,先置RS485处于接收状态,并置接收唤醒中断允许位URXWIE=1(此时只有地址字符能触发接收中断)。当接收一个地址位置的字符时,通信模块的接收器被激活,字符送入URXBUF,同时接收中断标志URXIFG置位。在串口接收中断服务程序内可以检验收到的地址,如果匹配,置URXWIE=0,单片机将读取数据块的后续数据;如果地址不匹配,则等待下一地址字符的到来。

    RS485接收到主机命令后,转入发送状态,先置控制字符址位的TXWake=1。当地址字符的8位数据从UTXBUF传送至发送器时,TXWake位装入待发送字符的地址位,每一字符发送完,TXWake位被自动清除,引起发送中断UTXIFG。在串口发送中断服务程序内,用户可依次发送完整数据块,再重置RS485接收状态。

    2.5 电源控制

    本仪器采用1节3.6V/4Ah锂离子电池。为保证多路供电及模拟信号测量的精度,设计了以ADP3302AR1双低压差线性电源稳压芯片(U3)为主的电源控制电路,完成以下功能;

    ·电源通断。按键盘“ON”键,U3的SD1脚为高电平,OUT1脚输出仪器所需主电源Vcc,单片机P1.5脚送来高电平互锁信号,使“ON”键松开后,OUT1维持输出;按键盘“OFF”键,单片机P1.5脚送出低电平,关断OUT1脚输出;U3的OUT2脚输出模拟测量电路所需的3V,测量电源可单独切合,由单片机P2.0脚的电平控制。

    ·电池电压监测。U3的加载电压应不低于3V,否则不能正常工作。单片机的片内比较器A有多个基准,选择其中之一0.5×Vcc=1.5V,电池正极通过分压电阻直连比较器输入脚CA0。当电池电压低于设定值时,触发比较器A中断,在中断服务程序内,驱动LCD告警显示,提示用户对电流进行充电(使用外部充电适配器)。

    ·自动关机。每次测试完毕,如果不再操作,则通过定时器比较/捕获0中断计时;5分钟后,单片机P1.5脚送出低电平,OUT1脚输出0V,从而切断仪器电源实现自动关机。

    3 软件设计

    检测仪的软件用MSP430汇编语言编制。为了方便程序调度和提高可靠性,软件采用模块化结构,主要由初始化程序、主程序、子程序、参数表格等组成。

    3.1软件功能与特点

    单片机系统上电后,进入初始化程序,完成片内各模块的设置、清LCD存储器、端口设定等初始化工作,然后转入主程序,开启中断,循环设置低功耗模式并执行空操作。

    本软件设计的一大特点是采用中断事件驱动技术,其目的在于降低功耗。在主程序设置LPM0低功耗模式(55μA)后,CPU即补禁止,外围模块维持活动,并等待各类中断事件。如有中断,CPU被唤醒并执行各种中断服务子程序完成事件处理。

    每次执行完中断服务子程序返回,在主程序中又重置LPM0低功耗模式,并等待下一个中断事件的到来,如此往复,可使系统多数时间处于低功耗运行。

    本设计另一特点是利用MSP430F437的高效查表功能,编制了气体浓度测量的非线性校正和湿度补偿表格,极大地提高了程序运行速度和采集精度。表格的生成是在有限个数据基础上,通过拉格朗日插值进行曲线拟合[3]获得。具体步骤如下:

    (1)在湿度5%RH情况下,测量典型气敏传感器在不同气体浓度点C时,ADC12转换存储寄存器中对应的数字量结果Nc。测试中,在10~300ppm范围内等距离取10个浓度点;

    (2)使用曲线拟合的方法,并结合关系式(3),拟合出5%RH时数字量Nc与气体浓度C间的连续曲线,将曲线按1ppm的间隔离散化后,存入段25中;

    (3)分别在20%RH、35%RH、50%RH、65%RH、80%RH、95%RH的湿度下,重复上述测量与数据处理过程,形成6条不同湿度下的Nc-C的非线性曲线,存在段26~31中。

    需要注意:正常时采样得到数字量Nc和当前湿度值后,先查该湿度所在范围对应的上下两条曲线,即根据Nc并使用线性插值得到上下两个气体浓度值,再根据当前湿度并使用线性插值得到湿度补偿后的最终气体浓度值。

    3.2 软件流程举例

    本检测仪的程序众多。限于篇幅,仅介绍有特色的Flash数据保存于程序以及较为关键的ADC12子程序。

    MSP430F437可通过JTAG接口或片内BOOT ROM下载调试修改程序,甚至允许用户程序在运行中将采集处理的数据快速安全地保存到Flash存储器中,而无须任何外接器件。数据保存要用快速的段写入方法和写字节序列模式,写入电流小(3mA),写入速度快(≤25ms/512字节,远超过串行EEPROM的页写速度5ms/16字节),10万写入次数,100年数据保存。每次采集处理完毕,即将16字节/批数据“批号-时间-环境参数”存入段32~63。图3为16字节数据存入的程序框图,其中LOCk、Busy、SEG WRT、WRT、Wait是Flash控制寄存器内涉及编程的各控制位或状态位。

    ADC12子程序用于环境参数测量。当按下测量键或采样时间到,定时器A的OUT1启动序列通道单次转换,ADC12自行按A0~A3的采样顺序循环采集各环境参数,并将转换结果保存到存储寄存器ADC12MEM0~ADC12MEM11中。序列转换完成后,将置位ADC12中断请求标志ADCIFG。

    单片机响应中断进入ADC12子程序后,先关闭测量电源以降低功耗,再读取存储寄存器ADC12MEM0~ADC12MEM11中的转换结果,并使用中值滤波得到各环境参数对应的测量数字值。结合关系式(1)(2)(4)依次计算温度、湿度、光照度的最终结果;对于气体浓度,则使用上述查表格的过程得到结果。各环境参数的测量结果缓存至RAM区,查显示字型表得显示代码并存入LCD存储器,最后判定各环境参数是否超限并刷新LCD存储器中告警部分。


关键字:MSP430系列  超低功耗  单片机  环境监测仪 引用地址:基于MSP430系列超低功耗单片机的多参数环境监测仪

上一篇:基于80C196KC的软开关型脉冲MIG焊机的研究
下一篇:基于Freescale单片机ECAS模糊PID控制

推荐阅读最新更新时间:2024-03-16 15:59

51单片机程序转AVR的方法
将 C51 向 ICCAVR的转换进行一次总结 1、头文件 对C51中定义寄存器的头文件如 reg51.h at89x51.h等替换成相应的 AVR头文件 如 io8515.h io2313.h等 2、中断处理函数 在 C51 中以 interrupt 关键字来说明某一个函数为中断处理函数 在 ICCVAR 中可采用#pragma interrupt_handler预处理命令在程序开始处声明 具体用法如下: #pragma interrupt_handler 中断处理函数名 中断向量号 注意 对原 C51 源程序中的 interrupt 和 using关键字应当删除 3 、对 C51 中的 bit 和 sbit 数据类型
[单片机]
基于普通单片机的LIN协议实现方案
1 概述   LIN协议是新出现的一种新型低成本串行通信总线,其全称是Local Interconnect Network,即局部互联网络。它最开始出现于汽车行业,是为解决汽车智能化和网络化的发展要求和降低汽车制造成本的矛盾而提出来的一种串行总线协议,主要用于车门、车灯等需要简单控制但又要求智能控制的场合。它的主要特点是:采用单个主控制器/多从设备通信模式;基于普通UART/SCI接口硬件实现,协议简单;网络传输速率不高,最高可达20kb/s。由于LIN协议的突出特点是协议对硬件的依赖程度低,可以基于普通单片机的通用串口等硬件资源以软件方式实现,成本低廉,因此可广泛应用于汽车行业以外的其他领域,如智能家庭网络内部的数据传输、节点控
[单片机]
51单片机学习笔记(五)
已经很多天没有写程序了,原因很简单,竟是迷上了新版的西游记,连续看了几天,今天写的是续上以前的教材,“心率计数器”是继“电子时钟”的一个计算器/计时器的应用。 对于计数器/计时器的应用,似乎就是熟练的问题,对计数器/计时器的使用很容易理解,但是要是不看书本,那编写出的程序多半是有错误的,因为对TMOD,TCON,IE,的控制方式,不看书是很难把它记住的,而应用起来却是十分简单。 在这里要说一下在计数器模式下,t1计数的是p3.5的脉冲信号,t0计数的是来自p3.4的脉冲信号。因为我手头上没有心率传感器,所以就只用一根杜邦线接在p3.5口上,然后用手捏杜邦线的另一头,用这种方法给p3.5脉冲信号,挺有意思的。 写这个程序
[单片机]
stm32f103系列单片机串口初始化
这篇文章是本人从小白到熟悉这个单片机的过程,本在使用过程中主要是针对的64为单片机,但是其它引脚位数的单片机应该也是比较实用,由于篇幅较长, 废话不多说,开始单片机学习之旅吧!(本文章比较适用于对硬件知识有一定基础,如果有51系列单片机开发或者学习经验者。) 最开始笔者是从串口初始化开始,串口是个很好用的东西。不光可以用来通信而且还可以用来调试调试程序。下面这段程序是对串口1-3的初始化函数。这三段函数基本上没有什么区别只是引脚不同,所以后面的程序没加注释。 /* ******串口1初始化***************************************** * 函数名称:Usart1_Init * *
[单片机]
基于AT90CAN128单片机的某车型CAN总线系统设计
引言 现场总线技术 是目前自动化控制领域发展比较迅速的一门技术,其中CAN(Controller Area Network)总线 是在国际上应用最广泛的现场总线之一。近几年随着汽车电子行业的发展,现代汽车中CAN总线已经成为必须采用的装置之一。本文以ATMEL公司新近生产的一款内置CAN控制器的单片机——AT90CAN128为基础,设计了一款车载CAN总线系统,通过CAN智能测控仪表对车中部分单元参数量进行实时监控,使各单元之间协调运转。另外,传输线束大大简化,可靠性得到了极大的提高,有效节约了线束安装空间和系统成本。 1 AT90CAN128特性概述 1.1 基本特性 AT90CAN128 是基于AVR RISC
[单片机]
基于AT90CAN128<font color='red'>单片机</font>的某车型CAN总线系统设计
PC机与下位单片机异步串行通信
在由一台PC机(上位机)和多台单片机(下位机)构成的分布式控制系统中,单片机主要负责实时数据采集,并将初步处理后的数据通过串行口传送给PC机以便由PC机串行口的命令对单片机进行控制,同时通过打印机或显示器向用户随时提供各种统计报表和整个控制过程的具体数据。在这样的分布式控制系统中,单片机与微机之间的多路通信是整个系统的关键,本文将介绍在提高通信的准确性、可靠性和效率的前提下,用PComm开发PC机与单片机的通信程序的解决方案。 1 通信协议 为了保证可靠的通信,必须有一套完善的通信协议。分布式控制系统中的每台单片机均有唯一的番号。通信开始时,先由PC机呼叫被叫单片机的番号,单片机在接收到微机的呼叫后,首先判断是不是自己的番号,
[单片机]
PC机与下位<font color='red'>单片机</font>异步串行通信
基于单片机遥控开关系统的设计
1 引言 随着电子技术的飞速发展,新型大规模遥控集成电路的不断出现,遥控技术有了日新月异的发展。遥控装置的中心控制部件已从早期的分立元件、集成电路逐步发展到现在的单片微型计算机,智能化程度大大提高。近年来,遥控技术在工业生产、家用电器、安全保卫以及人们的日常生活中使用越来越广泛。 本论文是基于单片机设计了一个智能化的遥控开关系统。该系统用AT89C2051单片机作为控制芯片,制作一个遥控器,键盘采用行列式操作,按键中断扫描方式提高了CPU效率。遥控器发射器采用红外线脉冲个数编码,根据脉冲个数来确定是哪个按键按下,并发射相应的信号来控制电灯调光,无键按下时处于低功耗空闲方式状态。另一个单片机控制系统能被遥控操作,通过软件解码
[单片机]
基于<font color='red'>单片机</font>遥控开关系统的设计
于AVR单片机的多协议读写器的设计
引言 射频识别(RFID)是利用无线方式对电子数据载体(电子标签)进行识别的一种新兴技术。与接触式IC卡和条形码识别等系统比较,它有着巨大的优势。利用射频识别技术,能有效实现对数量大、分布区域广的信息进行智能化管理,达到高效快捷运作的目的,特别是在第二代身份证、物流、交通航运、自动收费、超市、门禁系统管理、服务领域等方面有着广泛的应用前景。随着我国国民经济的快速发展,国内RFID行业也正经历着深刻的变革。 RFID系统一般是由读写器、射频卡、应用软件来组成。其中读写器的设计是至关重要的,它决定了系统的稳定性和准确性。 除了要求其能支持一系列协议、标准和收发器外,对读写器可能还有其它功能性方面的要求,如高性能、防冲突、远/近感应距离
[单片机]
于AVR<font color='red'>单片机</font>的多协议读写器的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved