Gostaria de medir temperatura de uma forma bem fácil, com um pic e um sensor DS18B20? Com apenas alguns componentes?
Esta montagem usa um circuito integrado dedicado para medir temperatura: o DS18B20, da anterior Dallas (atual Maxim). Veja o esquema abaixo:
Foi usado a versão de apenas 3 pinos, com encapsulamento TO-92 (formato identico de um BC548). Para funcionar no modo normal, precisa receber alimentação no pino +Vcc entre 3 a 5,5 volts. Outro pino extremo é ligado ao gnd. Pode ser usado para obter medidas de temperatura na faixa de -55°C a 125°C, com precisão de +- 0,5°C entre -10°c e +85°C.
Como é lida a informação de temperatura?
O pino do meio, chamado de ‘DQ’ recebe e envia dados através do protocolo ‘1-Wire’, para o microcontrolador. Todas as operações são feitas em modo ‘Slave’ ou seja, o microcontrolador coordena todo o processo de medição. Seu conversor analógico/digital pode ser programado de 9 a 12 bits de resolução. Quando adquirimos um DS18B20, ele já vem programado para 12 bits. O tempo médio de uma conversão em 12 bits é de 750 ms. Com resoluções menores temos tempos menores proporcionalmente. Vários destes sensores podem ser ligado a este ‘único fio’ de comunicação, visto que cada peça tem um número serial exclusivo de 64 bits. Apenas aquele que tiver o número serial igual ao enviado pelo barramento é que irá responder aos comandos do microcontrolador.
Para comunicar com o DS18B20, o microcontrolador precisa dar um ‘reset’, seguido pelo ‘rom command’ e pelo ‘function commands’. Esta receita tem que ser repetida para usar outros ‘function commands’. O programa ‘C’ aqui proposto usa apenas poucos ‘function commands’, em especial, o de nova conversão de temperatura (44h) e o de leitura da temperatura (BEh). Lendo o datasheet veremos que tem mais comandos para seleção da rom e de funções adicionais como programar uma temperatura de alarme, ler o modo da alimentação quanto a ser em modo parasita ou com +Vcc, ler o número serial do DS18B20 (usado apenas com um só DS18B20 no barramento), enviar um comando para todos os DS’s no barramentos, etc.
A apresentação do resultado da leitura é feita em 4 dígitos, sendo estes feitos com display de 7 seguimentos do tipo anodo comum. Quando a temperatura é negativa, aparecerá o traço (-) no digito mais a esquerda. A rotina para conversão hex para decimal da parte inteira é feita em 8 bits, pelo método do decremento do valor lido e incremento dos registradores de resultado, conforme seja unidade, dezena ou centena. Já na parte fracionaria (pós virgula), foi usado uma tabela para converter os 4 bits, de forma bem simples (nada de matemática!).
A alimentação poderá provir de uma fonte de 9 a 12 volts, usando um regulador 7805 para reduzir para os 5 volts necessários, ou uma fonte de carga de celular, já com 5 volts de saída.
Obs. Esta montagem é didática, sendo testada apenas em placa de protoboard, sujeita a bug’s ainda não detectados com o uso.
Esta sendo fornecido os arquivos que poderão ser alterados conforme a necessidade dos hobistas.
Segue abaixo pasta com arquivos “C” (CCS Compiler v 3.200) e Hex para versão anodo comum ( antiga, de 24/03/2014):
Segue adicionalmente, pasta contendo arquivos para montar o projeto usando catodo comum (antiga, de 24/03/2014) :
Segue pasta com arquivos “C” (CCS Compiler v 3.200) e Hex para anodo ou catodo comum, sendo uma versão com rotinas melhoradas, de 13/04/2014:
Manuais:
DS18B20
PIC16F628A
Curiosidades:
Seu filho está com febre?
São Petersburgo — a “janela para a Europa”
A arte e a ciência da previsão do tempo
Quantos sentidos temos realmente?
Da árvore para a garrafa — a história da cortiça
Ação refrescante natural
Temperatura em carros estacionados
Temperatura do Sol
Os alimentos transgênicos são seguros?
Como uma música se torna um sucesso?
Enxaqueca — o que você pode fazer?
Como estimular o desejo de aprender
Como ajudar pessoas com transtornos de ansiedades
Dicas sobre congelamento de alimentos
Outros assuntos:
Um site para você
Quando seu casamento não é o que você esperava
Como resolver diferenças no casamento
Como recuperar a confiança no casamento
Como controlar o estresse
Quando um dos cônjuges tem necessidades especiais
Aprenda a perdoar
Como acabar com a tática do silêncio
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Até o próximo artigo!!!
Bom dia To com um probleminha pq eu tenho q montar um termometro desse mas com lcd 16×2. tem alguma ideia como eu faço a programação estou usando PIC 16F84A. agradeço se ajudarem.
Olá Daniel! Tenho a versão com sensor LM35 no artigo ‘FAÇA UM TERMÔMETRO DIGITAL COM PIC 16F676’. Verifique se este serve para você. O problema é que usa o pic 16f676. O pic 16f84a não tem conversor analógico para digital (AD), portanto não será possível usa-lo sem colocar um AD externo. Tem apenas 1k de memória ficando difícil fazer muita coisa.
Cláudio
Claudio,obrigado por responder e pela idéia!
maravilha Claudio ,obrigado por enquanto vou iniciar a montagem.te falo como ficou.
é possível ele funcionar com 3 dígitos tambêm 🙂
Olá Valter! A escala positiva de temperatura vai até 125 °C, necessitando de 4 dígitos (ex. 123,7°C). Na escala negativa, vai até -55 °C, também necessitando de 4 dígitos , sendo que o mais significativo é o ‘traço’ do sinal negativo (ex. -55,4).
Claudio
boa tarde .teria como fazer funcionar com display catodo comum .abraços
Olá Valter! Sim, pode ser feito. Só não sei quando poderei faze-lo. Mas basta usar os transistores drive com emissores ao gnd e coletores nos catodos comuns. Todos os seguimentos terão que ser invertidos no programa.
Cláudio
Olá Valter! Veja o artigo novamente, que postei pasta com versão para catodo comum.
Cláudio
Caro Caudio Larios. Antes de mais nada gostaria de parabenizá-lo pelo excelente nível dos circuitos de seu blog. obrigado por tantas ideias boas! gostaria de saber se tem algum circuito de um seletor automático de voltagem para fontes de PC. Achei vários mas ou usam circuitos dedicados dificílimos de encontrar ou usam relés e até transformadores, fora de questão para colocar dentro de uma fonte de PC já existente. Sei que fonte de PC é barata mas o propósito é não ter o inconveniente de por distração queimar a fonte por ligar em voltagem errada, não o preço! Bem, em resumo é o seguinte: A fonte do PC tem uma chave HH que curtocircuita 2 pontos A e B para 110V e abre esses pontos para 220V. O circuito substituiria essa chave sendo que quando a fonte fosse ligada em 110V o circuito faria com que um triac fechasse os pontos A e B. quando ligada em 220V o circuito faria com que o triac entre os pontos A e B ficasse aberto. creio que um triac um microcontrolador meia dúzia de componentes discretos e muita imaginação resolvem o problema. Obrigado!
Olá Marcustito!
Obrigado por seu comentário apreciativo. Mas, exceto se sua fonte tem algum diferencial, não seria melhor adquirir um fonte moderna sem esta chave 110/220 (que controla automaticamente de 90 a 240 volts)? Usar microcontrolador em AC fica muito complicado, uma vez que tem que acompanhar o momento exato do disparo de triac, através de timer, etc. Pode-se pensar em um circuito discreto, sem microcontrolador. Pensei em algo simples como este aqui.
Cláudio