Você está na página 1de 4

07/03/2022 20:58 Termômetro RS-232 com PIC12F675 e LM35

Navigator Termômetro com PIC12F675 e LM35 e comunicação


serial RS-232

This is like deja vu all over again.


-- Yogi Berra

* Esta página está em construção *


Fig. 1 - Diagrama de
Introdução blocos - Ampliar figura
(11Kb)
Este projeto tem por objetivo a construção de um termômetro digital
com
  as seguintes características:

O circuito deve ser barato, simples, compacto e exato em pelo


menos 0.5°C.
A temperatura deve ser comunicada a um PC por meio da porta
serial padrão RS-232.
A transferência de dados deve ser feita de modo confiável.
O consumo deve ser baixo e a alimentação deve ser obtida da Fig. 2 - Esquema elétrico
própria interface RS-232. (versão PDF) - Ampliar
O circuito deve medir e informar continuamente, em intervalos figura (61Kb)
regulares, digamos a cada segundo, a temperatura registrada.
O termômetro deve medir a temperatura atmosférica, mas deve
permitir
modificações simples tanto no hardware como no software
para acomodar outros
tipos de uso (por exemplo em freezers,
saunas, etc).

Parece que todos os dias uma dezena de novos termômetros digitais


surgem na Internet. No entanto, após realizar várias buscas, não pude
encontrar nenhum projeto que atendesse simultaneamente a todos os
requisitos
acima. Fig. 3 - Desenho da
placa, lado cobreado
Teoria de operação (versão PDF) - Ampliar
figura (16Kb)
O circuito proposto consiste dos seguintes blocos: um sensor analógico de
temperatura, um amplificador/condicionador para o sinal do sensor,
um
microcontrolador para converter esse sinal analógico em um dado digital
e
acoplamento com o PC por meio de uma interface RS-232.
Um diagrama
exibindo esses blocos é apresentado na Figura 1.

Temperatura e o LM35
Amplificação com LM358 (Condicionamento do sinal)
Alimentação e o 78L05
Comunicação RS-232 Fig. 4 - Desenho da
CRC placa, lado dos
componentes (versão
O circuito PDF) - Ampliar figura
(29Kb)
O diagrama esquemático do circuito pode ser visto na Figura 2.

A alimentação é obtida através das linhas DTR, RTS e terra da interface


RS-
232. A tensão positiva presente nos dois primeiros pinos varia conforme
o
hardware, mas seja qual for, provavelmente é superior a 5V e
capaz de
fornecer alguns poucos miliamperes.

Como estes sinais podem oscilar entre uma tensão positiva e outra
negativa, estes foram conectados ao
circuito por meio de diodos 1N4148.
Fig. 5 - Renderização do
Um capacitor de 33uF ou mais
foi usado como buffer de tensão, caso
circuito no kicad -
ambos os sinais transitem
cortando a alimentação momentaneamente.
Ampliar figura (38Kb)

A tensão máxima para o PIC12F675 é 5.5V e a mínima para o


sensor LM35
é 4.0V, mas como veremos adiante, o terra deste chip
será ligado em cerca
de 0.5V, e portanto a alimentação para o sensor não pode
ser menor do
que 4.5V. Isso nos deixa praticamente nos obriga
a trabalhar com uma
tensão regulada de 5V, o que é feito por um
regulador miniatura 78L05.

https://www.dm.ufscar.br/~waldeck/pic/thermopic/ 1/4
07/03/2022 20:58 Termômetro RS-232 com PIC12F675 e LM35
Para que o sinal serial seja corretamente detectado pelo PC
precisamos de
uma alimentação negativa, que obtemos através da
lina TX da interface
RS-232. Um diodo 1N4148 assegura o correto
sentido da corrente,
carregando negativamente um capacitor de 10uF.

O sensor de temperatura escolhido é um LM35, por ser barato


preciso e ter
uma ampla faixa linear de medição que vai de -55°C a 150°C.
Este CI Fig. 6 - Transfer -
informa a temperatura por meio de uma tensão em volts.
Se a referência Ampliar figura (295Kb)
for a terra, então 23.5°C será apresentada
na saída como 0.235V. Cada
incremento de 0.1°C representa
um incremento de 1mV na tensão.

Temperaturas negativas não são muito comuns na maior parte do Brasil


mas estas podem ocorrer. Uma outra possibilidade seria poder usar
este
circuito em geladeiras, freezers e outras câmaras frias,
onde a temperatura
rotineiramente vai abaixo dos 10 graus negativos.

Para poder registrar essas temperaturas, devemos deslocar


a referência do Fig. 7 - Placa, lado do
sensor para cima. Escolhemos arbitrariamente
deslocar de 0.450V, ligando circuito impresso -
o terra do LM35 a esta tensão.
Com isto, 0°C será lido como 0.450V, -10°C Ampliar figura (236Kb)
como 0.350, etc.

Desse modo, a temperatura -46.8°C será registrada como 0V, e 0°C com
0.468V. A escala do LM35 vai de -55°C a 150°C,
mais do que o suficiente
para este projeto. De fato, por razões que
serão apresentadas mais
adiante, nossa escala vai de -46.8°C a
55.7°C.

Como a mínima tensão de referência possível para o PIC escolhido é


de
2.1V, e este tem resolução de 10 bits (ou seja, sua escala de 0
a 2.1V está
Fig. 8 - Placa, lado dos
dividida em 1024 pedaços), sua resolução mínima é de
2.05mV. Isto é
componentes - Ampliar
suficiente para medir temperaturas de 0.2 em 0.2°C,
mas não é suficiente
figura (216Kb)
para a resolução do LM35.

Além disso, 2.1V representaria 163.27°C, bem acima da mais


alta
temperatura já registrada na superfície da terra (ver trivia)
e também além
do fim da escala do LM35. Para tirari pleno proveito da resolução
desse
componente, será preciso amplificar o sinal.

Mas amplificar de quanto? Escolhendo a tensão de referência de 2.5V,


que
é muito fácil de criar com apenas dois resistores ou usando uma
fonte de
referência como o LM336-2.5, temos 2.5V/1023=2.44mV. Portanto,
para Fig. 9 - Resultado final,
casar perfeitamente as variações do LM35 com as possíveis valores
de vista lateral - Ampliar
amostragem do conversor A/D, basta amplificarmos seu sinal
2.44 vezes. figura (222Kb)

Essa amplificação pode ser feita convenientemente pelo amplificador


operacional LM358. Para que o ganho se aproxime de 2.44, escolhemos
um resistor de 33K e outro de 23K, obtendo um ganho de
(33+23)/23 =
2.434782609 que é bastante próximo
de 2.44. O resistor de 23K é de fato
um de 22K e outro de 1K.

Substituindo o resistor de 1K por um trimpot multivoltas, é possível


ajustar
mais precisamente o ganho em 2.44. No entanto, neste projeto
decidimos
Fig. 10 - Resultado final,
deixar esse ajuste por conta do software. A contrapartida é
que o ganho
vista superior - Ampliar
precisa ser medido cuidadosamente com um multímetro.
figura (241Kb)
No meu projeto, determinei o ganho do meu amplificador ligando a
entrada do LM358 a um trimpot multivoltas de 50K, com uma extremidade
ligada a 5V e outra à terra. Em seguida, ajustei o trimpot até que
a tensão
de 0.5V fosse exatamente medida na entrada (para isso, usei um
voltímetro
de alta impedância). Num circuito ideal, eu deveria esperar
0.5V*2.44=1.22V
na saída, mas eu encontrei 1.219V, ou seja, um ganho
de 1.219/0.5=2.438, o que me pareceu bastante satisfatório.

Se o valor medido pelo conversor A/D é s, a tensão em Volts


na saída do Fig. 11 - Circuito
LM35 dever ser t = 2.5*s/2.44/1023. Para transformar essa
tensão em funcionando em seu local
temperatura em graus Celsius, fazemos T = 100*(t-0.468)°C. definitivo - Ampliar
figura (266Kb)
O topo da escala é atingido quando a tensão na entrada do conversor A/D
chega a 2.5V, o que corresponde a leitura do valor s=1023. Substituindo
esse valor nas fórmulas acima, resulta em T=55.7°C. A menos que você
more em Al Azizia, Libia, isto deve bastar.

Para que os valores reais fossem o mais próximo possível do teórico,


conectei o LM35 ao LM358 e este ao PIC por resistores de 1K, aumentando
efetivamente as impedâncias de conexão. Isso tem o efeito extra de
limitar
a corrente pelo circuito.

A conversão A/D e a interpretação do número obtido (no intervalo de


0 a
1023) como temperatura é feita pelo PIC12F675. O sinal analógico
do

https://www.dm.ufscar.br/~waldeck/pic/thermopic/ 2/4
07/03/2022 20:58 Termômetro RS-232 com PIC12F675 e LM35
amplificador é conectado à entrada analógica AN2 (GPIO2).

Tendo sido determinado a temperatura, esta é codificada em NRZ (non


return to zero)
e enviada para a saída digital GPIO4. A tensão de referência
de 2.5V foi produzida com um divisor de tensão usando dois resistores
de
10K e esta foi ligada à entrada analógica AN1 (GPIO1) do PIC.

A saída serial produzida pelo pino GPIO4 foi condicionada aos


níveis
requeridos pela RS232 por um transístor PNP. Por sua vez,
a saída deste
conversor de níveis foi ligado à linha RX da RS-232.

Opcionalmente, um LED pode ser ligado à saída GPIO5 do PIC via resistor
de 330 Ohms. Este tem por objetivo apenas acusar o funcionamento
contínuo
do circuito por meio de piscadas breves.

Dependendo do consumo do LED, pode ser proibitivo manté-lo aceso por


muito tempo. Por isso fazemos o LED piscar por apenas 2.25ms (como?),
o
que basta para confirmar o funcionamento.

Para desenhar o esquema elétrico (Figura 2) e o layout


da placa de circuito
impresso (Figura 3 e Figura 3)
usamos o excelente software kicad.

Os componentes

O software

Código fonte: thermopic.asm


Versão formatada para visualização: thermopic.html
Binário: thermopic.hex
Programa para fazer a leitura e verificação dos dados no PC:
readtemp.c (código fonte em C)

Conclusões

O circuito proposto atende a todos os requisitos estabelecidos,


mas ainda
se pode perguntar se não é possível simplificá-lo ainda
mais. A resposta é
afirmativa. De fato, o próprio PIC pode
ser usado como termômetro, sem
mesmo necessitar do conversor A/D,
mas eu ainda não tentei fazer isso.

Ao invés de usar um sensor analógico, poderiamos ter empregado


um
sensor digital, como o Maxim/Dallas DS18B20, dispensando todos
os
componentes analógicos relacionados com o sensor.

No entanto, todos os sensores


desse tipo que pude encontrar custavam
mais caro do que todo este projeto tal como está, sem apresentar
benefícios
adicionais.

É muito fácil modificar o circuito para permitir chegar ao


fundo de escala
de -55°C do sensor, bastando para isso que
tensão terra de referência do
LM35 seja maior ou igual a 0.550V
(e inferior a 1V), mas devido a largura
da escala
isso irá reduzir a temperatura máxima para 47.5°C.

Por outro lado, baixando o terra de referência, podemos


elevar a
temperatura máxima até 65.5°C, mas este é um
limite do software. Para
superar esse limite, será preciso
representar a temperatura com mais do
que 16bits, ou então
dividir a temperatura por 10, podendo assim chegar
aos
150°C do sensor.

O comprimento da escala é determinado pela resolução do


conversor A/D,
pelo ganho do amplificador e pela tensão de referência escolhidas. A
resolução
é fixa em 10 bits, mas a tensão de referência pode variar entre
2.1V e 4.6V e o ganho também pode variar bastante, o que dá uma
certa
flexibilidade na determinação da escala. Neste projeto,
com os valores
escolhidos, temos um comprimento de 102.5°C.

Um projeto que permita não apenas medir, mas registrar as temperaturas


em determinados instantes de tempo permitem realizar outras coisas
além
de simplesmente observar e ficar informado acerca de um valor
particular
dessa grandeza física em determinado local.

Por causa dos registros, torna-se possível observar também observar


as
variações, associar esse fenômeno a outros, como a pressão e a umidade,
e até mesmo realizar previsões acerca da temperatura.

Trivia

Um raio, ao atingir a superfície da Terra, momentaneamente a


aquece a 23700°C. Esta é provavelmente a temperatura mais quente

https://www.dm.ufscar.br/~waldeck/pic/thermopic/ 3/4
07/03/2022 20:58 Termômetro RS-232 com PIC12F675 e LM35
associada a
um fenômeno natural na Terra.
A temperatura externa do ônibus espacial durante a reentrada é de
cerca de 1648°C e o chumbo ferve a 1749°C. Alguém ai quer uma
sopa da pesada?
Temperatura atmosférica mais quente registrada na superfície da
Terra: 58°C, em Al Azizia, Libia, 1922
(veja a wikipédia). Esta
temperatura récorde foi medida
por uma estação meteorológica,
cujos termômetros oficialmente residem na
sombra e a uma altura
de 1.6m do solo.
Temperatura atmosférica mais fria registrada na superfície da Terra:
-89°C, em Vostok, Antartica, 1983.
Zero Absoluto: -273.15°C, é o Santo Graal da Física.

Créditos

Agradeço a Luiz Nardelli da Prefeitura


municipal de Rio do Oeste,
por me trazer ao conhecimento o seu projeto
de termômetro e por
várias discussões a esse respeito via e-mail.
gputils é uma
coleção de ferramentas para trabalhar com os
microcontroladores
PIC da Microchip
kicad Kicad é um programa open source (GPL) para a criação de
esquemas eletrônicos e circuitos impressos. Não é tão funcional e
cheio de recursos como
Eagle, mas é grátis, ainda bastante
poderoso e
muito convivial para o usuário principiante.
piklab é um ambiente
de desenvolvimento integrado (IDE) para
aplicativos baseados
nos PIC's e dsPIC's da Microchip

Referências

Extremos da Terra (inglês) - elevações e profundidades,


temperaturas, quedas verticais e
outros extremos geográficos da
Terra.
A História da Temperatura e dos Termômetros (inglês)
Sensor de temperatura usando o watchdog timer do PIC (inglês)
Termômetro (inglês), na wikipédia. História, tipos, calibração, usos
e curiosidades sobre o termômetro.
Zero Absoluto: A Corrida para o Zero Absoluto, documentário
exibido pela rede de tv pública americana PBS.

Updated on 
Fri Oct 6 09:39:50 2017 • Copyright © 1997-2014, Waldeck Schutzer •  

https://www.dm.ufscar.br/~waldeck/pic/thermopic/ 4/4

Você também pode gostar