【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM读取热敏电阻模拟值的温度计

2024-09-3044
AI 快速预览详细 收起
本文介绍了如何使用ESP32-S3 CAM开发板和热敏电阻模块制作一个温度计。通过Arduino代码读取热敏电阻的模拟输入值,并利用Steinhart-Hart方程计算温度。该温度计适用于-55℃到315℃的温度范围,广泛应用于环境温度监测、自动控制等领域。实验中使用的硬件包括ESP32-S3 WROOM N16R8 CAM开发板和OV2640/5640摄像头模组。通过调整阈值,可以实现温度报警功能。

0-2.jpg
09-.jpg
09--.jpg

热敏电阻模块是一种用于测量温度的传感器模块,广泛应用于各种电子项目中。以下是热敏电阻模块的主要特点和使用方法:
1、热敏电阻模块的特点
灵敏度高: 热敏电阻对温度变化非常敏感,能够检测到微小的温度变化。
工作温度范围广: 常温器件适用于-55℃到315℃,高温器件可以适用于更高的温度,低温器件适用于极低温度。
体积小: 热敏电阻体积小,适合测量狭小空间或生物体内的温度。
使用方便: 电阻值范围广,易于加工成各种形状,适合大批量生产。
稳定性好: 具有良好的稳定性和过载能力。

2、热敏电阻模块的应用
温度检测: 热敏电阻模块常用于检测环境温度,通过模拟输出(AO)和数字输出(DO)来提供温度信息。
温度补偿: 在电子设备中用于温度补偿,确保设备在不同温度下的稳定运行。
自动控制: 利用热敏电阻的温度特性,可以实现自动增益控制、延迟电路和保护电路等功能。
过热保护: 在电器设备中用于过热保护,防止设备因温度过高而损坏。

3、使用方法
连接电路: 将热敏电阻模块的AO引脚连接到Arduino的模拟输入引脚(如A0),DO引脚连接到数字输入引脚(如D3)。
调整阈值: 通过调节模块上的电位器,可以设置温度检测的阈值。
读取数据: 使用Arduino代码读取模拟输入值,并根据需要进行温度转换和显示。

 

72-.jpg
72-1.jpg

Arduino实验接线示意图

 

72-1-.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十二:ESP32-S3 WROOM N16R8 CAM开发板WiFi+蓝牙模块
  OV2640/5640摄像头模组
 {花雕动手做}项目之二十五:ESP32-S3 CAM读取热敏电阻模拟值的温度计

实验开源代码
 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验二百三十二:ESP32-S3 WROOM N16R8 CAM开发板WiFi+蓝牙模块
   OV2640/5640摄像头模组
  {花雕动手做}项目之二十五:ESP32-S3 CAM读取热敏电阻模拟值的温度计
*/

#define PIN_ANALOG_IN 1  // 定义模拟输入引脚
#define PIN_LED 2         // 定义LED引脚
#define TEMP_THRESHOLD 29 // 定义温度阈值

// Steinhart-Hart常数
const float A = 1.009249522e-03;
const float B = 2.378405444e-04;
const float C = 2.019202697e-07;

void setup() {
  Serial.begin(115200); // 初始化串口通信,波特率为115200
  pinMode(PIN_LED, OUTPUT); // 设置LED引脚为输出模式
  Serial.println("热敏电阻模块准备就绪!");
}

void loop() {
  int adcVal = analogRead(PIN_ANALOG_IN); // 读取模拟输入值
  float resistance = (1023.0 / adcVal - 1) * 10000; // 计算热敏电阻的电阻值,假设分压电阻为10kΩ
  float temperature = 1.0 / (A + B * log(resistance) + C * pow(log(resistance), 3)) - 273.15; // 使用Steinhart-Hart方程计算温度

  Serial.print("温度: ");
  Serial.print(temperature);
  Serial.println(" °C");

  if (temperature > TEMP_THRESHOLD) {
    digitalWrite(PIN_LED, HIGH); // 点亮LED
    Serial.println("温度超过阈值,LED已点亮!");
  } else {
    digitalWrite(PIN_LED, LOW); // 关闭LED
    Serial.println("温度未超过阈值,LED已关闭。");
  }

  delay(2000); // 延迟2000毫秒
}

实验串口返回情况

 

72.jpg

实验场景图

 

72-2.jpg

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -