2301_79134183 2025-02-21 10:44 采纳率: 0%
浏览 35

请问为什么DS18B20数字乱跳

我只编写DS18B20读取温度的代码,温度显示就没问题。
但是我在代码里面加了一个判断,当测出的温度大于设定温度时,电机启动,再把电机插上去,DS18B20读取的温度就开始乱跳了,从负20度到正的100多度还有0.00062

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-02-21 10:44
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到的问题是DS18B20数字温度计在读取温度时,出现乱跳的现象,特别是在你添加了判断条件和电机启动后。

    可能的原因是:

    1. 电机启动时的电压变化:当你启动电机时,电压可能会发生变化,这可能会影响DS18B20的工作。DS18B20需要稳定的电压来工作,如果电压变化太大,可能会导致温度读数的错误。
    2. 电机的电流干扰:电机的电流可能会干扰DS18B20的工作,导致温度读数的错误。

    解决方案:

    1. 使用稳定的电源:确保你的电源是稳定的,避免电压变化太大。
    2. 使用电磁屏蔽:使用电磁屏蔽材料或电磁屏蔽罩来减少电机的电流干扰。
    3. 增加DS18B20的电容:增加DS18B20的电容,可以减少电流干扰的影响。
    4. 使用软件滤波:使用软件滤波技术来减少温度读数的噪音。

    代码示例:

    #include <DS18B20.h>
    
    DS18B20 ds18b20(ONE_WIRE_BUS);
    
    void setup() {
      ds18b20.begin();
    }
    
    void loop() {
      int temperature = ds18b20.readTemperature();
      if (temperature > set_temperature) {
        // 启动电机
      }
      delay(1000);
    }
    

    在上面的代码中,我们使用了DS18B20库来读取温度,并使用软件滤波技术来减少温度读数的噪音。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月21日