基于STM32单片机的热量表低成本测温电路设计
2014-03-17范雪琴
范雪琴
(丹东机床有限责任公司 技术科,辽宁 丹东 118000)
基于STM32单片机的热量表低成本测温电路设计
范雪琴
(丹东机床有限责任公司 技术科,辽宁 丹东 118000)
使用常见的电阻、电容器件,根据RC充放电原理,利用STM32单片机内置的16位定时器测量RC充电时间,再通过时间与阻值对应关系的计算,获取测量阻值,从而实现了热量表的低成本测温.
STM32单片机;热量表;低成本;测量温度
目前市场中出现的热量表普遍采用高性能、低成本、低功耗的STM32单片机作为核心,利用STM32F103单片机制作的热量表具有成本低、计量精度高、通讯接口丰富等优点.然而,基于STM32单片机热量表的测温电路仍采用传统的电压测量电路或者电流测量电路,两种电路都需要复杂的外围门电路以及高精度的AD转换芯片,同时外围器件的增多也会使电路板的面积增大,从而导致热量表的成本增加.本文基于STM32单片机,使用简单的电阻、电容,利用RC充放电原理实现了热量表的低成本测温.
1 STM32系列单片机
STM32系列单片机是由意大利意法半导体推出的ARM32位Cortex-M3内核的单片机,采用高效的哈佛结构三级流水线,达到1.25 DMIPS/MHz,在功耗上更是达到0.6 mW/MHz.使用Thumb-2指令集,自动16/32位混合排列,具有很高的代码密度.单周期的32位乘法以及硬件除法器,保证STM32的运算能力有大幅提高,在一些对计算能力要求相对较低而嵌入式要求相对较高的场合,STM32具有取代传统DSP的潜力甚至优势[1].STM32包含嵌套向量中断控制器NVIC,中断响应速度最快仅6周期,内部集成总线矩阵,支持DMA操作及位映射.STM32有丰富的外设资源,FLASH、SRAM存储器,丰富的串行通信接口,如IIC、SPI、USART、CAN、USB等,以及12位的ADC和DAC模块,支持外部存储器访问的灵活的静态存储器控制器FSMC.本设计方案中,热量表使用的是STM32F103R8T6单片机,具有64 kB程序存储空间,20 kB程序运行SRAM,内置3个通用定时器、49个通用IO口、多种通讯接口.
2 热量表低成本测温方案的电路
本方案基本原理是利用RC充放电的时间来实现的.通过不同阻值电阻对同一个电容充电,其需要的充电时间是不同的,使用 STM32F103R8T6单片机内置的16位定时器,采集电容充电时间,与参考电阻对电容的充电时间对比,可以得出测量电阻的阻值,再通过查询PT1000的分度表来实现测温功能[2].在元器件上仅采用2个参考电阻、1个充电电容、2个PT1000温度传感器,因此属于低成本的测温方案.测温电路原理图如图1所示.
测温部分电路需要4路温度测量,其中2路(R_PT1、R_PT2)作为热量表实际测量使用的进水温度和回水温度电阻,选用德国九茂PT1000热电阻.当水温为0 ℃时,PT1000阻值约为100 Ω;当水温为100 ℃时,PT1000阻值约为1 400 Ω.2路作为测量温度使用的参考电阻(R_ref1、R_ref2),选择低温漂1%精度的1 000 Ω和1 400 Ω作为参考电阻.充电电容选择TDK公司的低温漂1%精度的COG电容(C_ref),在这里,选用电容的容值为1 μF.另外需要1路参考电压(PA5),根据STM32单片机的特点,这里使用单片机的1个I/O口中断来确定电容充电时间定时器的启动与停止.在对电容充电之前,设置为上升沿中断,禁止中断;对电容充电开始后,启动定时器,允许中断,当PA5检测到上升沿中断后,停止定时器,这样通过1个I/O口的中断,就能确定出充电的时间,从而进行热量计量.
图1 测温电路原理图
3 热量表低成本测温方案流程的实现
测温流程如下:
1) STM32单片机PA1、PA2、PA3、PA4、PA5设定为输出低电平,使电容C_ref放电完成.
2) PA2、PA3、PA4设定为高阻态,PA5设定为上升沿中断触发.
3) 定时器TIM2设置为增计数模式.
4) A1设置为输出高电平,启动TIM2定时器.
5) 当PA5端口检测到中断后,停止计数器,获取R_ref1充电时间.
6) STM32单片机PA1、PA2、PA3、PA4、PA5设定为输出低电平,使电容C_ref放电完成.
7) PA1、PA3、PA4设定为高阻态,PA5设定为上升沿中断触发.
8) 定时器TIM2设置为增计数模式.
9) PA2设置为输出高电平,启动TIM2定时器.
10) 当PA5端口检测到中断后,停止计数器,获取R_PT1充电时间.
11) STM32单片机PA1、PA2、PA3、PA4、PA5设定为输出低电平,使电容C_ref放电完成.
12) PA1、PA2、PA4设定为高阻态,PA5设定为上升沿中断触发.
13) 定时器TIM2设置为增计数模式.
14) PA3设置为输出高电平,启动TIM2定时器.
15) 当PA5端口检测到中断后,停止计数器,获取R_PT2充电时间.
16) STM32单片机PA1、PA2、PA3、PA4、PA5设定为输出低电平,使电容C_ref放电完成.
17) PA1、PA2、PA3设定为高阻态,PA5设定为上升沿中断触发.
18) 定时器TIM2设置为增计数模式.
19) PA4设置为输出高电平,启动TIM2定时器.
20) 当PA5端口检测到中断后,停止计数器,获取R_ref2充电时间.
通过上述步骤,可以获得每个电阻对电容的充电时间.根据2个参考电阻的充电时间以及参考电阻的阻值,可以获得时间与阻值的对应关系[5].假设R_ref1的充电时间为χ s,R_ref2的充电时间为y s,则可以获得如图2所示的充电时间与阻值的对应关系图.
图2 充电时间与阻值对应关系图
根据等比定理,假设现有外部测量电阻对电容的充电时间为z,则z对应的阻值R_PT可以通过
计算获得.由式(1)可以推导出测温电阻R_PT与充电时间以及参考电阻阻值的关系为
通过式(2)可获得要测量电阻的阻值,进而通过查表获得对应的温度值.
4 热量表低成本测温方案程序的实现
5 结论
详细介绍了基于STM32单片机的低成本测温方案的硬件电路、测温流程以及测温程序.在应用中为了提高测量的准确度,2个参考电阻以及充电电容务必选用低温漂高精度的器件,推荐选用TDK或村田厂家的产品.本方案成本仅用2个参考电阻和1个电容,实现了热量表需要完成的温度测量,不仅大大降低了热量表的成本,而且器件采购方便.
[1] 张洋. 原子教你玩STM32(寄存器版)[M]. 北京:北京航空航天大学出版社,2013:140-177.
[2] 廖义奎. Cortex-M3之STM32嵌入式系统设计[M]. 北京:中国电力出版社,2012:255-324.
[3] 吴文光,周清华. 利用函数参数和返回值提高嵌入式软件质量[J]. 单片机与嵌入式系统应用,2009(1):31-33.
(责任编辑:沈凤英)
Low Cost Temperature Measurement Circuit Design Based on STM32 Microcontroller
FAN Xue-qin
(Technology Department,Dandong Machinery Ltd Co., Dandong 118000,China)
This design uses common resistors and capacitor elements according to the RC charge-discharge principle,applying the 16-bit timer in STM32 MCU to measure charging time.The low temperature cost measurement of Heat-meter is achieved by the resistor value measured which is obtained through the calculation of the matching relationship between charging time and resistor value.
STM32 microcontroller;heat-meter;low-cost;temperature measurement
TP368.1
A
1008-5475(2014)02-0014-04
2014-03-02;
2014-04-01
范雪琴(1966-),女,蒙古族,辽宁丹东人,工程师,主要从事单片机及其应用研究.