如何构建高分辨率温度监测系统

本应用笔记介绍了基于maxq2000微控制器、max31875高分辨率本地温度传感器和max7219八位led显示驱动器的带led显示屏的温度监测系统。
介绍
max31875为精度为±2°c的本地温度传感器,具有i2c/smbus 接口。该器件采用4焊球晶圆级封装,平均电源电流<10μa,工作温度范围为-20°c至+150°c。 max31875具有纤巧的封装、低功耗和出色的精度,可用于各种温度测量应用,如便携式设备、手持电子设备和工业设备。本应用笔记提出了温度监测系统的想法。系统基于maxq2000微控制器、max31875高分辨率本地温度传感器和max7219 8位led显示驱动器。maxq2000通过i读取温度2max31875的c接口和led显示屏通过串行外设接口(spi)使用max7219 led驱动器实现。
概述
温度监测系统使用maxq2000作为控制器。它用作温度传感器和led显示屏之间的接口。maxq2000通过i接收温度信息2max31875的c接口,为max7219产生一个spi,驱动led显示屏。我2maxq2000提供的c接口工作频率为400khz或100khz,spi命令的发送频率可达8mhz。maxq2000通过i持续检查环境温度2max31875的c接口。一个八位led以摄氏度为单位显示max31875的本地温度。max7219为紧凑的串行输入/输出共阴极显示驱动器。只需将其连接到八位七段数字led显示屏,然后通过spi从微控制器发送温度信息。
硬件设置
测试程序在maxim命令模块(cmaxqusb)上运行。它用作从pc接收命令的接口,并创建spi或smbus/i2c兼容接口,用于向max31875和max7219发送命令。板载电平转换器将maxq2000 2.5v逻辑信号转换为外部vdd逻辑电平。vdd逻辑电平可通过跳线选择2.5v、3.3v或5v,由板载超低噪声ldo max8511提供。max3373为双向电平转换器,专为i级设计。2c总线。板载提供可选的用户可切换 scl/sda 上拉电阻。max31875评估板带有vdd、gnd、scl和sda测试点接头,连接至cmaxqusb上的p7连接器。max7219用于驱动8位、7段led显示屏。max7219的spi连接到cmaxqusb上的连接器p8。固件通过连接器p5加载到maxq2000中。硬件配置如图 1 所示。实际设置如图 2 所示。
图1.温度监控系统。
图2.温度监控设置。
软件功能
温度监测程序包括三个主要功能:从max31875到i获取温度读数2c接口,向max7219发送spi命令,并将结果输出到led显示屏上。
cmaxqusb模块提供了一个“位撞击”i2c 使用maxq2000的gpio引脚。maxq系列微控制器具有高速、灵活的gpio模块和独立的i/o电源电压,非常适合此类位敲击应用。
选择两个 gpio 引脚用作 scl 和 sda。包括maxq2000 i2项目目录中的 c 库文件(maxq2000_i2c.h 和 maxq2000_i2c.c),并为 i 配置所需的 i/o2c 接口。
为 scl 和 sda 信号选择 gpio 引脚的代码如下:
#define scl_enable pd6 |= 0x01;
#define scl_disable pd6 &= 0xfe;
#define sda_enable pd6 |= 0x02;
#define sda_disable pd6 &= 0xfd;
#define scl_high  po6 |= 0x01;
#define scl_low  po6 &= 0xfe;
#define sda_high  po6 |= 0x02;
#define sda_low  po6 &= 0xfd;
要从max31875读取温度,请向ic地址0x90发送读取命令,并0x00温度寄存器地址。max31875的温度寄存器以二进制补码格式显示;msb 是符号位。
获取温度的代码如下所示。maxq2000_i2c.c文件中的txbyte用于传输i上的8位字节2c总线,和我2c_rxbyte用于从从接收8位字节。要从浮点型 gettemp() 读取温度:
{
int temp;
float number=0;
int temp_reg;
// first set the address
i2c_start();
i2c_txbyte(0x90);
if (!checkforvalidack()) return -1;
i2c_txbyte(0x00);
if (!checkforvalidack()) return -1;
i2c_stop();
// now read the data
i2c_start();
i2c_txbyte(0x91);
if (!checkforvalidack()) return -1;
temp=i2c_rxbyte();
i2c_txbit(0);
temp=temp15;//get sign
if(temp)
sign=1;
else
sign=0;
number=(temp_reg-sign*32768)*0.0625/8 ;
return number;
}
从max31875接收的温度读数通过spi和max7219的寄存器发送到max7219。spi_transmit() 执行如下所示的 spi 传输。
unsigned int spi_transmit(const unsigned int ch)
{
unsigned int spib;
while(spicn_bit.stby); /* wait until the character can be sent. */
spicn_bit.spic = 0;   /* in case it is already set, clear the */
 /* transfer complete flag. */
spib = ch;   /* send the data. */
while(!spicn_bit.spic);   /* wait for the transfer to complete. */
spib = spib;   /* get the data received. */
spicn_bit.spic = 0;   /* clear the tansfer complete flag. */
return spib;
}
max7219驱动8位、7段led显示屏。max7219提供bcd码b解码器。但是,为了显示摄氏符号,我们使用无解码模式。max7219的寄存器数据被分配一个数字模式,因此,每个led可以显示相应的数字。
char digit_pattern[] =
{ 0x7e, // 0
0x30, // 1
0x6d, // 2
0x79, // 3
0x33, // 4
0x5b, // 5
0x5f, // 6
0x70, // 7
0x7f, // 8
0x7b, // 9
0x77, // a
0x1f, // b
0x4e, // c
0x3d, // d
0x4f, // e
0x47 // f
};
max7219_writeregister(max7219reg_degree,digit_pattern[12],length_16);// display celsius sign
测试结果
将此温度监测器放入福禄克®油浴校准器内,收集 -20°c 至 +150°c 的温度读数。 监视器在整个温度范围内的精度(图3)低于1°c。
图3.精度与温度的关系。
结论
max31875为精确的本地温度传感器。使用maxq2000的spi和i2c接口,该温度监测系统可通过max7219显示实时温度,作为低成本温度监测器工作。

碧如蓝BRL-YZ型扬尘监测系统介绍
都是DC惹的“祸” 细说DC-DC转换器的抗干扰性
2018年屏下指纹识别技术占手机指纹识别市场比重大约仅3%
智慧牲畜物联网系统功能与应用价值
显示器爱眼护眼四大技术
如何构建高分辨率温度监测系统
业界首创UHF无源设计解决方案,富士通多维度推进IoT创新应用
IC Insights:电视芯片明年看增9%
苹果公司将通过Apple Wallet应用程序为12所学校扩展非接触式ID
针对高速数据转换器的最新高速JESD204B标准带来了验证挑战
爱玛电动车500里不充电,解决用户充电烦恼
智能家居单品化发展和系统化发展有什么差别
小米22号下午发布战略级电视:分体式多功能你会喜欢吗?
pin对pin兼容DRV8860的低边驱动器MS31860简介
福光股份:2017年镜头市占率全球第三
采用红外光传感器与ARM的汽车速度管理系统的设计
波音公司携手SparkCognition计划推出SkyGrid
产能释放,星源材质预计上半年净利增长
爱美雅科技引领快充市场:TP44100内置GaN MOS芯片的240W快充解决方案
PLM、ERP、APS、MES几种信息系统的数据集成