Как получить температуру окружающей среды от датчика температуры Arduino Lilypad

StackOverflow https://stackoverflow.com/questions/1664707

  •  12-09-2019
  •  | 
  •  

Вопрос

Я подключаю Датчик температуры LilyPad к a Основная плата LilyPad Arduino 328 с целью считывания достаточно точных показаний температуры окружающей среды.Датчик получает питание и выдает ответы, которые я могу считывать по последовательному каналу.

Проблема, с которой я сталкиваюсь, заключается в том, что считывание данных с датчика дает мне очень необычные, хотя и непротиворечивые цифры.Я считываю данные с аналогового входа датчика и преобразую их в вольты следующим образом...

loop(){
    float therm;   
    therm = analogRead(2); // Read from sensor through Analog 2
    therm *= (5.0/1024.0); // 5 volts / 1024 units of analog resolution
    delay(100);
}

Это дает постоянное значение около 1,1 Вольта, которое, как указано в документации к датчику, соответствует температуре окружающей среды около 60 градусов Цельсия, когда истинная температура окружающей среды составляет около 23 градусов.Датчик не находится близко к какой-либо другой электронике, поэтому я не могу предвидеть, что это проблема.

Неверен ли мой код для считывания показаний датчика?Мог ли мой датчик быть неисправен?

Это было полезно?

Решение

Разве lilypad не является arduino 3,3 В, так что это означает, что он должен быть (3.3/1024.0), что было бы 0,726 В или 22,6 С?

Другие советы

Попробуй это.У меня была точно такая же проблема. подробнее читайте здесь: http://www.ladyada.net/learn/sensors/tmp36.html

//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
                        //the resolution is 10 mV / degree centigrade with a
                        //500 mV offset to allow for negative temperatures

#define BANDGAPREF 14   // special indicator that we want to measure the bandgap

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup()
{
  Serial.begin(9600);  //Start the serial connection with the computer
                       //to view the result open the serial monitor 
  delay(500);
}

void loop()                     // run over and over again
{
  // get voltage reading from the secret internal 1.05V reference
  int refReading = analogRead(BANDGAPREF);  
  Serial.println(refReading);

  // now calculate our power supply voltage from the known 1.05 volt reading
  float supplyvoltage = (1.05 * 1024) / refReading;
  Serial.print(supplyvoltage); Serial.println("V power supply");

  //getting the voltage reading from the temperature sensor
  int reading = analogRead(sensorPin);  

  // converting that reading to voltage
  float voltage = reading * supplyvoltage / 1024; 

  // print out the voltage
  Serial.print(voltage); Serial.println(" volts");

  // now print out the temperature
  float temperatureC = (voltage - 0.5) * 100 ;   //converting from 10 mv per degree wit 500 mV offset
                                               //to degrees ((volatge - 500mV) times 100)
  Serial.print(temperatureC); Serial.println(" degress C");

  // now convert to Fahrenheight
  float temperatureF = (temperatureC * 9 / 5) + 32;
  Serial.print(temperatureF); Serial.println(" degress F");

  delay(1000);                                     //waiting a second
}

В соответствии с этим Документация, analogRead возвращает целое число.Вы пробовали забросить его на поплавок вот так:

therm = (float)analogRead(2);

Что показывает напряжение датчика на вольтметре?Меняются ли показания при изменении температуры датчика?(Удержания руки на нем должно быть достаточно, чтобы изменить показания.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top