FAÇA UM TERMÔMETRO DE -50 A +100ºC – C/ PIC 16F818 , SENSOR LM35 E DISPLAY DE 7 SEGUIMENTOS (REF193) – PicSource
Aparelhos de Medição Microcontroladores Programas PIC (Compiler CCS "C") Programas PIC (Compiler XC8 )
8 de Setembro de 2015 23 de Setembro de 2017 Claudio Larios
Uma ampla escala para muitas aplicações…
Esta montagem didática mostra o uso do LM35 em leituras de temperaturas de -50 a +100ºC. Veja o esquema abaixo:
Ao lermos o datasheet do LM35, notamos que sua faixa de trabalho é de -50ºC a +150ºC. Assim, este componente pode ser usado tanto para indicar temperaturas negativas como positivas na escala de graus centigrados. De uma forma simples, ele fornece 10 mVolts por graus centigrados. Até mesmo ligando um voltÍmetro podemos obter a temperatura no sensor, por se dividir a tensão lida (em miliVolts) por 10.
Alimente o LM35 no terminal 'vcc' e o 'gnd' com +5volts.
Ligue um multímetro na escala de volts no pino 'out' ao 'gnd'.
Anote a tensão lida. Suponha que tenha lido 0,21 Volts.
0,21 Volts => 210 mVolts / 10 = 21.0ºC
Neste caso, o sensor está com temperatura de 21 graus Centigrados.
Mas como ler tensões negativas?
Com o terminal 'gnd' do LM35 direto no gnd da alimentação nunca iremos conseguir ler tensões negativas. Além do mais, o conversor analógico do PIC não consegue ler de forma direta tensões negativas.
O artifício está em se colocar um diodo em série com este terminal. Para que? Para obtermos uma diferença de potencial produzida pelo diodo de aproximadamente 700 mVolts em relação ao gnd da alimentação. Isto representa 70ºC na escala negativa, bem além da capacidade do sensor.
Mas como então vai ser de ajuda este diodo e esta queda de tensão?
Se colocarmos um voltímetro no terminal gnd do sensor a saída (com o diodo já instalado no pino 'gnd' e o resistor de 18k do 'out' ao gnd) veremos que resfriando severamente o LM35, este irá começar a marcar tensão negativa, também de forma proporcional a temperatura.
Isto ocorre porque o terminal 'out' do LM35 passa a ter tensão menor do que o pino 'gnd'.
Como usar o PIC para determinar esta tensão negativa?
Teremos que usar dois canais de conversão analógico para digital. Um lerá a tensão no terminal 'gnd' do LM35 e o outro canal irá ler a tensão do pino 'out'. Se a tensão do pino 'out' for maior que a tensão do pino 'gnd' for positiva, temos temperatura na escala positiva. Se a tensão do pino 'gnd' for maior que do pino'out' temos temperatura negativa.
O programa testa qual das medições é maior, e subtrai a menor da maior para obter a temperatura real do sensor.
pino 'gnd' do LM35 com 0,756v ('vgnd')
pino 'out' do LM35 com 0,551v ('vout')
0,756 – 0,551 = 0,205 -> 205 mV /10 = 20.5ºC Como 'vout' é menor que 'vgnd' temos o sinal '-' -> -20.5ºC
Talvez venha-lhe a mente que um diodo irá variar sua barreira de tensão com a temperatura. Mas lembrando que ele estará em série com o sensor LM35, qualquer mudança no gnd irá também acarretar mudança no pino 'out', cancelando o efeito na subtração de um pelo outro:
Pegando o caso anterior:
Mas supondo que houve um aumento na tensão do diodo pela temperatura, no valor de ,08 Volts:
0,836 – (0,551+0,08) = 0,205 -> 205 mV /10 = 20.5ºC Como 'vout' é menor que 'vgnd' temos o sinal '-' -> -20.5ºC
Ou seja, continua marcando corretamente a temperatura do sensor, cancelando a alteração do diodo.
Foi necessário usar um vref externa de 2,5 volts obtidos a partir do vcc por meio de um 'trimpot', no pino 2 do pic. O último dígito mostra apenas de 0,5 em 0,5 grau, pois usamos uma escala ampla e um conversor de apenas 10 bits.
Visando obter uma leitura mais estável, são feitas muitas leituras (500) e depois obtido a média destas leituras.
Para facilitar para os hobistas, temos a versão tanto em catodo comum como em anodo comum. Também foi compilado com CCS C e com XC8 da Microchip (free).
Poderá obter uma explicação mais detalhada vendo o datasheet do LM35, da National Semiconductor,em especial na pagina 7 (figura 6).
Errata: No arquivo C, em um dos comentários consta "utiliza o timer 0 para multiplexação". Desconsidere este comentário, porque não usa o timer 0 para a multiplexação dos displays, mas ela ocorre no loop principal.
Obs. Esta montagem é de natureza didática, sendo realizada apenas em placa de montagem experimental (do tipo Protoboard), sendo sujeita a bugs ainda não observados. Os arquivos estão sendo fornecidos e poderão ser alterados pelos hobistas conforme sua necessidade.