Pessoal, estou tentando entender o calculo do LM35
Pelo que entendi do conversor A/D quando ele ler 5v na entrada ele vai converter para 1023.
então, por regra de três temos:
1023 —– 5V
512 ——- X
X = (5 * 512) / 1023 = 2.5 V
Ou seja, se o A/D mostrar o valor digital 512 significa que está entrando 2.5V nele.
Então: 5V/1023 = 0.00488 que é a precisão do A/D e será usada como constante e multiplicada por 100 para transformar milivolts em celsius.
Blz, entendi a teoria e todos os exemplos que pego na internet acaba indo para este exemplo.
Só que quando uso estes valores não batem com a temperatura lida.
Tags:
estou usando este código de exemplo:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int potPin = 1;
float temp = 0;
int val=0;
void setup() {
lcd.begin(16, 2);
}
void loop(){
val = analogRead(potPin);
temp = (5.5*val*100)/1023.0; //converte voltagem em temperatura
//Serial.println ((long)temperature);
lcd.setCursor(0, 0);
lcd.print("Artejose");
lcd.setCursor(9, 0);
lcd.print(millis()/1000);
lcd.setCursor(0, 1);
lcd.print("Temp.");
lcd.setCursor(9, 1);
lcd.print(temp);
lcd.print("C");
}
Só que no Multímetro a leitura em milivolts nos terminais do LM35 está em 226, ou seja, 22,6ºC
e no Display LCD está mostrando 36,02ºC
Quando coloquei para multiplicar por 2.6 ele mostra 17.03, mas no multimetro marca 22.6
Queria entender este calculo para calibrar melhor o LM35
Aqui tem um texto legal sobre esse sensor: http://ricardo-sequeira.com/arduino-lm35/
Já segui este exemplo também e ele dá no display uma leitura de aprox. 10ºC acima da leitura correta nos terminais do LM35, ainda não estou entendendo.
Eu fiz uma pesquisa sobre o assunto tempo atrás, devido a variações na leitura e erro nas conversões, no final cheguei na seguinte formula que nada mais é que simplificação da regra de 3 que você fez lá em cima. funciona muito bem, tenho um termômetro laboratorial como referência.
valorLido = analogRead(pinoSensor);// leitura da temperatura
double temperatura = (valorLido * 0.48857); // converte a leitura do LM35 em graus Celsius
Outro ponto é a utilização de capacitores para melhorar o sinal lido pela porta analógica, pois dependo a qualidade do fio utilizado ou até o comprimento do mesmo afetam na leitura.
Olá Artejose.
Talvez este tópico ajude:
http://labdegaragem.com/forum/topics/sensor-de-temperatura-estavel-...
Att.
Olha não sou um expert sobre arduino, porem tem um detalhe muito importante que é a resolução do conversor A/D, no caso do arduino UNO sei que é de 10 bits, em termos mais simples é a maxima divisão que ele pode fazer, deem uma pesquisada sobre resolução de conversor A/D, mas mesmo usando um microcontrolador com conversor A/D de resolução baixa consegue-se ter valores bons, claro aplicando formulas mais complexas, mas que fique claro, a resolução não irá mudar.
Espero ter ajudado.
Cara a resposta que procura está no próprio site do arduino.
Lá ta bem explicado, só que em inglês.
Olá, uma coisa me chamou atenção no seu sketch:
temp = (5.5*val*100)/1023.0; //converte voltagem em temperatura
Por que vc está multiplicando por 5.5???? O correto é multiplicar por 5.0
Outra coisa: ali no 1023 o correto é 1024 (ok, isso não irá mudar muita coisa, é apenas um capricho. O range varia de 0 a 1023, logo há 1024 leituras possíveis)
Outra dica que eu poderia te dar seria colocar um resistor entre 80 K até 600 K ohms (pode ser 80K mesmo) entre o Vout do LM35 para o GND do arduino.
arduino LM35
Vcc ----------------------- +Vs
GND---------------------- GND
GND----- resistor------ Vout
|
A1-----------|
Aproveite e faça outro teste:
1) meça a temperatura ambiente com algum termômetro. Esse valor iremos considerar como "testemunha"
2) faça seu sketch exibir simplesmente o val = analogRead(potPin) ==> isto é, vamos saber qual valor que o LM35 está enviando pro arduino
3) faça a leitura com multímetro nos terminais do LM35. Precisamos saber quantos volts estão entrando no LM35 e quantos volts o LM35 envia no terminal Vout
4) Lembre-se que aquela fórmula temp = (5*val*100)/1024 só é válida se vc alimentar o LM35 com 5V. Mas se por exemplo alimentar com 3.3V, a fórmula deverá ser temp = (3.3*val*100)/1024 ; mas enfim, o mais importante é tentar debugar, conhecendo antes de mais nada o valor val = analogRead(potPin)
O chato do LM35 que ele vai de 4V - 30V
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por