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.

Exibições: 11251

Responder esta

Respostas a este tópico

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. 

(http://playground.arduino.cc/Main/LM35HigherResolution)

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

No meu canal tenho algumas simulações.

LM35 Meu canal

Abs.

CK

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço