- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于MLX90615和STM32的多点红外温度测量系统设计
目前在多点温度测量系统中应用较为广泛的是DALLAS公司的数字温度传感器DS18B20,其优点是只需一根总线,就能完成系统中数据的交换与控制。但DS18B20响应速度慢,精度低,且在实际应用中当总线挂接的DS18B20的数目超过8个时,就必须为每个DS18B20提供独立电源供电,导致系统维护变得十分困难。红外测温技术作为一种便捷、准确的非接触式测温技术而得到快速发展。红外测温可实现在其视场范围内对难以接触区域或危险区域进行连续、实时的温度监测,有效降低了测温作业的危险系数,且具有体积小、精度高、可组网及实时性能好等优点。本文采用数字式红外温度传感器MLX90615作为温度检测器件,以STM32微处理器为核心,设计实现多点红外温度测量系统。
该系统具有优点为:测温精度高,测量不影响温度场的分布,非接触式温度测量,降低危险系数,响应时间短,易于实现动态测量。
1红外辐射测温基本原理
红外辐射是一种人眼不可见的光线,俗称红外线,它是介于可见光中红色光和微波之间的光线。由于带电粒子的运动,一切温度高于绝对零度的物体都在不停地向周围空间发出红外辐射能量,能量波长主要集中在0.6~15μm波段。其辐射能量密度与温度的关系符合斯蒂芬-波尔兹曼辐射定律:E=εσT4 (1)
由式(1)可知,只要已知物体的温度及其辐射率,即可计算出它所发射的辐射功率。反之,如果测量出物体的辐射功率,即可确定物体的温度。红外传感器的输出信号是被测目标温度To与传感器自身温度Ta共同作用的结果:
式中:温度单位均为Kelvin,A为仪器常数,与传感器的设计结构有关。
2硬件设计
非接触式多点红外测温系统硬件部分主要由红外传感器组、微处理器、其他外围电路及PC组成。红外传感器将其视场范围内的红外辐射转化成数字信号,通过SMBus总线将数据传至STM32微处理器,微处理器与上位机进行串口通信,将温度数据显示在上位机。
2.1红外传感器部分
传感器部分采用数字式红外传感器MLX90615ESG-DAA,该芯片是由Melexis公司生产的高精度数字式测温芯片,具有PWM和SMBus两种输出方式,正常工作的环境温度范围是-40~85℃,被测对象温度范围是-40~115℃,若需更小的测温范围,可通过SMBus总线修改E2PROM中相应控制字来改变这个范围,从而提高精度。发射率可设置0~1.0之间的任意值,可根据公式:发射率=dec2hex[round(16 384×ε)],将0~1.0之间的任意浮点数ε转换为16进制数,然后写入相应控制字。
MLX90615主要由红外热电堆传感器、低噪声放大器、16位模/数转换器和DSP单元等组成,其结构框图如图1所示。红外热电堆传感器将采集到的红外辐射转化为电信号,并经过低噪声放大器放大后送给模/数转换器。模数转换器输出的数字信号经FIR/IIR低通滤波器调理后送入数字信号处理器,数字信号处理器对数字信号运算处理后输出测量结果并保存在MLX90615内部RAM中,可以通过SMBus或PWM方式供主控CPU单元读取。
若干个红外传感器作为从器件,通过SMBus总线连接到微处理器,典型的SMBus配置如图2所示,SDA及SCL引脚皆需300 kΩ弱上拉。注意,MLX90615红外传感器支持7位地址,因此同一总线上的传感器数量最多为127个。
2.2微处理器
微处理器采用基于ARM Conex-M3的32位微控制器STM32F103C8T6.该微处理器具有高速可靠、温度范围宽、资源丰富、功耗低等优点,广泛应用于医疗保健、手持设备、电机控制等场合。STM32F103C8T6具有64 KB的片内FLASH存储器、32个通用I/O引脚、2个10路12位A/D转换器、3个通用定时器等外设资源和USART,I2C,SPI,CAN等通信接口,能够满足多点红外测温系统的设计要求。
3软件设计
3.1 MLX90615的传输协议
SMBus数据传输协议为主设备与从设备之间的数据通讯提供了可能,该协议规定,在某一时刻总线上只能有一个主设备有效。主设备可通过“读数据”和“写数据”与从设备进行“交流”,其数据传输格式如图3、图4所示。其中,S为起始位,Slave Address为从器件地址,Wr为写标志,Command为命令字节,Rd为读标志,PEC为出错数据包,P为停止位。
SDA上的数据在SCL变为低电平300 ns后即可改变,数据在SCL的上升沿被捕获。16位数据分2次传输,每次传一个字节。每个字节都是按照高位(MSB)在前,低位(LSB)在后的格式传输,两个字节中间的第9个时钟是应答时钟。数据传输时序如图5所示。
3.2温度采集模块
MLX90615红外温度传感器的出厂默认地址为0x5b,因此应首先通过软件对红外传感器的地址进行修改,避免总线上出现“一呼百应”的情况。MLX90615支持7位地址,可使用地址值为1~127,所有传感器都会响应0x00地址,应避免使用。更改地址时应保证只有一只传感器挂接在总线上,且必须先对传感器地址控制字清空,即先写入“0x00”电址,再写入指定地址值,其流程如图6所示。
初始化主要完成通用IO、串口、中断及SMBus总线的设置。
为每个MLX90615红外传感器设置其惟一地址后,将其通过SDA及SCL两线挂接到SMBus总线,与微处理器进行通信。
微处理器作为总线上的主器件向总线上的第一个ML=X90615发送命令并等待应答,待收到应答后,读取该点温度值并通过串口传至上位机进行显示,之后向第二个MLx90615发送命令并等待应答,得到应答后读取该点温度并传至上位机显示,以此类推,对总线上的所有MLX90615进行温度数据采集。MLX90615中读出的温度值转换为摄氏温度的公式为:
To=RAM(07h)0.02-273.15 (3)
数据读取流程图如图7所示。
3.3上位机界面
上位机温度监测界面采用C++下的MFC类库编写,实现上位机通过串口与微处理器连接,接收由微处理器发送的温度数据并显示。可通过单击界面上的按钮来控制、选择监测点,如图8所示。
4实验结果
实验采用3只MLX90615传感器分别监测热水、冰及室内温度,开始监测1 min后得到其方差、平均值及参考温度如表1所示。
结果表明,MLX90615测温精度更高,且测量结果稳定,响应速度可达7~9 ms.缺点是测温时与被测对象距离需保持在2 cm以内,距离超过70 cm时所测温度为环境温度。
5结语
本文设计实现了基于MLX90615红外传感器的非接触式多点温度测量系统,该系统测量精度可达0.02℃,且响应速度快,抗干扰能力强。传感器与微处理器的接口简单,简化了硬件设计工作,为多点温度测量提供一种新方法。