Go Down

### Topic: TMP36 Reading Very Low (Read 1 time)previous topic - next topic

#### Aluman000

##### Apr 24, 2011, 02:55 pm
My Uno keeps returning the following:

Temp reading = 147 - 0.47 volts
-2.63 degress C
27.27 degress F

This is in my house at about 70F.

Here is my code:
//TMP36 Pin Variables
int tempPin = A0;        //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

void setup(void) {
// We'll send debugging information via the Serial monitor
Serial.begin(9600);

// If you want to set the aref to something other than 5v
analogReference(EXTERNAL);
}

void loop(void) {

// converting that reading to voltage, which is based off the reference voltage
float voltage = tempReading * aref_voltage / 1024;

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

// now print out the temperature
float temperatureC = (voltage - .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);
}

My setup is identical to this:

minus the photo resistor.

I've tried everything, no idea why the voltage returned isn't what it should be.
I purchased 12 of these sensors and have tried 3.  All with the same results.

#### Aluman000

#1
##### Apr 24, 2011, 03:06 pm
Ok,

So I took out my multimeter, crossed it over the direct + to - terminals on the bread board and got 5V.
This is despite having the supply coming out of the 3.3V socket.

Which means the sensors work, but the 3.3v Socket is actually 5v.  Any idea why?

I've got the SMD Uno if that's any help.

#### kf4ixm

#2
##### Apr 24, 2011, 05:07 pm
try this, and make sure your 3.3v is tied to Aref AND pin 1 of the TMP36...
Code: [Select]
`/* Sensor test sketch  for more information see http://www.ladyada.net/make/logshield/lighttemp.html  */ #define aref_voltage 3.3         // we tie 3.3V to ARef and measure it with a multimeter! //TMP36 Pin Variablesint tempPin = 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 temperaturesint tempReading;        // the analog reading from the sensor void setup(void) {  // We'll send debugging information via the Serial monitor  Serial.begin(9600);      // If you want to set the aref to something other than 5v  analogReference(EXTERNAL);} void loop(void) {   tempReading = analogRead(tempPin);    Serial.print("Temp reading = ");  Serial.print(tempReading);     // the raw analog reading   // converting that reading to voltage, which is based off the reference voltage  float voltage = tempReading * aref_voltage;  voltage /= 1024.0;   // print out the voltage  Serial.print(" - ");  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.0 / 5.0) + 32.0;  Serial.print(temperatureF); Serial.println(" degress F");   delay(1000);`

Go Up

Please enter a valid email to subscribe