Frage

Ich Anschluss eines LilyPad Temperatursensor a LilyPad Arduino 328 Main Board mit dem Ziel, ziemlich genaue Umgebungstemperaturwerte zu lesen. Der Sensor wird mit Strom versorgt und gibt eine Antwort ich bin in der Lage über serielle zu lesen.

Das Problem, das ich konfrontiert bin, ist, dass von dem Sensor zu lesen gibt mir sehr ungewöhnlich - obwohl konsistente Zahlen. Ich bin mit dem analogen Sensoreingang zu lesen und zu V wie diese Umwandlung ...

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

Dies ergibt eine kontinuierliche Lese von etwa 1,1 Volt, die der Sensor Dokumentation wäre eine Umgebungstemperatur von etwa 60 Grad Celsius zeigt an, wenn die wahre Umgebungstemperatur etwa 23 Grad betragen. Der Sensor ist in der Nähe anderer Elektronik nicht schließen, so ich nicht, dass sein das Problem vorhersehen kann.

Ist mein Code der Sensor nicht korrekt zum Lesen? Könnte mein Sensor defekt sein?

War es hilfreich?

Lösung

Ist das nicht der lilypad ein 3.3V Arduino, so dass heißt, sollte es (3.3/1024.0) werden, was 0.726V wäre, oder 22,6 C?

Andere Tipps

Versuchen Sie dies. Ich hatte genau das gleiche problem.read mehr hier: 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
}

Nach dieser Dokumentation , analogRead eine ganze Zahl zurückgibt. Haben Sie versucht, es mit einem Schwimmer wie so Gießen:

therm = (float)analogRead(2);

Was die Sensorspannung auf einem Spannungsmessgerät gelesen hat? Ist das Lesen ändern, wenn Sie die Temperatur des Sensors ändern? (Halten Sie Ihre Hand auf es sollte ausreichen, um das Lesen zu ändern.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top