1

我有 arduino uno r3、温度传感器 lm335z 和 2 个 LED。我在互联网上找到了这段代码

float celsius = 0, kelvin=0;

void setup()
{
  Serial.begin(9600); 
}

void loop()
{
  kelvin = analogRead(0) * 0.004882812 * 100;
  celsius = kelvin - 273.15; 
  Serial.print("Celsius: ");
  Serial.println(celsius);                  
  //Serial.print("Kelvin: ");
  //Serial.println(kelvin);
  Serial.println();
  delay(10000); 
}

并且适用于此架构

仅温度

我用这段代码添加了两个led:

float celsius = 0, kelvin=0;
int led_green = 13;
int led_red = 12;

void setup()
{
  Serial.begin(9600);
  pinMode(led_green, OUTPUT);
  pinMode(led_red, OUTPUT); 
}

void loop()
{
  kelvin = analogRead(0) * 0.004882812 * 100;
  celsius = kelvin - 273.15; 
  Serial.print("Celsius: ");
  Serial.println(celsius);                  
  //Serial.print("Kelvin: ");
  //Serial.println(kelvin);
  Serial.println();
  if (celsius <= 25.00)
  {
    digitalWrite(led_green, HIGH); 
    digitalWrite(led_red, LOW); 
  }
  else
  {
    digitalWrite(led_green, LOW); 
    digitalWrite(led_red, HIGH); 
  }
  delay(10000); 
}

这个架构:

led和温度

温度比正常温度高 1,2 或 3 度,我想念什么?

4

1 回答 1

1

因为

kelvin = analogRead(0) * 0.004882812 * 100;

因此,ADC 的每一步都将暗示 ~0.5 度的温差。由于您没有在草图中指定任何内容,因此电压参考是电源电压。仅用一个 LED 加载 Arduino 的输出(如您所做的那样)可能会影响 50-100 mV 数量级的电源电压。这反过来会影响您的温度读数几度。

你可以在我的博客中找到对此效果的详细分析

所以这个问题可以通过在电路中添加 LED 来解释。

于 2013-05-31T14:50:53.627 回答