0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

星星科技指导员 来源:ADI 作者:ADI 2022-12-23 10:11 次阅读

本应用笔记介绍了基于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 所示。

poYBAGOlDrmABUe4AAB5ASGRiQk762.png

图1.温度监控系统。

pYYBAGOlDlSAYqPUAAtoS2aCyg8071.png?imgver=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_HIGHPO6 |= 0x01;
#define SCL_LOWPO6 &= 0xFE;
#define SDA_HIGHPO6 |= 0x02;
#define SDA_LOWPO6 &= 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=temp<<8;
temp|=I2C_RxByte();
I2C_TxBit(1);
I2C_Stop();
temp_reg=temp&0X7FFF;//get unsigned bit
temp=temp>>15;//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。

poYBAGOlDlaAbxhrAAAl_6Yg080496.png?imgver=1


图3.精度与温度的关系。

结论

MAX31875为精确的本地温度传感器。使用MAXQ2000的SPI和I2C接口,该温度监测系统可通过MAX7219显示实时温度,作为低成本温度监测器工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6812

    浏览量

    147653
  • 连接器
    +关注

    关注

    96

    文章

    12642

    浏览量

    133139
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148512
收藏 人收藏

    评论

    相关推荐

    投影机的最高分辨率的定义

    投影机的最高分辨率的定义最高显示分辨率是指投影机可显示的输入信号的最高分辨率。投影机通过图像处理算法,可对输入信号进行缩放处理,实现信号满屏显示,如果超出该范围投影机就无法正常显示画面。早期的投影机
    发表于 11-17 16:17

    高分辨率相机的设计,分辨率6千万,有没有做相机方面的大神们!

    高分辨率相机的设计,分辨率6千万,有没有做相机方面的大神们!
    发表于 11-12 10:48

    高分辨率示波器测量微小信号

    谈及分辨率,人们最容易想到的是图像分辨率。买电视、显示器、数码相机、打印机的时候都会考虑这个指标,一般用水平和垂直方向的像素点个数或者DPI(每英寸点数)来表示。显然,高分辨率图像更能清楚展示细节
    发表于 03-21 10:43

    增强高分辨率图像捕获的选择

    来计算一个规则球场的高尔夫球数量,在检验电子或监测大面积如机场终端时提供所需的关键成像细节。虽然它可能不是我们最高分辨率的器件(最高分辨率的是5000万像素的KAF-50100),但它结合极
    发表于 10-25 09:04

    所谓“鹰眼”,即为高分辨率测量模式

    情况。  当熔接完成时,实时测量的光纤末端会越过我们设置的检查点,这时AQ7280给出提示信息(信息提示和报警声)表示安装已经结束。  2“鹰眼”  所谓“鹰眼”,即为高分辨率测量模式。将仪表的采样点
    发表于 01-25 14:40

    高分辨率精密ADC的杂散产生原因是什么?

    虽然目前的高分辨率SAR ADC和Σ-Δ ADC可提供高分辨率和低噪声,但系统设计师们可能难以实现数据手册上的额定SNR性能。而要达到最佳SFDR,也就是在系统信号链中实现无杂散的干净
    发表于 08-12 06:51

    高分辨率ADC解决实际难题

    高分辨率ADC—概览(媒体精选)
    发表于 09-27 12:44

    如何利用单片机和LabVIEW设计出一种高分辨率的SoE系统

    什么是SoE系统,SoE系统由那几部构成?如何利用单片机和LabVIEW设计出一种高分辨率的SoE系统
    发表于 04-09 06:12

    ADC信噪比要怎么分析?高速高分辨率ADC电路要怎么实现?

    在雷达、导航等军事领域中,由于信号带宽宽(有时可能高于10MHz),要求ADC的采样高于30MSPS,分辨率大于10位。目前高速高分辨率ADC器件在采样高于10MSPS时,量化位数
    发表于 04-14 06:16

    如何设计高速高分辨率ADC电路?

    影响ADC信噪比因素有哪些?如何设计高速高分辨率ADC电路?基于AD6644AST一65的高速高分辨率ADC电路设计实例
    发表于 04-23 06:01

    如何实现DCP的高分辨率控制?

    实现高分辨率的原理是什么如何使用X9241实现高分辨率
    发表于 04-27 06:54

    如何实现连续脉冲信号的高分辨率延迟?

    如何实现连续脉冲信号的高分辨率延迟?
    发表于 04-30 06:07

    如何利用先进的热电偶和高分辨率Δ-ΣADC实现高精度温度测量?

    如何利用先进的热电偶和高分辨率Δ-ΣADC实现高精度温度测量?
    发表于 05-12 07:01

    单片机内置ADC实现高分辨率采样的方法

    关注、星标嵌入式客栈,精彩及时送达[导读] 相信ADC的应用或多或少都会用到,在很多场合都有分辨率要求,要实现较高分辨率时,第一时间会想到采用一个较高位数的外置ADC去实现。可是高分辨率...
    发表于 12-08 07:03

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

    发表于 11-16 21:01 0次下载
    如何<b class='flag-5'>构建</b><b class='flag-5'>高分辨率</b><b class='flag-5'>温度</b><b class='flag-5'>监测</b><b class='flag-5'>系统</b>