ESP8266-Arduino编程实例-MCP9808数字温度传感器驱动

MCP9808数字温度传感器驱动

1、MCP9808传感器介绍

MCP9808 数字温度传感器将 -20°C 和 +100°C 之间的温度转换为精度为 ±0.5°C(最大值)的数字字。 MCP9808 带有用户可编程寄存器,可为温度传感应用提供灵活性。这些寄存器允许用户选择设置,例如关断或低功耗模式以及温度事件和临界输出边界的规范。

当温度变化超出规定的边界限值时,MCP9808 会输出一个事件信号。用户可以选择将事件输出信号极性设置为低电平有效或高电平有效的比较器输出以用于恒温器操作,或设置为基于微处理器的系统的温度事件中断输出。事件输出也可以配置为临界温度输出。该传感器具有行业标准的 2 线、SMBus 和兼容标准 I2C™ 的兼容(100kHz/400kHz 总线时钟)串行接口,允许在单个串行总线中控制多达 8 个传感器。

在这里插入图片描述

MCP9808有如下特性:

  • MCP9808的精度如下:

    • ±0.25°C(典型值)从 -40°C 到 +125°C
    • ±0.5°C(最大值)从 -20°C 到 +100°C
  • 用户可选择的测量分辨率:0.5°C、0.25°C、0.125°C、0.0625°C

  • 用户可编程温度限制

  • 温度窗口限制

  • 临界温度极限。

  • 用户可编程温度警报输出

  • 工作电压范围:2.7V 至 5.5V

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • MCP9808感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线图如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

1)导入依赖头文件

1
2
3
#include <Wire.h>
#include "Adafruit\_MCP9808.h"

本次使用的MCP9808传感器驱动库如下:

2)定义传感器

1
2
Adafruit_MCP9808 tempsensor = Adafruit\_MCP9808();

3)在setup函数中初始化串口及启动传感器

1
2
3
4
5
6
7
8
9
10
void setup() {
Serial.begin(115200);
// 启动传感器
if (!tempsensor.begin())
{
Serial.println("Couldn't find MCP9808!");
while (1);
}
}

4)在loop函数中读取传感器温度数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void loop() {
// 读取传感器温度数据
float c = tempsensor.readTempC();
// 转换为华氏温度
float f = c \* 9.0 / 5.0 + 32;
Serial.print("Temp: ");
Serial.print(c);
Serial.print(" C\t");
Serial.print(f);
Serial.println(" F");
delay(250);

// 传感器休眠
tempsensor.shutdown\_wake(1);
delay(2000);
// 传感器唤醒
tempsensor.shutdown\_wake(0);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126081864