Pesquisar este blog

sexta-feira, 23 de julho de 2010

Sensor de Temperatura e LCD

Descrição do Projeto

Construção de um termômetro digital usando Arduino e sensor de temperatura LM35.
Inicialmente um LCD apresentará a mensagem "APERTE O BOTAO" para medir", ao se pressionar um botão o Arduino irá medir e apresentar a temperatura atual em "ºC" no display.

Material Utilizado

- Arduino Duemilenove;
- Sensor LM35DZ;
- Botão Push;
- Resistor de 10 kΩ;
- Protoboard;
- Fios de ligação.

Sensor de Temperatura

Existem diversos tipos de sensores que podem ser usados para medir temperatura. Um desses é o LM35 (para visualizar o datasheet e mais detalhes click aqui).
Ele é bem simples de ser usado. Possui 3 terminais, sendo um deles GND, outro Vin (alimentação) e Vout (saída), a tensão de saída varia conforme "montagem" do sensor em relação ao circuito e claro com a mudança da temperatura.

Para esse experimento a montagem será feita da seguinte forma:

Montagem Simples (+2ºC a +150ºC)

Respeitando a seguinte pinagem:

Overview do Sensor LM35DZ

LCD

Para esse projeto, o resultado e demais informações são apresentadas num display de 16 colunas por 02 linhas. O display possui 16 pinos explicados na tabela abaixo:

Diagrama de pinos do LCD

1 - VSS: Ground ("Terra");
2 - VCC: Tensão de alimentação (5V);
3 - VEE: Contraste (de 0 a 5V, contraste máximo ou mínimo respectivamente);
4 - RS: nível lógico '1' indica dados e '0' instrução;
5 - R/W: nível lógico '1' indica Leitura e '0' Escrita;
6 - E (Enable): '1' ou '1->0' Habilita e '0' Desabilita;
7~14: Pinos de dados;
15 e 16: Ânodo e Cátodo do Backlight (se existir).

Botão Push

A função do botão é enviar um sinal lógico para o Arduino, que posteriormente irá calcular e apresentar no LCD a temperatura. Tome cuidado, pois têm-se que limitar a corrente no pino do Arduino, é nesse ponto que se encaixa o resistor de 10 kΩ, que deve ser ligado como pull-down no pino da placa, representado pela figura abaixo:

Representação de ligação de um botão com o Arduino. Neste caso o pino é "ativado" em nível lógico 1.

Esquema de Ligação

A ligação dos componentes é representada pela figura abaixo:

Esquemática dos componentes externos com o Arduino.

A comunicação com o LCD é realizada pelos 4 bits mais significativos do barramento de dados do LCD, o pino Vo se encontra aterrado (contraste máximo) assim como o R/W que proporciona apenas "escrita" de comandos e dados no módulo do display.

A ligação do LCD com o Arduino ficou dessa forma:
- RS: Pin digital 12
- Enable: Pin digital 11
- D4: Pin digital 05
- D5: Pin digital 04
- D6: Pin digital 03
- D7: Pin digital 02

O sinal do botão entra no pino 07 digital.

O Vout do sensor é ligado no pino 04 analógico do Arduino.

Programação

Nessa parte o circuito está montado, sendo possível começar a programação de forma "segura", ou seja, sabendo-se o que se vai fazer e como fazer.

O display de LCD é um componente muito útil quando se quer apresentar mensagens em forma de texto, resultados e etc, mas para usá-lo, necessita-se seguir uma série de regras e comando para poder controlá-lo. Na Internet se encontra uma série de bibliotecas que ajudam e muito o implementador. Particularmente usei a própria biblioteca que vem junto com o programa do Arduino (para mais detalhes click aqui).

Para não deixar esse post muito grande optei por não incluir a programação aqui, mas sim disponibilizá-la para download (para baixar click aqui).

Comentários da programação

Para converter o valor lido do sensor para "ºC" usá-se a seguinte expressão: tempEmºC = (tensaoMaxEntradaAD * valorLidoAD * 100) / 1023. No meu caso medi com o multímetro e coloquei que a tensaoMaxEntradaAD foi de 4,87 justamente para tentar minimizar o erro.

Conclusão

O projeto é um tanto amador mas possibilita o entendimento de como utilizar um botão, o LCD e até mesmo um sensor de temperatura em conjunto com o Arduino.
Claro que pode ser melhorado e muito, o sensor LM35 possibilita uma precisão muito boa caso seja montado de forma um tanto mais complexa, ou usando essa mesma configuração de montagem mas amplificando o sinal afim de se obter uma maior precisão na leitura.

Bibliografia