Como Chegar Temp ambiental do Arduino Lilypad sensor de temperatura
-
12-09-2019 - |
Pergunta
Eu estou conectando um LilyPad Sensor de temperatura a um Arduino Lilypad 328 Main Board com o objetivo de leitura leituras de temperatura ambiente bastante precisos. O sensor está recebendo energia e dando uma resposta que eu sou capaz de ler sobre serial.
O problema que estou confrontado com é que a leitura do sensor está me dando muito incomum - embora os números consistentes. Estou lendo a entrada do sensor analógico e conversão para volts assim ...
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);
}
Isso resulta uma leitura consistente de cerca de 1,1 volts que a documentação do sensor indica seria uma temperatura ambiente de cerca de 60 graus Celsius quando a verdadeira temperatura ambiente é de cerca de 23 graus. O sensor não está perto na proximidade de quaisquer outros equipamentos eletrônicos, então não posso prever que ser o problema.
É o meu código para a leitura do sensor incorreta? Poderia meu sensor de estar com defeito?
Solução
Não é o lilypad um arduino 3.3V, o que significa que deve ser (3.3/1024.0)
, o que seria 0.726V, ou 22,6 C?
Outras dicas
Tente isto. Eu tinha exatamente o mesmo problem.read mais aqui: 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
}
De acordo com esta documentação , analogRead retorna um inteiro. Você já tentou convertê-lo para um float assim:
therm = (float)analogRead(2);
O que a tensão do sensor ler um voltímetro? Será que a mudança de leitura quando você muda a temperatura do sensor? (Segurando sua mão sobre ele deve ser suficiente para mudar a leitura.)