Show Posts
Pages: [1]
1  Products / The Arduino Starter Kit / Re: [3/Love-o-meter] it seems TMP36 doesn't work (volts: 0.00 ; degrees: -50.00) on: February 01, 2013, 01:09:48 pm

EDIT: Something is very wrong, if i change the sensors position on the breadboard i get different values..


It might be that the Arduino input port is bad?  Can you try changing to another analog input port? (make sure you update your code to match)  Also some times if the wire leads are too long they can affect the sensor measurements.



I tried some of the other projects before going back to this, now i get these numbers(again with 100ms delay):

Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 35, Volts: 0.17, Degrees: -32.91
Sensor Value: 92, Volts: 0.45, Degrees: -5.08
Sensor Value: 96, Volts: 0.47, Degrees: -3.13
Sensor Value: 97, Volts: 0.47, Degrees: -2.64
Sensor Value: 89, Volts: 0.43, Degrees: -6.54
Sensor Value: 74, Volts: 0.36, Degrees: -13.87
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00
Sensor Value: 0, Volts: 0.00, Degrees: -50.00


with this code:

Code:
const int sensorPin = A0;
const float baselineTemp = 20.0;

void setup(){
  Serial.begin(9600);
  for(int pinNumber = 2; pinNumber < 5; pinNumber++){
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
  }
}


void loop(){
  int sensorVal = analogRead(sensorPin);
  Serial.print("Sensor Value: ");
  Serial.print(sensorVal);
  float voltage = (sensorVal/1024.0)*5.0;
  Serial.print(", Volts: ");
  Serial.print(voltage);
  Serial.print(", Degrees: ");
  float temperature = (voltage - .5)*100;
  Serial.println(temperature);
 
  if(temperature < baselineTemp){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp +6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
  }
  delay(100);
}

I've noticed the numbers are the same whether i have the + connected or not, so i guess there's something wrong with the power? Or the sensor(s)?
2  Products / The Arduino Starter Kit / Re: [3/Love-o-meter] it seems TMP36 doesn't work (volts: 0.00 ; degrees: -50.00) on: January 31, 2013, 12:07:05 pm

I just realised i had made some changes, so the numbers are different (but still not correct). This is the true outprint example with the above code:

Sensor Value: 52, Volts: 0.25, Degrees: -24.61
Sensor Value: 53, Volts: 0.26, Degrees: -24.12
Sensor Value: 56, Volts: 0.27, Degrees: -22.66
Sensor Value: 61, Volts: 0.30, Degrees: -20.21
Sensor Value: 69, Volts: 0.34, Degrees: -16.31
Sensor Value: 74, Volts: 0.36, Degrees: -13.87
Sensor Value: 75, Volts: 0.37, Degrees: -13.38
Sensor Value: 73, Volts: 0.36, Degrees: -14.36
Sensor Value: 68, Volts: 0.33, Degrees: -16.80
Sensor Value: 58, Volts: 0.28, Degrees: -21.68
Sensor Value: 56, Volts: 0.27, Degrees: -22.66
Sensor Value: 53, Volts: 0.26, Degrees: -24.12
Sensor Value: 52, Volts: 0.25, Degrees: -24.61


Looks like your sensor acts more like a TMP 35 range.  If you remove the - .5 from the formula (temperature = voltage * 100) do the readings make sense?
Are the sensor values changing that fast?  It could be bad connections causing sporadic readings.  Otherwise I guess it could be just a bad sensor.



Above print is with 100ms delay. Also, the sensor does not react on temperature changes at all. I've tried with different sensors of the same type, the result is the same (print below is without the -.5):

Sensor Value: 55, Volts: 0.27, Degrees: 26.86
Sensor Value: 55, Volts: 0.27, Degrees: 26.86
Sensor Value: 56, Volts: 0.27, Degrees: 27.34
Sensor Value: 57, Volts: 0.28, Degrees: 27.83
Sensor Value: 60, Volts: 0.29, Degrees: 29.30
Sensor Value: 67, Volts: 0.33, Degrees: 32.71
Sensor Value: 72, Volts: 0.35, Degrees: 35.16
Sensor Value: 75, Volts: 0.37, Degrees: 36.62
Sensor Value: 75, Volts: 0.37, Degrees: 36.62
Sensor Value: 70, Volts: 0.34, Degrees: 34.18
Sensor Value: 64, Volts: 0.31, Degrees: 31.25
Sensor Value: 59, Volts: 0.29, Degrees: 28.81
Sensor Value: 57, Volts: 0.28, Degrees: 27.83
Sensor Value: 56, Volts: 0.27, Degrees: 27.34
Sensor Value: 55, Volts: 0.27, Degrees: 26.86
Sensor Value: 55, Volts: 0.27, Degrees: 26.86


EDIT: Something is very wrong, if i change the sensors position on the breadboard i get different values..
3  Products / The Arduino Starter Kit / Re: [3/Love-o-meter] it seems TMP36 doesn't work (volts: 0.00 ; degrees: -50.00) on: January 30, 2013, 03:19:39 pm
Any idea what i'm doing wrong?

Please post your code.

Should be the same as in the manual.

Code:
const int sensorPin = A0;
const float baselineTemp = 20.0;

void setup(){
  Serial.begin(9600);
  for(int pinNumber = 2; pinNumber < 5; pinNumber++){
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
  }
}


void loop(){
  int sensorVal = analogRead(sensorPin);
  Serial.print("Sensor Value: ");
  Serial.print(sensorVal);
  float voltage = (sensorVal/1024.0)*5.0;
  Serial.print(", Volts: ");
  Serial.print(voltage);
  Serial.print(", Degrees: ");
  float temperature = (voltage - .5)*100;
  Serial.println(temperature);
  
  if(temperature < baselineTemp){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp +6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
  }
  delay(100);
}

I just realised i had made some changes, so the numbers are different (but still not correct). This is the true outprint example with the above code:

Sensor Value: 52, Volts: 0.25, Degrees: -24.61
Sensor Value: 53, Volts: 0.26, Degrees: -24.12
Sensor Value: 56, Volts: 0.27, Degrees: -22.66
Sensor Value: 61, Volts: 0.30, Degrees: -20.21
Sensor Value: 69, Volts: 0.34, Degrees: -16.31
Sensor Value: 74, Volts: 0.36, Degrees: -13.87
Sensor Value: 75, Volts: 0.37, Degrees: -13.38
Sensor Value: 73, Volts: 0.36, Degrees: -14.36
Sensor Value: 68, Volts: 0.33, Degrees: -16.80
Sensor Value: 58, Volts: 0.28, Degrees: -21.68
Sensor Value: 56, Volts: 0.27, Degrees: -22.66
Sensor Value: 53, Volts: 0.26, Degrees: -24.12
Sensor Value: 52, Volts: 0.25, Degrees: -24.61
4  Products / The Arduino Starter Kit / Re: [3/Love-o-meter] it seems TMP36 doesn't work (volts: 0.00 ; degrees: -50.00) on: January 30, 2013, 04:02:24 am
Any idea what i'm doing wrong?

Please post your code.

Should be the same as in the manual.

Code:
const int sensorPin = A0;
const float baselineTemp = 20.0;

void setup(){
  Serial.begin(9600);
  for(int pinNumber = 2; pinNumber < 5; pinNumber++){
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
  }
}


void loop(){
  int sensorVal = analogRead(sensorPin);
  Serial.print("Sensor Value: ");
  Serial.print(sensorVal);
  float voltage = (sensorVal/1024.0)*5.0;
  Serial.print(", Volts: ");
  Serial.print(voltage);
  Serial.print(", Degrees: ");
  float temperature = (voltage - .5)*100;
  Serial.println(temperature);
  
  if(temperature < baselineTemp){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
  }
  else if(temperature >= baselineTemp +6){
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
  }
  delay(100);
}
5  Products / The Arduino Starter Kit / Re: [3/Love-o-meter] it seems TMP36 doesn't work (volts: 0.00 ; degrees: -50.00) on: January 29, 2013, 01:46:17 pm
I have a problem with the sensor values jumping from 0 to ~85 every approximately 1 sec

The board is set up exactly as the book describes, left pin to 5V, mid pin to A0, right pin to GND.

example print:

Sensor Value: 0, Volts: 0.00, Degrees: 20.00
Sensor Value: 0, Volts: 0.00, Degrees: 20.00
Sensor Value: 0, Volts: 0.00, Degrees: 20.00
Sensor Value: 6, Volts: 0.03, Degrees: 17.07
Sensor Value: 36, Volts: 0.18, Degrees: 2.42
Sensor Value: 65, Volts: 0.32, Degrees: -11.74
Sensor Value: 79, Volts: 0.39, Degrees: -18.57
Sensor Value: 78, Volts: 0.38, Degrees: -18.09
Sensor Value: 59, Volts: 0.29, Degrees: -8.81
Sensor Value: 28, Volts: 0.14, Degrees: 6.33
Sensor Value: 4, Volts: 0.02, Degrees: 18.05
Sensor Value: 0, Volts: 0.00, Degrees: 20.00
Sensor Value: 0, Volts: 0.00, Degrees: 20.00
Sensor Value: 0, Volts: 0.00, Degrees: 20.00


Any idea what i'm doing wrong?
Pages: [1]