O sensor LM35 que veremos aqui é, provavelmente, uma solução exagerada para isto. É um sensor de alta precisão (erro máximo de 3/4 de grau na faixa de -55 a 150° C). O modelo que uso aqui é o LM35DZ (encapsulamento TO-92, operação somente de 0 a 150° C), que você encontra no Brasil por algo em torno de R$4.
O datasheet do LM35 (que coloquei nos arquivos do blog) possui uma boa explicação do uso e alguns circuitos interessantes.
Montagem Básica
A forma mais simples de usar o LM35 é alimentá-lo com uma tensão entre 4 e 20V e medir a tensão na saída; cada 0,01V corresponde a um grau centígrado (independente da tensão de alimentação).
Esta montagem simples permite medir temperaturas de 2 a 150° C, o que é mais que suficiente para medir a temperatura ambiente na maior parte do Brasil. Se você preferir trabalhar com graus Farenheit e tem preguiça de fazer contas, existe o LM34 com saída de 0,01V para cada grau Farenheit.
Medindo Temperaturas Negativas
Se você precisar medir temperaturas negativas, o circuito abaixo permite fazê-lo, você precisará usar os modelos LM35, LM35A ou LM35C (ver detalhes dos limites no datasheet).
O datasheet apresenta outras montagens, por exemplo para situações em que é existirá um cabo grande entre o sensor e o resto do circuito.
Ligando ao Arduino
A ligação básica é trivial: ligar a alimentação e conectar a saída a uma entrada ADC. O programa abaixo é um exemplo simples de leitura da temperatura:
- // Teste do sensor LM35
- void setup () {
- Serial.begin (38400);
- analogReference (DEFAULT);
- }
- void loop () {
- int vSensor = analogRead(A1);
- long temp = (vSensor*5000L)/1024L;
- Serial.print (vSensor);
- Serial.print (' ');
- Serial.print (temp/10);
- Serial.print (',');
- Serial.println (temp % 10);
- delay (1000);
- }
- // Teste do sensor LM35
- // Referencia interna no ADC
- void setup () {
- Serial.begin (38400);
- analogReference (INTERNAL);
- }
- void loop () {
- int vSensor = analogRead(A1);
- long temp = (vSensor*11000L)/1024L;
- Serial.print (vSensor);
- Serial.print (' ');
- Serial.print (temp/100);
- Serial.print (',');
- Serial.println (temp % 100);
- delay (1000);
- }
Testes
Para fechar, um vídeo com alguns testes do sensor.
Nenhum comentário:
Postar um comentário