Arduino+LM35

O sensor LM35 é um sensor de precisão, fabricado pela National Semiconductor, que apresenta uma saída de tensão linear proporcional à temperatura a que se encontra, no nosso caso esta tensão varia entre 0V e 5V, pois o sensor é alimentado com 5V.

Materiais

  • Arduino
  • Breadboard
  • 1x LM35DZ

Montagem

lm35

O LM35 não necessita de qualquer calibração externa ou “trimming” para fornecer os dados com exactidão, porém para ser lido pelo Arduino necessita de conversão, pois o Arduino lê apenas valores inteiros entre 0 e 1023. Assim sabendo que este sensor tem uma resolução de 10mV por cada 1ºC poderemos deduzir uma expressão para a temperatura em função do valor lido. O sensor será alimentado pelo Arduino que fornece 5V, como as entradas analógicas têm uma resolução de 10 bits, ou seja, 2^10 = 1024 e cada grau corresponde a 10 mV então a expressão da temperatura em função do valor lido na entrada analógica do Arduino será:

temperatura = (valor lido * (5/1023))*100 temperatura = 0,0048875855*valor lido

Todos os condutores quando sujeitos a corrente eléctrica dissipam energia, sob várias formas, entre elas sob a forma de calor, e um dos aspectos mais importante num sensor de temperatura é a sua fiabilidade, assim para que seja fiável e as suas leituras sejam tão próximas do real quanto possível é necessário que a energia dissipada na forma de calor seja também a mais baixa possível. Este foi um dos pontos que tivemos em consideração na escolha do sensor de temperatura a utilizar. A escolha recaiu então no LM35, entre outros aspectos pelo seu baixo auto-aquecimento, pois este sensor apenas dissipa 60uA sob a forma de calor, ou seja, o aumento de temperatura que sofre devido à energia dissipada é de apenas 0.1ºC.

LM35dz

Código (Arduino) – Download

int pinoSensor = 0;

int valorLido = 0;
float temperatura = 0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    valorLido = analogRead(pinoSensor);
    temperatura = (valorLido * 0.00488);
    temperatura = temperatura * 100;
    Serial.print("Temperatura actual: ");
    Serial.println(temperatura);
    delay(1000);
}

Referências

You may also like...

6 Responses

  1. Gilson José diz:

    Olá,

    Estou com um probleminha, fiz o circuito como sugerido. Rodou certinho, só há um porém, os mV lidos pela porta variam muito, quando leio no multimetro, leio 190mV, mas pelea porta do arduino varia entre 280mV e 304mVe as vezes indo para 404mV. Há mais um porém, a temperatura no momento segundo o cpetec inpe me informa é minima 12 e maxima 18ºC. A cada 10mV no LM35 não seria 1ºC? nesse caso, no multimetro esta estavel em 190mV o que seria 19ºC correto. O que pode esta ocorrendo? Mais uma duvida, se eu não conectar o pino na porta analógica A0, e ler pelo arduino, não deveria me retornar 0V? Obrigado

  2. Nelson Adriano diz:

    já encomendei uns lm35 para testar 🙂

  3. Não canso de me impressionar com o poder do arduino….

  4. cara ali em 210 = 1024 , não entendi, pode dar uma força?

  5. Julio Cesar diz:

    Voce poderia explicar mais detalhadamente como os cálculos foram feitos? Obrigado.

  6. Luís Pereira diz:

    Viva Ricardo, eu segui o seu tutorial e funciona! O problema é quando adiciono outros sensores ao projeto. As temperaturas lidar ficam maradas. Podes dar umas dicas como ultrapassar esse problema?

    Cumps,

  7. Leandro Sena diz:

    Bom, no que eu entendi, o 5/1024 seria pra voce saber a resolução do conversor A/D…não sei se é isso…mas se for, de onde vem o “*100”?

  8. Rodolfo diz:

    Desculpe-me mas não funcionou.
    Coloquei float antes de analogRead e funcionou.
    Pode me ensinar porque?
    Obs. Fiz tudo exatamente igual

  1. 17/03/2013

    […]  http://ricardo-sequeira.com/arduino-lm35/ […]

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *