Hey guys,
im trying to build an arduino project to send temperatures from my temperature sensor TMP36 to my webserver.
But there is one problem.
In the first step i get the voltage of my sensor. Its around 0.74 V. When i now add the ethernet Shield on my arduino uno und check the voltage again i get 3.22 V. Both times my read from analog port A0. To calculate the temperature i must substract 0.5 from my voltage and multiplicate it with 100. But with the ethernet shield there are wrong values. I tryed to substract 2.48 V from my Voltage value. But there is the next problem. When i touch the sensor my voltage goes down. When i do the same without ethernetShiel my Voltage goes up. That is correct.
Can you explain me, why i get this problem and to fix it ?
That is the Code i used:
"
//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
/*
- 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
}
void loop() // run over and over again
{
//getting the voltage reading from the temperature sensor
int reading = analogRead(sensorPin);
// converting that reading to voltage, for 3.3v arduino use 3.3
float voltage = reading * 5.0;
voltage /= 1024.0;
// 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 ((voltage - 500mV) times 100)
Serial.print(temperatureC); Serial.println(" degrees C");
// now convert to Fahrenheit
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF); Serial.println(" degrees F");
delay(1000); //waiting a second
}
"