郭卉 张志利 张莹 郭肖鹏 天津中德职业技术学院 300350
摘 要 介绍了基于32位ARM Cortex M0的MCU-LPC11C14微处理器和数字温度传感器DS18B20的基本特性,结合4位段型液晶显示模块LCM046和升压型DC-DC变换器MAX1674,设计了一个小型测温终端,并基于集成开发环境Keil给出了主要的C函数,利用CAN总线,可实现与其他设备实时进行可靠的通讯。
关键词 测温系统 LCP-1114 DS18B20 C语言
A Mini-Temperature Detecting Terminal based on the LPC-11C14
Microcontroller and DS18B20
Guo Hui, Zhang Zhi-li,Zhang Ying,Guo Xiao-peng
(TianJin Sino-German Vocational Technical College, Tian-Jin 300350)
Abstract: The characteristic of the microcontroller MCU-LPC11C14 based on 32 bits ARM Cortex M0 and the digital temperature sensor DS18B20 is introduced. A mini-temperature detecting terminal is designed combining the 4 bits segmented LCD module LCM046 and the DC-DC converter MAX1674. Some primary C functions are presented in the Keil Workbench. A real-time communication can be realized by using CAN bus.
Key words: temperature detecting system; LCP-1114; DS18B20; C;
温度的测量和控制,在电子设备仓储、智能空调控制及其他科学研究中应用广泛。温度检测的传统方法,是使用诸如热电偶、热电阻、半导体PN结(如AD590)之类的模拟传感器,经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。被测温度信号,从敏感元件接收的非电模拟量开始,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的可靠性及体积微小化。由此会造成整个检测系统有较大的偏差,稳定性和抗干扰性能都较差。
本文设计一种基于数字温度传感器 DS18B20 的小型测温系统,主控芯片采用以Cortex-M0为内核的ARM LPC-11C14,数字温度传感器通过单总线与ARM连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,可应用于电子设备仓储测温、智能空调控制和生产过程监控等领域。
1 测温系统硬件构成
该系统主控芯片采用NXP公司的一款基于ARM Cortex-M0内核的32位微处理器LPC11C14,温度检测采用数字温度传感器DS18B20,温度显示单元采用4位段型液晶显示模块LCM046,电源部分采用升压型DC-DC电源模块MAX1674。整个系统采用3.3 V供电,功耗低,结构简单。系统电路图如图1所示。
2 功能单元介绍
2.1 LPC-1114微处理器
LPC-11C14是NXP公司推出的一款ARM Cortex-M0内核的高性能、低功耗32位微处理器,它是市场上定价最低的32位微处理器解决方案[1]。其性能特点如下:
(1)单电源供电范围:1.8V-3.6V;
(2)主频最大可达50MHz;
(3)内部集成时钟产生单元,不用外部晶振也可以工作;
(4)内部集成32KB的Flash程序存储器,8K的SRAM数据存储器;
(5)带有一个快速I2C接口,一个RS485/EIA385 UART,两个SSP特征的SPI接口;
(6)内部4个通用定时器和一个系统定时器,一个带窗口功能的看门口定时器;
(7)一个功耗管理模块、一个ADC模块和42个GPIO[1]。
2.2 数字温度传感器DS18B20
DS18B20 是美国 DALLAS 公司生产的单总线数字测温芯片[2][3],具有线路简单、体积小的特点。只需要一个I/O口即可实现通讯,提高了抗干扰能力和测量精度。一根通讯线上就可以挂载很多这样的芯片,可用于多点分布式的测温系统。每一个DS18B20内部存储器中都有独一无二的64位序列号,在实际的应用中不需要任何元器件即可实现测温。可以采用外部供电方式(如图1所示),也可以采用寄生电源方式,即从数据线上获得电源,电压适用范围宽(3.0~5.5V)。用户还可以通过编程实现9~12位的温度读数,即具有可调的温度分辨率,将12位的温度值转化为数字量所需时间不超过750ms,其实用性和可靠性比同类产品更高。
DS18B20 有 3 脚 TO-92 封装,形如三极管;同时也有 8 脚 SOIC 封装。测温范围为−55~ +125℃ ,在 −10~+85 ℃ 范围内,精度为 ± 0.5 ℃。每一个 DS18B20 芯片的 ROM 中存放一个64位 ID 号:前 8 位是产品类型编号,随后 48 位是该器件的自身序号,最后 8 位是前面 56 位的循环冗余校验码。另外,用户还可根据实际情况,自设定非易失性温度报警上下限值 TH 和TL(掉电后依然保存)。DS18B20 检测到的温度值,经转换为数字量后,自动存入存储器中,并与设定值 TH 或 TL 进行比较,当测量温度超出给定范围时,就输出报警信号,并自动识别是高温超限还是低温超限。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,从而保证各位数据传输的正确性和完整性。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接受,数据和命令的传输都是低位在先。
2.3 温度显示单元
温度显示单元采用北京青云创新科技发展有限公司的4位多功能通用型8段式液晶显示模块LCM046。内含看门狗/时钟发生器,2种频率的蜂鸣驱动电路,内置显示RAM,可显示3个小数点以及任意字段笔划,3~4线串行接口,低功耗。显示清晰,稳定可靠,编程简单,非常适合电池供电的仪器仪表[4]。
2.4 电源模块
电源变换芯片采用 MAXIM 公司生产的升压型 DC-DC 变换器 MAX1674,其常态下工作效率可达 94 %,输入电压范围较宽(0.7~Vout :其中 Vout 可以设定为 3.3 V、5 V 或可变的输出电压),输出电压 Vout 设定为 3.3 V,给整个系统供电,允许的输出电流达到 500 mA,完全满足设计要求。值得注意的是,实际使用过程中,外围元件采用接插件较好,使用贴片式芯片,反而容易引起电源纹波。具体连接电路,可参考芯片的 DATA SHEET。
2.5 CAN总线
CAN(Controller Area Networks)总线是德国BOSCH公司开发的,是目前国际上应用最广泛的现场总线之一。CAN是一种有效支持分布式控制或实时控制的串行通讯网络,采取多主竞争式的总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。与许多RS-485基于R线构建的分布式控制系统相比,基于CAN总线的分布式控制系统各网络节点之间的数据通讯实时性强,开发周期短,性价比高,已形成国际标准。其总线波特率可编程,最高可达1Mbit/s,总线通讯距离与波特率有关,在0-10km之间,报文不包含源地址或目标地址,仅用ID来指示功能信息、优先级信息,可根据报文的ID决定接收或屏蔽报文。CAN总线包含了强大的侦错功能,具备CSMA/CD(Carrier Sense Multiple Access with collision Detect)功能,采用非破坏性总线仲裁技术,大大节省了总线冲突的仲裁时间,发送的信息遭到破坏后,可自动重发,节点在错误严重的情况下具有自动退出总线的功能。
3 系统软件设计
本系统采用 C 语言进行程序设计,大大提高了开发调试工作的效率;同时,所产生的文档资料也容易理解,便于移植。
LPC1110系列微处理器 C 语言编译环境可以利用Keil Software公司出品的集成开发系统Keil C51。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,生成目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。
该测温终端程序包括主程序、DS18B20 温度检测转换子程序和显示子程序,流程图如图 2。
由于 DS18B20 采用的是独特的单总线方式传输数据,对时序的要求较严格。虽然硬件连接变得方便了,但导致软件的编制变得异常复杂。同时对LCP1114的控制操作不同于 51 系列,其I/O口有方向控制及输入输出寄存器,对于读写操作就要分别对待,稍有不慎,就容易出错。
下面就以DS18B20为例,给出在LCP-1114微处理器编译环境Keil下的几个主要 C 函数,由于篇幅所限,未列出详细代码。
unsigned char Initial_DS18B20(void) {} /*初始化函数:检测DS18B20是否已经准备好*/
void Wr-By (unsigned char data) { }/*写函数:每次调用执行写一字节*/
unsigned char Rd-By (void){ } /*读函数:每次调用执行读一字节*/
float Rd-Temp (void) { } /*读温度值函数:读取温度寄存器的值并进行数据转换*/
typedef struct_CAND{}CAND; /*调用API函数,包含CAN初始化,CAN中断,CAN接收等*/
4 结束语
本文基于32位ARM Cortex M0的MCU-LPC1114微处理器和数字温度传感器 DS18B20 设计了一个小型测温终端,并给出了主要的 C 函数。由于LCP-1114的超低功耗以及 DS18B20 的单线接口方式,使得整个系统功耗极低,结构简单,性能稳定,适合于电子设备仓储测温、智能空调控制和生产过程监控等领域,有很好的实用价值。
参考文献
[1] LCP11C14 Data Sheet[S]. NXP Semiconductors, 2012
[2] DS18B20 Data Sheet[S]. DALLAS semiconductor Corp, 2000
[3] 冯国珍. 基于数字温度传感器DS18B20的分布式测温系统的设计[J].吉林化工学院学报,2003,20(3):46-49.
[4] 韩佩富,高振天.液晶显示模块LCM046的原理及C语言编程[J].电子器件,2005,Vol.28 No.3:648-650
作者简介:郭卉(1984-)性别:女,天津市中德职业技术学院教师,助理工程师,主要研究方向:自动控制技术应用。
论文作者:郭卉 张志利 张莹 郭肖鹏
论文发表刊物:《中国科技教育·理论版》2016年第2期
论文发表时间:2016/4/29
标签:测温论文; 总线论文; 温度论文; 微处理器论文; 系统论文; 数字论文; 函数论文; 《中国科技教育·理论版》2016年第2期论文;