当前位置:文档之家› 基于Cortex_M3智能无线温度测量系统设计

基于Cortex_M3智能无线温度测量系统设计

基于Cortex-M3智能无线温度测量系统设计钟鼎(中国地质大学机械与电子信息学院,湖北武汉430074)摘要:设计了一种基于Cortex-M3内核的STM32F103RBT6为核心处理器的智能无线温度测量系统。

系统采用DS18B20数字温度传感器,并利用TC35I 模块接入GSM 网络,实现利用手机短信发送温度测量指令,手机短信接收测量数据,该系统同时具有定时自检和温度报警功能,当处理器定时自检发现DS18B20出现故障时,系统会自动启用处理器内部温度传感器并短信报警。

经实验证明,该系统测量精度最高可达0.0625度,适合在距离较远,不易布线的环境下使用。

关键词:Cortex-M3;STM32F103RBT6;DS18B20;TC35I ;温度测量中图分类号:TN98文献标识码:A文章编号:1674-6236(2011)21-0183-03Intelligent wireless temperature measurement system based on Cortex-M3ZHONG Ding(Mechanical and Electronic Information Institute ,China University of Geosciences ,Wuhan 430074,China )Abstract:A system uses STM32F103RBT6processor which based on Cortex -M3core.By using DS18B20to measurement the temperature and using TC35I module to connect to the GSM network ,It achieves a function that using short message to send commands and receiving the measurement data by short message.The system also has a self -test function ,when the processor found the DS18B20fails ,it will automatically enable internal temperature sensor and send alarm message.It is suitable for long distance condition with a high precision.Key words:Cortex -M3;STM32F103RBT6;DS18B20;TC35I ;temperature measurement收稿日期:2011-08-20稿件编号:201108066作者简介:钟鼎(1983—),男,湖南长沙人,硕士,助理工程师。

研究方向:网络通信与安全。

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

1系统整体设计智能温度测量系统主要由温度测量模块、GSM 模块、外接EEPROM 、主控制器组成。

主控制器使用意法半导体公司生产的STM32F103RBT6处理器,主要完成整个系统的运行和自检工作。

温度测量模块使用DALLAS 公司的DS18B20数字温度传感器,GSM 模块使用西门子工业TC35I 模块,其支持中文短信功能,通过通用串口协议与主控制器通信,接收和发送主控制器的命令,当TC35I 模块接收到短消息命令后把命令发送给主控制器,主控制器分析短信命令,如为温度测量指令则开始测量温度,测量数据通过TC35I 模块发送回去,同时备份测量数据在外接EEPROM 中,整体结构框图如图1所示。

2硬件电路设计2.1主控制器意法半导体公司新推出的STM32F103RBT6,是基于ARM 公司最新推出的V7平台的Cortex-M3内核。

芯片[2-3]具有128k FLASH ,20k SRAM ,2个SPI 接口,3个串口,一个USB ,1个CAN ,51个IO 口。

芯片的数据处理能力为电子设计工程Electronic Design Engineering第19卷Vol.19第21期No.212011年11月Nov.2011图1系统整体结构Fig.1Overall structure of system-183-《电子设计工程》2011年第21期1.25DMips/MHz,在72MHz的工作时钟下消耗36mA(所有外设处于工作状态),待机时下降到2μA,是目前32位处理器市场上功耗最低的产品,十多块钱的市场售价为该产品创造了极高的性价比,除了在价格上的优势外,STM32主控芯片内部包含了一个时钟嘀嗒(SysTick)计时器,SysTick是一个24位的自动重装的倒计数定时器,在使用高速8M外部时钟信号时,通过处理器内部PLLMUL倍频产生最高72M 的时钟HCLK,SysTick的时钟来自HCLK的8分频,即72/8= 9MHz,通过计算当装载的初值为9时可以得到精确的1μs 的延时,在使用DS18B20测量温度时候,开始,应答,读写时序中使用的延时都为μs级,有较严格的时序要求,在STM32推出之前广泛使用的单片机如51系列和AVR系列,都很难得到精确的μs级的延时程序,这导致在无参考数据的情况下通过软件仿真得到的延时程序在实际驱动DS18B20过程中往往需要多次对延时程序进行调整,经实验证明,在软件仿真的环境下,也很难精确地对延时函数进行运行时间的估计,而在有限的资源下,如果使用通用定时器完成延时也是不太现实的,而STM32处理器却由于能够使用精确的μs级延时,为延时程序编写带来很大方便。

主控芯片与外设接口如图1所示。

2.2温度测量模块STM32F103RBT6虽然内部自带了温度传感器,但是其精度较差,为正负1.5度,而且由于考虑到芯片发热的问题,内部自带温度传感器很难测量到较准确数据,所以选用价格便宜精度较高的DS18B20温度传感器,其采用单总线方式传输,与主控制器的PA0连接,工作电压为3~5.5V,测温范围-55~+125度,理论上测量精度最高可达0.0625度,实际测量中常用的默认精度为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)→读取两个字节温度→进行数据处理。

其中读取的是一个12bit的数据,其中低4位为小数部分,高7位为整数部分,一位符号位,根据测量精度的要求可以对数据的整数部分和小数部分分开进行处理。

2.3GSM模块TC35I模块是西门子公司支持中文短信息的工业级GSM模块,工作在EGSM900和GSM1800双频段,电源范围为直流3.3~4.8V,通过接口连接器和天线连接器分别连接SIM卡读卡器和天线,主控制器通过串口与TC35I模块使用AT指令集完成双向通信,TC35I模块的电路图如图2所示,其主要由40引脚的TC35I和SIM卡组成,模块通过串口TXD0和RXD0与主控制器通信,TC35I短消息功能支持Text 和PDU两种模式,在标准C环境下,短消息收发采用Text模式,TC35I模块发送内容为test的短消息的主要操作如下[6]:……printf("AT\n");printf("AT+CMGF=1\n");//Text模式printf("AT+CSCA=+86xxxxxxxxxxx\n");//信息中心号printf("AT+CMGS=xxxxxxxxxxx\n");//目的号码printf("test");//发送testprintf("%x\n",26);//发送回车……当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线由低电平向高电平的变化表示终止信号。

无论是数据还是地址的传输中,都是按照字节来传输,传送的方向是从最高位开始,每一个被传送的字节后面都必须跟随一位应答位。

在数据和地址的传输过程中始终注意:时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期图2TC35I模块电路图Fig.2TC35I module circuit-184-间,数据线上的高电平或低电平状态才允许变化。

当主机向从机发送一个数据发送时序如下:起始信号→从机地址+方向→应答→数据(8位)→应答/非应答→终止信号。

其中方向值为“0”表示主机发送数据,方向值为“1”表示主机接收数据。

相关主题