基于STM32的温度测量系统
TemperatureMeasurementSystemBasedontheSTM32
曹圆圆
(华北电力大学控制科学与工程学院河北保定071003)
[摘要]介绍一种基于STM32处理器的温度测量系统设计方案。以STM32F103RBT6微控制器为核心,采用AD590作温度传感器,测量温度用四位数码管显示,能够同PC机进行串口通信。具有体积小、精度高、处理能力强等特点。
[关键词]温度测量;STM32;AD590
[中图分类号]TP273[文献标志码]B
温度是日常生活与工农业生产中的一个重要参是利用JTAG烧写在板FLASH,因此将其加入最小系数,传统的温度计存在反应速度慢、测量精度不高以统。系统的整体结构框如图1所示。及读数麻烦等缺点,随着电子技术的发展,各种基于单片机的温度测量系统先后被提出。温度传感器AD590具有线性度好、性能稳定、灵敏度高、抗干扰能力强等优点;鉴于目前ARM微处理器在国内的广泛应用和广阔的发展前景,本文采用AD590温度传感器,基于一款ARM微处理器STM32F103RBT6作为系统核心,设计了一种温度测量系统。它不仅可以通过四位数码管直观显示00.00~99.99,还可以完成同PC机的通信,并详细介绍了其硬件设计和相关程序编写。
图1系统整体结构框图
2硬件设计
2.1STM32F103RBT6微控制器
STM32F103RBT6是一款基于CORTEX-M3内
核、高性能、低成本、低功耗的微控制器,在软件和引脚封装方面同其他STM32系列处理器是兼容的。
它的时钟频率达到72MHz,能实现高端运算。内嵌128KBFLASH程序存储器。丰富的外设,UART、SPI等串行接口以及最大翻转率18MHz的
1系统结构
温度测量系统主要有温度测量、温度显示电路、RS232串行通讯等模块。主控电路由STM32F103RBT6
及其外围电路组成,是系统的核心部分,主要完成数据的传输和处理工作。温度传感器采集的模拟信号,经过处理器本身内嵌的ADC进行A/D转换后得到实时
GPIO。更重要的是它拥有最快1s转换速度的双12
温度数据,再经处理器相关处理后通过温度显示电路
位精度ADC,此快速采集,高性能的ADC非常适用于
进行实时显示,同时,处理器还可以实现与PC机的通
数据的快速采集和快速处理上,这也是本系统选择它
信功能。
作为核心控制器的一个重要原因。
STM32系列处理器是意法半导体ST公司生产
如图2所示,STM32F103RBT6采用LQFP64
的一种基于ARMv7架构的32位、支持实时仿真和跟
封装,GPIO中PA0(ADC_IN0)引脚接入测温电路
踪的微控制器。嵌入式处理器不能独立工作,必须给
输入的电压模拟信号,PA9和PA10引脚为串口输
它提供电源、时钟以及复位电路。这些提供给嵌入式
入输出,PA1~PA4作为4个数码管的位选信号控
处理器运行所必须的条件电路与嵌入式处理器共同
制,PC0~PC7输出信号接到数码管的段选引脚
构成了这个嵌入式处理器的最小系统。其他如JTAG
上。
调试接口,在芯片实际工作时不是必须的,但本系统16基于STM32的温度测量系统曹圆圆
使V0=3.3V,如此反复多次,直到当温度范围为0~100时,运放电压输出范围为0~3.3V。2.3模数转化器
图2STM32F103RBT6
AD590测温电路输出的电压信号为模拟信号,
要进行4位八段数码管显示,首先要将此信号转换成
目前,测温器件比较多,如热电偶、热电阻及石英数字信号。在此选用A/D转换器为片内的AD转换体温度传感器等,该温度测量系统所选用的温度传感电路。2.2温度测量电路
器是美国模拟器件公司生产的单片集成两端感温电流
STM32处理器所带的12位ADC是一种逐次逼
源AD590。它的测温范围为-55~+150,足以满近式模拟数字转化器,ADC转换速率达1MHz。它足日常生活和生产的应用要求;电源电压可在4~6V有18个通道,可测量16个外部和2个内部信号源。连续、扫描或不连续模范围变化,可以承受44V正向和20V反向电压,因而各通道的A/D转换可以单次、
器件反接也不会被损坏;同时AD590输出标准化,产式执行,ADC的结果可以左对齐或右对齐存储在16生的电流与绝对温度成正比,测量温度每增加1,输位数据寄存器中。
STM32F103RBT6的ADC的基准电压VREF+在出电流增加1A,具有非常好的线性输出性能;而且输
出为电流,便于长距离传输,因为是高阻抗电流源,对芯片内部与电源信号线连接,系统选用一个高精度的
3.3V外部参照电压,以期解决因VCC电源电压精激励电压也不太敏感。
测温电路工作原理如图3所示,基准电压源度不高带来的ADC测量不准确的问题。AD581输出电压为10V,目的是通过R1、R2为AD590提供稳定电压以保证其输出电流信号稳定。
2.4温度显示电路
该测温系统的显示部分由四位八段LED数码管
虽然AD590具有较好的线性度,但在其温度测量范组成,方便廉价。电码管的位选由PA1-PA4口输
O的驱动能力,需围内仍有一定的非线性;AD590在0下输出电流为出进行控制,考虑STM32系列GPI273.2A,用它来测量摄氏温度时需要调零。
要使用三极管来推动提供足够大的电流来点亮LED。四个共阳极LED的八段段选信号a-g、dp分
别接到PC0-PC7上。具体硬件连接图如图4所示。
图3温度测量电路
所以为了提高精度,扩大测量范围,在A/D转换前将信号加以放大并进行零点迁移是必须的,该系统除采用AD581提供精密的基准电压外,还设计有一个双点微调电路,通过两个电位计R2、R4可以分别完成零度和满度的调整。
AD590的输出通过R3、R4将电流信号转化成电压输出,其电压信号将随AD590变化而变化,即运放
图4温度显示电路
2.5数据接口
通信接口是模块与外界进行交互的通道和桥梁。因此,通信接口的设计是模块不可缺少的重要部分。考虑到目前主流的几种通信方式,该测温系统设计了RS-232串行通讯接口以保证其同PC机通信的需
要。MAX3232EEAE为单一正3.3V供电,可同时完
第六引脚输出直流电压随温度变化而变化,并成正比。
成发送转换和接收转换双重功能的专用芯片。其串
选择合适大小的R1、R3,调零调满时,首先在0下调
口电路连接如图5所示。
整R2使运放输出V0=0V,然后在100下调整R4,
17
仪器仪表与分析监测2010年第1期
perature依位模10处理得到四位数码管需要显示的数据,建立字型码TAB表。数码管的八段段选由PC0~PC7控制,欲显示0~9其中一个数字只要让PC口输出它对应的字型码。
为节省占用资源、减小耗电量,采用动态显示也就是利用人眼的暂留视觉,循环轮流点亮各数码管的方法。四位数码管的片选信号是PA1~PA3在控制,通过简单的端口数据寄存器GPIOA_ODR的移位及
图5串口电路原理图
一个延时程序即可实现。3.4串口通信
软件中还编写了串口同PC通信程序,将测量温
3软件设计
度temperature每隔一秒通过串口输出到PC机。采
根据设计任务的要求,系统软件主要完成温度数用STM32的固件函数配置串口的波特率115200、数据的采集和滤波处理、LED数码管显示以及串口同据长度8bit、1位停止、无校验位,使用串口线连接板PC机的通信。程序采用STM32的固件函数库在Re-上的COM0和PC的串口后即能完成信息通信。alViewMDK环境下编写,主要包括以下内容。3.1初始化
首先完成GPIO口初始化配置,将PA0配置为ADC的第0个采样通道,PA9和PA10引脚为串口的输入输出,配置PA1~PA4为数码管控制信号输出,PC0~PC7作为数码管八段段选输出。3.2数据的采集和处理
4结论
本文采用温度传感器AD590测量温度,以STM32F103RBT6做主控芯片,并配上相应的显示、串口通信等外部接口电路,设计制作了一款温度测量系
统。该系统体积小、精度高、功能稳定、使用方便,适用于日常生活、农业生产以及工业制造中的各类温度
实际应用中受外界电磁、噪声等干扰,ADC测出测量。
离谱的数据总会出现。从某种意义上讲,单次ADC
毫无意义。为了减弱干扰,对ADC采样值通常要进参考文献行滤波处理。
系统采用的软件滤波方法为均值滤波,一个温度值每毫秒采样一次,共16次取平均值。这样就需要暂时存储一定数量的采样值,配置DMA通道1用于传输ADC_IN0转换的结果。配置ADC1,连续转换模式、右对齐、非外部触发;ADC转换通道0为规则转换通道,此处参数ADC_SampleTime是转换时间,愈大结果愈准确也稳定。3.3数码显示
[1]STMicroelectronicsCorporation,STM32F103XXDatasheet[J],2007,11.
[2]李宁.基于MDK的STM32处理器应用开发
[M].北京:北京航空航天大学出版社,2008:304-327.
[3]刘鹏程.基于ARM的温度测量系统[J].科技
信息(学术研究),2008(18):77-78.
[4]雷少刚.基于AD590组成的温度测量电路及应
用[J].西安航空技术高等专科学校学报,2007,25(3):21-22.
由于ADC转换后的数据是二进制数据,而数码
管所要显示的数据是十进制数据,因此需要进行二、[5]罗廷坤.基于嵌入式操作系统的智能生物杂交十进制数据转换,ADC输出的最大转换值为0x0FFF仪的设计[D].华北电力大学硕士学位论文.(100),实际要显示的摄氏温度应为(ADC_Value/2004.12.0X0FFF*100)(其中ADC_Value为ADC采样输出),即温度temperature=ADC_Value*100>>12。
将四位数码管小数点设置在第二位后,也就是它所能显示的范围为00.00~99.99。将十进制数tem-
18
因篇幅问题不能全部显示,请点此查看更多更全内容