基于MSP430单片机和DS18B20的数字温度计
扫描二维码
随时随地手机看文章
温度测量是从金属(物质)的热胀冷缩开始,常用的检测方法有电阻式、热电偶式、PN结型、辐射型、光纤式及石英谐振型等。这些检测方法都是基于温度变化引起其物理参数(如电阻值,热电势等)变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。
这里提出一种基于MSP430单片机翻的小型测温系统设计方案,主控制器采用MSP430单片机,数字温度传感器DS18B20通过单总线(1-wire)与单片机连接,系统结构简单,抗干扰能力强,适合于恶劣环境下澍量现场温度,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。
1 数字式温度计的总体设计
该系统以单片机为数字温度计的主控制器,以集成数字温度传感器为温度信息采集单元,液晶显示器及其驱动元件为显示单元。系统的基本组成框图如图1所示。
2 硬件组成
系统的主控制器选用了TI公司的单片机MSP430F1121A,沮度传感器选用了DALLAS公司数字式集成温度传感器DS18B20,采用2位共阴极LED数码管以及2个CD4511译码器实现温度显示。系统的整体设计电路如图2所示。
2.1 主控制器
MSP430F1121A具有独特的超低功耗设计,具有5种低功耗模式,给低功耗仪表设计带来了很大方便。MSP430F1121A型单片机为Flash型,可反复编程,且内部集成了A/D转换器,特别为智能式仪表、电池供电便携设备而设计。MSP430F1121A特性如下:
1)高效16位RISC内核,16位精简指令结构,27条指令,125 ns指令周期时间,绝大多数指令可在1个时钟周期内完成;
2)1.8~3.6 V低电压供电,有多种省电模式,功耗特别低,一颗电池可工作10年;
3)同其他微控制器相比,带Flash的微控制器可以将功耗降低5倍,既缩小了线路板空间又降低了系统成本;
4)6 μs的快速启动时间可延长待机时间并使启动更加迅速,降低了电池的功耗;
5)内含12位快速ADC/Slope ADC,只需外接1个电阻、1个电容即可实现高精度斜率A/D转换;
6)片内资源丰富,有ADC,PWM,若干TIME,串行口,看门狗,比较器,模拟信号,强大的中断功能;
7)SP430系列产品可以提供多种存储器选择,从14位ADCs到LCD驱动电路的混合信号外设,简化了各类应用中MSP430的设计;
8)ESD保护,抗干扰力特强。
2.2 译码驱动及显示单元电路
为了直观地显示出数字系统的运行状态以及工作数据,系统的显示模块中采用LG5011AH共阴极LED数码管,CD4511作为显示译码电路,由CD4511把输进来的二进制信号翻译成十进制数字,再由数码管显示出来,如图3所示。
图3中的D、C、B、A为BCD码输入端,分别与主控制器MSP430F1121A相应的I/O端口连接,为消隐功能端,为灯测试端,LE为锁存端。
单片机MSP430F1121A对DS18B20测量后的数据进行控制处理,以8421BCD码的形式传送至CD4511,CD4511把BCD码转换为十进制数码送到数码管中显示。
2.3 温度传感器
单线数字温度传感器DS18B20可以把温度信号直接转换成数字信号,每片DS18B20含有唯一的64位序列号,测温范围是-55~+125℃,完全符合系统要求。
DS18B20数字温度计提供9位温度读数,指示器件的温度信息经过单线接口送入DS18B20或从DS18B20送出,和MCU之间只需一条线连接,读写和完成温度变换所需的电源可以由数据线本身提供而无需外部电源。由于每个DS18B20有唯一的系列号(silicon serial number),因此,多个DS18B20可存在于同一条单线总线上,此特性可以应用于HVAC环境控制建筑物设备或机械内的温度检测以及过程监视和控制中的温度检测。
数字温度传感器DS18B20有如下特性:
1)独特的单线接口只需1个接口引脚即可通信;
2)多点(muhidrop)能力使分布式温度检测应用得以简化;
3)测量范围从-55~+125℃增量值为0.5℃;
4)以9位数字值方式读出温度;
5)在1 s(典型值)内把温度变换为数字。
DS18B20采用3引脚PR-35封装,其内部结构框图如图4所示。
3 系统软件设计
3.1 系统程序
系统的程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序。
程序的主要功能是实时显示温度、读出并处理DS18B20的测量温度值,温度测量每1 s进行一次。其程序流程如图5所示。
DS18B20采用单总线方式传输数据,对时序的要求比较严格。MSP430单片机的控制操作不同于51系列,它的I/O口有方向控制及输入输出寄存器,读写操作要分别控制。以DS18B20为例,给出在MSP430系列单片机语言编译环境Work-bench下部分程序代码。
3.2 DS1SB20与单片机之间的通信命令和时序
DS18B20工作过程中的协议如下:
1)初始化;
2)ROM操作命令;
3)存储器操作命令;
4)时序。
主机使用时间隙(time slots)读写DS18B20的数据位和写命令字的位。
由于DS18B20采用单总线协议方式,即在1根数据线实现数据的双向传输,而对MSP430F1121A单片机来说,硬件上并不支持单总线协议,因此,必须采用软件方法模拟单总线的协议时序,完成对DS18B20的访问。
DS18B20在1根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了初始化时序、读时序、写时序。
3.3 温度数据的计算处理方法
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。因为DS18B20的转换精度为9~12位可选的,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.062 5为步进的,即温度值为寄存器里的二进制值乘以0.062 5,就是实际的十进制温度值。一个十进制值和二进制值之间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0~F,转换成了十进制小数值就是0.062 5的倍数(0~15倍),这样需要4位的数码管来显示小数部分,实际应用可以采用1位数码管来显示小数,可以精确到0.1℃。
4 系统调试
4.1 硬件检测和调试
硬件调试比较简单,在系统设计的过程中,由于主控制器(MSP430F1121A单片机)部分是集成在利尔达单片机技术有限公司MSP430仿真器FET上的。因此主要是对DS18B20测温模块以及LED数字显示模块进行硬件检测和调试。
4.2 软件调试
本程序采用单片机MSP430的语言编写,用IAR system公司开发的IAR Embedded Workbench for MSP430 Kickstart编译器编程调试。进入IAR Embedded Workbench集成环境,然后在该环境下建立一个项目,进入源程序编辑界面。在这里进行源程序的编辑,编译结束后,源文件编译通过之后,将生成目标代码。最后进入CSFY调试环境,如图6所示。
在CSPY环境中,分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新等子程序的编程及调试,通过观察寄存器的窗口来判断从DS18B20数字温度计读取的效据是否准确。由于该数字温度测试仪的时序要求比较严,把握读写时隙才能准确地测量出温度数值。因此在CSPY工作环境下,通过观察程序运行的结果来断定程序的正确以及准确度。在出现错误时返回IAR Embedded Workb-ench工作界面,重新对程序进行编写和修改。
4.3 整体调试
通过硬件和软件的调试后,连接各个模块。由于主控制器模块采用MSP430仿真调试器FET,其集成有MSP430F1121A单片机以及与其相关的外围模块,通过计算机串口连接并由计算机的串口供电(实际工作电压为2.5 V),进入相关的调试控制程序后对单片机进行管理和操作。
温度测量以及显示模块焊接在同一块电路板上,由直流稳压电源提供3 V的电压。通过数据线将3个主要模块连接,DS18B20数字温度计的数据端与MSP430F1121A单片机的散据端连接。为了保证温度数据的正常读取,必须将二者的接地端短接,以保证其电势相等。接通电源后,由计算机进入MSP430调试环境,运行程序,这时LED数码管开始显示“00”(程序的开始复位信号),然后显示由DS18B20检测的温度数值。整体的调试过程必须一直调试到能正常的显示温度值,而且在有温度变化时显示温度能改变就基本完成。
5 结论
在基于MSP430单片机的温度测试仪的设计中。在低功耗设计方面,首先是选择低功耗元件,从单片机、传感器和LED显示器及其驱动电路,都尽量选择市场上功耗最低的产品;其次在硬件电路设计方面,降低系统工作电压;再次,是软件设计融入低功耗思想,核心的方法就是在最短的时间内把需要的工作完成,然后立即进入休息状态,不论在工作还是休息状态,立即关闭不必要的模块,以最大限度地降低功耗,例如,采样间歇状态时,关闭单片机内部除看门狗定时器之外的所有模块,切断传感器和放大器的供电,将外部存储器置于休眠状态,只有显示器处于活动状态,最大限度地降低了功耗。这些低功耗的措施起到了良好的效果,成功地控制了MSP430单片机的温度测试仪的功耗,使用MSP430为核心构成的便携式系统,MSP430单片机的温度测试仪电池的使用寿命可以比基于一般CPU的系统延长3~5倍。在降低成本的措施方面,满足性能的前提下,尽量选择低成本元件,显示部分采用了CD4511进行驱动显示,温度测量采用DS18B20数字温度传感器,具有线路简单,体积小的特点。因此用它来组成一个测温系统,在一根通信线上可以挂多个数字温度测试仪,十分方便。相比其他的温度传感器,该系统设计具有结构简单、分辨率高、可调节的特点,且无需硬件同步时钟控制。