APP下载

基于Cortex-M3智能无线温度测量系统设计

2011-06-05钟鼎

电子设计工程 2011年21期
关键词:短消息温度传感器延时

钟鼎

(中国地质大学 机械与电子信息学院,湖北 武汉 430074)

温度测量[1]在家居生活和工业生产控制等领域都有着广泛的使用,随着电子技术的飞速发展,应用领域还在不断的扩展,基于单片机控制的温度测量系统也相继被提出,随着ARM公司最新Cortex系列内核的推出,基于Cortex-M3内核的高性价比的处理器受到了客户广泛欢迎,而在我国,GSM网络超过95%的覆盖率也为无线通信和远程控制创造了良好的媒介,在某些特殊环境下,比如不易布线或者布线距离较长环境下,都会使测量系统的成本升高,而且数据在长距离的传输过程中极易受到干扰,利用技术成熟成本相对较低的GSM网络,不仅不受传输距离的限制,而且具有较好的抗干扰能力,使用便携的手机发送短信控制来实现温度的实时测量是一种较好的方法。

1 系统整体设计

智能温度测量系统主要由温度测量模块、GSM模块、外接EEPROM、主控制器组成。主控制器使用意法半导体公司生产的STM32F103RBT6处理器,主要完成整个系统的运行和自检工作。温度测量模块使用DALLAS公司的DS18B20数字温度传感器,GSM模块使用西门子工业TC35I模块,其支持中文短信功能,通过通用串口协议与主控制器通信,接收和发送主控制器的命令,当TC35I模块接收到短消息命令后把命令发送给主控制器,主控制器分析短信命令,如为温度测量指令则开始测量温度,测量数据通过TC35I模块发送回去,同时备份测量数据在外接EEPROM中,整体结构框图如图1所示。

图1 系统整体结构Fig.1 Overall structure of system

2 硬件电路设计

2.1 主控制器

意法半导体公司新推出的STM32F103RBT6,是基于ARM公司最新推出的V7平台的Cortex-M3内核。芯片[2-3]具有128 k FLASH,20 k SRAM,2个 SPI接口,3个串口, 一个USB,1个 CAN,51个 IO口。芯片的数据处理能力为1.25 DMips/MHz,在 72 MHz的工作时钟下消耗 36 mA(所有外设处于工作状态),待机时下降到2 μA,是目前32位处理器市场上功耗最低的产品,十多块钱的市场售价为该产品创造了极高的性价比,除了在价格上的优势外,STM32主控芯片内部包含了一个时钟嘀嗒(SysTick)计时器,SysTick是一个24位的自动重装的倒计数定时器,在使用高速8 M外部时钟信号时,通过处理器内部PLLMUL倍频产生最高72 M的时钟HCLK,SysTick的时钟来自HCLK的8分频,即72/8=9 MHz,通过计算当装载的初值为9时可以得到精确的1 μs的延时,在使用DS18B20测量温度时候,开始,应答,读写时序中使用的延时都为μs级,有较严格的时序要求,在STM32推出之前广泛使用的单片机如51系列和AVR系列,都很难得到精确的μs级的延时程序,这导致在无参考数据的情况下通过软件仿真得到的延时程序在实际驱动DS18B20过程中往往需要多次对延时程序进行调整,经实验证明,在软件仿真的环境下,也很难精确地对延时函数进行运行时间的估计,而在有限的资源下,如果使用通用定时器完成延时也是不太现实的,而STM32处理器却由于能够使用精确的μs级延时,为延时程序编写带来很大方便。主控芯片与外设接口如图1所示。

2.2 温度测量模块

STM32F103RBT6虽然内部自带了温度传感器,但是其精度较差,为正负1.5度,而且由于考虑到芯片发热的问题,内部自带温度传感器很难测量到较准确数据,所以选用价格便宜精度较高的DS18B20温度传感器,其采用单总线方式传输,与主控制器的 PA0连接,工作电压为 3~5.5 V,测温范围-55~+125度,理论上测量精度最高可达0.062 5度,实际测量中常用的默认精度为 0.5度,在数据传输[4-5]过程中,读和写的时序如下:

写时序:写0时主机拉低总线,延时60 μs,然后释放总线。写1时主机拉低总线,延时2 μs,然后释放总线。在连续写的过程中需要有1 μs以上的延时。

读时序:读时都由主机把电平拉低,延时大于 1 μs(3 μs)后,主机释放总线,3~15μs时间段的后期,主机采样电平(0或 1),延时 45 μs,整个读时序周期大于 60 μs。

使用DS18B20[2]读取一次温度的流程为:复位→发送(0xcc)命令→发送转换命令(0x44)→延时→发送读数据命令(0xbe)→读取两个字节温度→进行数据处理。其中读取的是一个12 bit的数据,其中低4位为小数部分,高7位为整数部分,一位符号位,根据测量精度的要求可以对数据的整数部分和小数部分分开进行处理。

2.3GSM模块

TC35I模块是西门子公司支持中文短信息的工业级GSM模块,工作在EGSM900和GSM1800双频段,电源范围为直流3.3~4.8 V,通过接口连接器和天线连接器分别连接SIM卡读卡器和天线,主控制器通过串口与TC35I模块使用AT指令集完成双向通信,TC35I模块的电路图如图2所示,其主要由40引脚的TC35I和SIM卡组成,模块通过串口TXD0和RXD0与主控制器通信,TC35I短消息功能支持Text和PDU两种模式,在标准C环境下,短消息收发采用Text模式,TC35I模块发送内容为test的短消息的主要操作如下[6]:

图2 TC35I模块电路图Fig.2 TC35I module circuit

当TC35I模块接收到短消息后会自动向处理器发送提示信息,处理器通过串口中断接收到提示信息,在标准的C环境下,通过检验串口提示信息中是否含有“+CMTI”来判断是否有短消息提示指令,如果有则处理器向TC35I模块发送读取短消息指令后,之后处理器提取TC35I收到的短消息。

2.4 外存储设备

外存储设备使用外接EEPROM,在进行温度测量后测量数据发送给终端的同时会保存测量数据在外接存储器AT24C02中,AT24C02总容量为256个字节,一次温度测量数据为2个字节,所以使用便宜的24C02可以存储超过100组的测量数据,AT24C02片内地址在接收到每一个数据字节地址后自动加1,直到存储满后前面的数据将被覆盖。STM32处理器自配IIC接口,但是考虑到移植性的问题,使用IO口模拟IIC协议通信更容易实现,接口电路如图1所示。

当SCL线[2]为高电平期间,SDA线由高电平向低电平的变化表示起始信号,SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 无论是数据还是地址的传输中,都是按照字节来传输,传送的方向是从最高位开始,每一个被传送的字节后面都必须跟随一位应答位。在数据和地址的传输过程中始终注意:时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。当主机向从机发送一个数据发送时序如下:起始信号→从机地址+方向→应答→数据(8位)→应答/非应答→终止信号。其中方向值为“0”表示主机发送数据,方向值为“1”表示主机接收数据。

3 软件设计

软件设计是在MDK环境下直接对寄存器编程.主函数流程如图3所示,在软件设计中建立一个长度为20的字符数组buff[20]用来作为接收指令的缓存,当处理器接收到指令test就开始温度测量,并把测量结果通过TC35I模块发送到目的手机,发送完成后清空buff缓存,在这里需要特别注意的是在初始化过程中需要用AT指令AT+CMGD=1来删除TC35I模块的模块终端在位置1中存储的短消息,这样位置1的存储空间就被释放出来,当接收到新信息后,新接收到的消息会自动存储在位置1中,处理器提取位置1的短消息并转存到buff中,然后再次清空位置1空间,为接收下一个信息做准备。TC35I模块接收信息后转存入缓存buff的过程是利用串口接收中断来完成的。

图3 软件系统流程Fig.3 Software system flow

软件中断函数有两个,一个是串口接收中断,其把接收到的信息转存入buff缓存,另一个是定时中断,定时中断使用TIM3中断,该中断定时地对温度传感器检测,对温度传感器的故障检测是基于当主机拉低电平480~960 μs产生复位脉冲,之后主机释放总线,15~60 μs以后,接着由DS18B20拉低总线60~240 μs,产生应答脉冲,通过是否检测到应答脉冲来判断温度传感器是否正常工作,如果接收到应答脉冲则正常测量温度,如果未接收到应答脉冲,处理器自动发送短信报警信息1并进入紧急模式,即转为内部温度传感器测量温度,测量温度后把测量结果与软件设定温度阀值比较,如超差则发送报警信息2,中断流程如图4所示。

图4 中断程序流程Fig.4 Interrupt flow

4 结 论

经实验证明,该系统操作简单,具有较好的稳定性,测量精度灵活,最高可达0.062 5度,成本低廉,利用GSM覆盖面广的特点,适合在远距离监控和布线成本较高的环境下使用。

[1]张英梅.stm32智能温室控制系统 [J].软件,2010,31(12):14-18.ZHANG Ying-mei.Stm32’s controlling system of intelligent greenhouse[J].Software,2010,31(12):14-18.

[2]刘军.例说stm32[M].北京:北京航空航天大学出版社,2011.

[3]范书瑞.Cortex-M3嵌入式处理器原理与应用[M].北京:电子工业出版社,2011.

[4]颜丽娜.基于DS18B20测温系统设计[J].科技信息,2010(11):496-497.YAN Li-na.The design of testing temperature base on DS18B20[J].Science&Technology Information,2010 (11):496-497.

[5]郭天祥.新概念51单片机C语言[M].北京:电子工业出版社,2009.

[6]谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005.

猜你喜欢

短消息温度传感器延时
基于级联步进延时的顺序等效采样方法及实现
日光灯断电关闭及自动延时开关设计
温度传感器DS18B20在温度计设计中的应用
一种高性能CMOS温度传感器
试论电视新闻短消息的采写策略
XTR105电流变送器在温度传感器中的应用
浅谈广播短消息的采写
Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
温度传感器在笔记本电脑散热系统中的应用
桑塔纳车发动机延时熄火