Question

Je suis un Lilypad capteur de température un LilyPad Arduino 328 Main Board dans le but de lire des lectures de température ambiante assez précis. Le capteur est alimenté et donner une réponse que je suis capable de lire sur série.

Le problème que je suis confronté à est que la lecture du capteur me donne très inhabituel - bien que les chiffres cohérents. Je lis l'entrée de capteur analogique et la conversion en volts comme cela ...

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

Cela donne une lecture constante d'environ 1,1 Volts qui la documentation du capteur indique serait une température ambiante d'environ 60 degrés Celsius lorsque la vraie température ambiante est d'environ 23 degrés. Le capteur est ferme pas à proximité de toutes les autres appareils électroniques, donc je ne peux pas prévoir que d'être le problème.

Mon code de lecture du capteur incorrect? mon capteur pourrait être défectueux?

Était-ce utile?

La solution

est-ce pas le lilypad un arduino 3.3V, ce qui signifie qu'il devrait être (3.3/1024.0), qui serait 0.726V, ou 22,6 C?

Autres conseils

Essayez ceci. J'ai eu exactement le même problem.read plus ici: 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
}

Selon cette href="http://arduino.cc/en/Reference/AnalogRead", analogRead retourne un entier. Avez-vous essayé la coulée à un flotteur comme ceci:

therm = (float)analogRead(2);

Qu'est-ce que la tension du capteur lue sur un voltmètre? Est-ce que le changement de lecture lorsque vous modifiez la température du capteur? (En tenant votre main sur il devrait être suffisant pour changer la lecture.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top