How to get the ambient temperature from an Arduino Lilypad temperature sensor

I am connecting a LilyPad temperature sensor to the LilyPad Arduino 328 Home page to read reasonably accurate ambient temperature readings. The sensor receives power and gives answers that I can read by the serial number.

The problem I am facing is that reading from the sensor gives me a very unusual - albeit a constant number. I read the input of an analog sensor and convert it to volts, like this ...

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);
}

This gives a consistent reading of about 1.1 volts, which the sensor documentation indicates is the ambient temperature of about 60 degrees Celsius, when the true ambient temperature is about 23 degrees. The sensor is not close to any other electronics, so I can not predict that this is a problem.

Is my sensor reading code incorrect? Can the sensor be faulty?

+5
source share
3 answers

Isn't lilypad a 3.4 V, so does that mean it should be (3.3/1024.0), which is 0.726 V, or 22.6 C?

+7
source

Try it. I had exactly the same problem. More details here: http://www.ladyada.net/learn/sensors/tmp36.html

//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36 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
}
+3

, analogRead . :

therm = (float)analogRead(2);

What reads voltage on a voltmeter? Does the reading change when the temperature of the sensor changes? (Keeping your hand on it should be enough to change the readings.)

0
source

All Articles