数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 978|回复: 20

[Arduino] dht22温度不准什么原因

[复制链接]
发表于 2024-10-25 10:56:25 来自手机浏览器 | 显示全部楼层 |阅读模式
通电后温度一直升高,室温才20度,它都显示快40度了”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2024-10-25 13:35:29 | 显示全部楼层
电路有问题?供电超限了?旁边有发热的器件?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-25 13:51:33 来自手机浏览器 | 显示全部楼层
eric_yangsen 发表于 2024-10-25 13:35
电路有问题?供电超限了?旁边有发热的器件?

供电是继电器模块上出来的 同时供给esp01s,是3.3v 如图旁边没有发热源,是模块自己在发热,这样模块是不是坏了
回复 支持 反对

使用道具 举报

发表于 2024-10-25 16:03:37 | 显示全部楼层
最早接触stm32时玩过,
回复 支持 反对

使用道具 举报

发表于 2024-10-25 16:21:10 | 显示全部楼层
改进一下电路,读的时候再供电。之前玩DS18B20也遇到一样的情况,温度值会逐渐逐渐升高,跟别人说的很精准,有温补什么的完全不同,要么就是买到假货了,要么就是元件自身工作就会发热影响测量结果,最好的办法还是读之前上电
回复 支持 反对

使用道具 举报

发表于 2024-10-25 16:58:12 | 显示全部楼层
温度越高,湿度越小,河狸
回复 支持 反对

使用道具 举报

发表于 2024-10-25 17:47:50 | 显示全部楼层
南天音乐 发表于 2024-10-25 16:21
改进一下电路,读的时候再供电。之前玩DS18B20也遇到一样的情况,温度值会逐渐逐渐升高,跟别人说的很精准 ...

读的时候再供电,这个思路不错
回复 支持 反对

使用道具 举报

发表于 2024-10-25 23:00:27 | 显示全部楼层
看你的模块是5v供电还是3.3v供电?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 07:08:43 来自手机浏览器 | 显示全部楼层
huangjingjie 发表于 2024-10-25 23:00
看你的模块是5v供电还是3.3v供电?

到继电器是5,到esp和dht是3.3,卖家介绍页说的是3-5.5都可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 07:09:00 来自手机浏览器 | 显示全部楼层
wangxiangtan2 发表于 2024-10-25 16:58
温度越高,湿度越小,河狸

问题是温度不准
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 07:10:47 来自手机浏览器 | 显示全部楼层
南天音乐 发表于 2024-10-25 16:21
改进一下电路,读的时候再供电。之前玩DS18B20也遇到一样的情况,温度值会逐渐逐渐升高,跟别人说的很精准 ...

在考虑,可能还是程序不对,原来程序是实时读取温度,然后显示,改了延时十秒一次,但是还是一直升温,现在考虑还有一段代码是判断温度的,怀疑这个也是在频繁读取数据导致温度升高
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 10:23:11 来自手机浏览器 | 显示全部楼层
南天音乐 发表于 2024-10-25 16:21
改进一下电路,读的时候再供电。之前玩DS18B20也遇到一样的情况,温度值会逐渐逐渐升高,跟别人说的很精准 ...

还有一个问题,我用的esp8266-01s,两个io口,一个io2用来控制继电器模块了,另一个io0用来读取数据,这个怎么实现读取前自动给dht22上电呢?
回复 支持 反对

使用道具 举报

发表于 2024-10-26 12:52:58 | 显示全部楼层
上拉电阻呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 16:57:02 | 显示全部楼层
图片里可能看不出,补个接线图和程序
  1. #define BLINKER_WIFI      //// 设置 Blinker's 工作模式为 WiFi
  2. #include <ESP8266WiFi.h>  // ESP8266 WiFi库
  3. #include <DHT.h>          // DHT传感器库
  4. #include <Blinker.h>      // Blinker库,用于与点灯科技通信

  5. #define DHTPIN 2       // DHT22传感器连接的引脚
  6. #define RELAY_PIN 0    // 继电器连接的引脚
  7. #define DHTTYPE DHT22  // DHT传感器类型


  8. DHT dht(DHTPIN, DHTTYPE);  // 初始化DHT传感器

  9. // Blinker配置信息
  10. char auth[] = "72e69126a448";       // Blinker平台的设备认证密钥
  11. char ssid[] = "手机维修_中国移动";  // WiFi名称
  12. char pswd[] = "12345678";           // WiFi密码

  13. float tempThreshold = 30.0;  // 温度阈值
  14. float humThreshold = 40.0;   // 湿度阈值

  15. // 定义 Blinker 按钮和数显组件
  16. BlinkerButton button1("btn-relay");  // 控制继电器的按钮
  17. BlinkerNumber tempNumber("temp");    // 显示温度的数显
  18. BlinkerNumber humNumber("hum");      // 显示湿度的数显

  19. unsigned long lastReadTime = 0;
  20. const long readInterval = 10000;


  21. void setup() {
  22.   pinMode(RELAY_PIN, OUTPUT);  // 设置继电器引脚为输出模式
  23.   dht.begin();                 // 初始化DHT传感器

  24.   // 连接到 WiFi 和 Blinker 平台
  25.   Blinker.begin(auth, ssid, pswd);

  26.   // 按钮回调函数,用于手动控制继电器,接受一个String参数
  27.   button1.attach([](const String &state) {
  28.     if (state == "1") {                // 如果按钮被按下
  29.       digitalWrite(RELAY_PIN, HIGH);   // 继电器闭合
  30.       Blinker.notify("继电器已闭合");  // 发送通知到手机
  31.     } else {                           // 如果按钮被松开
  32.       digitalWrite(RELAY_PIN, LOW);    // 继电器断开
  33.       Blinker.notify("继电器已断开");  // 发送通知到手机
  34.     }
  35.   });
  36. }

  37. void loop() {
  38.   // 读取温度和湿度
  39.   unsigned long currentTime = millis();

  40.   if (currentTime - lastReadTime >= readInterval) {
  41.     lastReadTime = currentTime;

  42.     float humidity = dht.readHumidity();        // 读取湿度
  43.     float temperature = dht.readTemperature();  // 读取温度
  44.       // 温湿度显示在手机端
  45.     tempNumber.print(temperature);  // 向Blinker App发送温度数据
  46.     humNumber.print(humidity);      // 向Blinker App发送湿度数据


  47.     // 如果温度或湿度超过阈值,控制继电器
  48.     if (temperature > tempThreshold || humidity < humThreshold) {
  49.       digitalWrite(RELAY_PIN, LOW);  // 继电器断开
  50.     } else {
  51.       digitalWrite(RELAY_PIN, HIGH);  // 继电器闭合
  52.     }
  53.   }




  54.   // 保持Blinker连接
  55.   Blinker.run();
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 16:57:33 | 显示全部楼层

还需要接上拉电阻?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-26 19:44:07 | 显示全部楼层

还需要上拉电阻吗
回复 支持 反对

使用道具 举报

发表于 2024-10-26 20:19:57 | 显示全部楼层
南天音乐 发表于 2024-10-25 16:21
改进一下电路,读的时候再供电。之前玩DS18B20也遇到一样的情况,温度值会逐渐逐渐升高,跟别人说的很精准 ...

感谢,你说的有道理,读数值时再上电。
我也一直感觉DS18B20不太准是因为多个DS18B20一同测量时,数值相差很大,有时候能差2度,估计山寨的DS18B20太多了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-27 16:22:25 来自手机浏览器 | 显示全部楼层
tank161 发表于 2024-10-27 00:54
自发热????

摸着是的,就算不接数据引脚,停电一段时间后也会发热
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-27 17:44:55 来自手机浏览器 | 显示全部楼层
终结了,是dht22坏了,换个一个新的,已经正常

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-8-23 06:12 , Processed in 0.109200 second(s), 9 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表