Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
Entre para seguir isso  
Rjmp

Sensor de Temperatura

Recommended Posts

Boa Noite.

Queria fazer um sensor de temperatura para medir a temperatura de umas placas aqui em funcionamento, alguém teris o esquema se um sensor de temperatura utilizando pic(ou nao) e com dipslay...

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Feito:

Circuito:

sensortemperatura4canai.png

Código para 1 sensor. Se for utilizar os 4, apenas repita o 1º no codigo:

#include <16F877A.h>             //O PIC utilizado, obigatório!
#device adc=10 //Habilitar ADC de 10 bits, obrigatório. Pode
//ser utilizado de 8 bits também.
#FUSES NOWDT //Sem Watch dog, evitando reset
#FUSES XT //Crystal de oscilação igual a 4mhz
#FUSES PUT //Tempo de início do PIC
#FUSES NOPROTECT //Codigo sem proteção de leitura, software livre!
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

#use delay(clock=4000000) //Meu clock
#include <LCD.C> //Rotina de LCD modo 4 vias. Obrigatório!

void main() {

int16 q; //Vaeriável inteira de 16 bits: 0 a 65535
float p, temp; //Variável com vírgula, para poder fazer cáclulos.


setup_adc_ports(AN0); //Configura canal 0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //De acordo com relógio interno.

lcd_init(); //Inicia LCD, obrigatório!

for (; //Para sempre.
{
/*===========================================================================
A resolução do conversor AD segue a seguinte equação:
1LSB=(Vref-)+{[(Vref+)-(Vref-)]/1024}
E nesse caso (Vref+)=Vdd e (Vref-)=Vss então a resolução é:
1LSB=5/1024=4,8mV
Por exemplo, se a leitura no canal analógico for de 512, a tensão
analógica será:
Vin=512*(5/1024)=512*4,8mV=2,4576V
===========================================================================*/

set_adc_channel(0); //Habilita canal 0
delay_us(20); //Espera um pouco, obrigatório!
q = read_adc(); //Lê canal 0
p = 5.0 * q / 1024.0; //Conversão para tensão.
temp=(p*100)/3.413; //Temperatura convertida de acordo com o
//amplificador utilizado.
printf(lcd_putc, "\fADC = %4ld", q); //Mostre a leitura ADC
printf(lcd_putc, "\nTemp=%01.1f C", temp);//Mostre a temperatura.

delay_ms(1000);
}
}

Dúvidas? Pergunte.

Falou

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito bom. mas que tal implementar também uma rotina de ajuste? algo como gravar na eeprom o "ganho" da conversão ad. assim ficaria mais preciso. ai invés de

temp=(p*100)/3.413;

faça

temp=(p*100)/variavel;

onde variavel seria lida da eeprom (e escrita na rotina de calibação) cujo valor é único pra cada sensor.

talvez também seria interessante (porém não obrigatório) implementar um offset

bom, a intenção foi dar um ganho no teu programa que já está bom.

sucessos!

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Eu tenho tres duvidas.

    Teria como fazer com pic 16F628A?

    A alimentaçao é 5v?

    como funicona um display de lcd?

    Obrigado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O comentário postado pelo colega josedasilva0 é muito válido. Uma excelente ideia. No entanto, esse meu código já estava pronto e não reparei que utiliza esse pedaço que usa amplificador. Se a aplicação não exigir muita precisão, utilizo sem amplificador mesmo. Dessa forma, não é necessário dividir pelo ganho.

    Respondendo duas perguntas:

    P: Teria como fazer com pic 16F628A?

    R: NÃO! O 16F628A não possui conversor AD.

    P: A alimentaçao é 5v?

    R: SIM! Na maioria das aplicações envolvendo uC usa-se VCC=5V.

    P: como funicona um display de lcd?

    R: Reformule sua pergunta pois está muito genérica.

    Falou

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • MatheusLPS, qual programa você utilizou para compilar a sua programaçao par ao proteus ler ?

    você poderia me falar o nome dele para eu baixalo e testar no meu proteus?

    Obrigado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sim claro.

    Procure por CCS PCW 4.057 no 4shared q tem um monte lá.

    Falou

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • O que seria um conversor AD ?

    Obrigado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    O que seria um conversor AD ?

    Obrigado

    É um periférico que converte um valor analógico para um valor digital.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    A explicação do colega ae de cima está correta, mas simplista.

    Caso necessite de mais informações, siga o link:

    http://pt.wikipedia.org/wiki/Conversor_anal%C3%B3gico-digital

    ou

    http://en.wikipedia.org/wiki/Analog-to-digital_converter

    Falou

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    P: Teria como fazer com pic 16F628A?

    R: NÃO! O 16F628A não possui conversor AD.

    discordo, da pra fazer e perfeitamente, usando um A/D de baixo custo como o ADC0804, datasheet aqui:

    http://www.datasheetcatalog.com/datasheets_pdf/A/D/C/0/ADC0804.shtml

    O que seria um conversor AD ?

    O assunto é extenso, mas para microcontroladores, entenda esse como um módulo dotado de uma lógica especial capaz de receber em sua entrada um valor de tensão e entregar na sua saida um numero que é proporcional a tensão lida, a faixa de valores esta limitada a resolução do conversor.(0 a 255 se for 8bits)

    Minha sugestão fica para o circuito, de dotar um amplificador operacional de modo a casar a impedancia de saida do LM35 com a entrada do A/D.

    Abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    discordo, da pra fazer e perfeitamente, usando um A/D de baixo custo como o ADC0804, datasheet aqui:

    http://www.datasheetcatalog.com/datasheets_pdf/A/D/C/0/ADC0804.shtml

    discordo da discordância sem gerar discórdias. tal adc não é tão baixo custo e tende a ser obsoleto. poderia fazer com comparador e ampop LMxxx mas creio que não vale a pena. melhor usar MC com ad tipo PIC16F819

    abç

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    melhor usar MC com ad tipo PIC16F819

    Também, aliás o mais interessante seria um com A/D built-in, apenas sugeri a opção com A/D externo pois nosso amigo pergunto se dava para fazer com o 628 que pode ser o modelo que tenha em mãos, então por que não dar uma opção a mais não é mesmo?

    quanto a preço, o ADC0804 esta cerca de 7,00 na farnell:

    http://www.e-farnellnewark.com.br/ciconversorad20pwsoic,product,41K1429,1123.aspx

    Abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    haveriam implicações que não se encaixam no contexto do tópico. a não ser se o autor quiser saber. no entanto suas dicas e opções como sempre são boas!

    um bj!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Boa alternativa é usar sensores de temperatura com outras interfaces ( I2C,1-wire...).São mais caros, porém possuem a vantagem de não exigir módulos A/D dos MCU´s, podendo então usar MCU´s mais baratos. basta ter dois pinos ( I2C ) ou 1 pino ( 1 -wire ) disponivel. MCU´s sem interface I2C ou 1-wire imbutidas podem ser facilmente implementadas via software. (Há varias bibliotecas prontas na net) Algus CI´s medidores de temperatura bem precisos:

    DS18B20 - interface 1-wire; alarme programável; ótima resolução programável

    DS1621 - termometro e tesmostato; interface I2C;

    MCP980x - interface 2-wire( I2C, compatível com SMbus);

    datasheets -http://www.alldatasheet.com

    abrass!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sobre o AD externo, nao indiquei de cara pois prefiro fazer soluções simplistas e nesse caso acho mais vantagem comprar um PIC que tenha AD doq usar um externo. Ainda mais para uma apliacação simples de medir temperatura.

    Já que estamos tirando dúvidas aqui, tenho uma em relação ao LM35.

    O colega Felipe disse no página anterior que precisa usar um aplificador para casar a impedância com a do PIC.

    O problema que nunca usei o LM35 aplificado. Sempre jogo direto no AD do PIC.

    Quais as complicações podem occorrer disso? Sempre ouvi falar em casamento de imdepãncia, mas nao sei ao certo o que seja.

    Falou

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    O colega Felipe disse no página anterior que precisa usar um aplificador para casar a impedância com a do PIC.

    O problema que nunca usei o LM35 aplificado. Sempre jogo direto no AD do PIC.

    Quais as complicações podem occorrer disso? Sempre ouvi falar em casamento de imdepãncia, mas nao sei ao certo o que seja.

    Não seja por isso, explico pra você,é pra isso q estamos aqui,

    de um modo geral, toda fonte de tensão (incluindo um sensor) possui uma resistencia externa que chamamos de impedancia de saida, logo se colocarmos qualquer carga na saida de um sensor (exemplo o pino do A/D do PIC) este sempre vai formar um divisor resistivo com essa resistencia interna, porém se esse valor for muito próximo ou menor do que a resistencia de saida da fonte, menor será a tensão capturada pelo A/D ja que uma parte fica na resistência externa.

    Exemplo, se nosso LM35 nos der uma saida de 0,5V e ligarmos direto no PINO do PIC, provavelmente jamais teremos os 0,5V no pino do PIC, mas sim algo em torno de 0,35V, 0,4V e se a impedancia de entrada do A/D for menor, menor sera a tensão, logo perdemos linearidade e acabamos por mascarar a medida.

    A propria microchip recomenda que a impedancia de saida da fonte de tensão analógica seja de 2,5KOhms.

    O que fazer então? utilizar um dispositivo em que sua impedancia de entrada é elevadissima mantendo praticamente toda a tensão do sensor sobre seus terminais, e impedancia de saida nula, para que o nivel de tensão apareça praticamente todo no terminal de I/O analógico do MCU.

    Ai entra o amplificador operacional, duas de suas caracteristicas são:

    - Elevada impedancia de entrada (mas muito elevada mesmo);

    - Impedancia de saida quase nula (da ordem de unidades de ohms);

    com isso um método classico de casamento é um seguidor de tensão, entre seu sensor e a entrada analógica.

    Nesse caso toda a tensão de saida do sensor vai para a entrada de um operacional, e como a impedancia dele é elevadissima (>10MOhms) tornamos a resistencia de saida do sensor praticamente desprezivel.

    do outro lado, na saida do operacional temos uma impedancia de saida quase nula, ou seja muito inferior a 2,5K recomendados pela microchip, logo a resistencia de saida do operacional também é praticamente desprezivel, fazendo que tenhamos efetivamente praticamente toda a tensão de saida do sensor em seus terminais.

    Bom essa explanação esta simplista, mas um bom livro de amp op poderá esclarecer mais, nos mais espero que ajude.

    duvidas, perguntem ok!?

    Abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Opa Felipe.

    A explicação está excelente. Deu p entender sim.

    Resumindo numa condição ideal:

    Fonte com impedancia muito baixa e carga com impedancia muito alta para que a tensão seja transferida de forma eficiente. É isso?

    Sempre achei que no casamento, as impedancias deviam ser iguais...

    Falou

    Editado por MatheusLPS

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Como pode transforma um sinal analogio em digital, poi o digital é 1 ou 0 como ele consegue ler se a saida do digital so pode ser 1 e 0?

    Obrigado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Caro colega Rjmp, sim o digital é 1 ou 0 e a combinação dos mesmos. O sistema de numeração que você está acostumado é o decimal que contém 10 algarismos.

    No binário só tem o 1 e o 0, no entanto você consegue escrever outros numeros.

    Exemplo:

    0  --> 0
    1 --> 1
    2 --> 10
    3 --> 11
    4 --> 100
    5 --> 101

    E assim por diante. você pode somar, subtrair, multiplicar e dividir em binário também.

    O esquema é o mesmo. Só muda a base, que nesse caso é o binário.

    Falou

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Intao o ci nao le apensa 1 bit e asim um trem de pulso para saber a temperatura?

    Obrigado

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Hum... vou tentar te explicar. Mas minha didática não é das melhores...

    Seguinte, antes de mais nada, você precisa saber o que é resolução. Pegue por exemplo o AD do PIC.

    O PIC aceita de tensão analógica máxima de entrada um valor de 5V. Sabendo que o AD do PIC tem uma resolução de 10bits, ou seja, 2^10=1024 (2 elevado a 10). Dessa forma o PIC consegue "pegar" 1024 níveis analógicos e amazenar de forma digital. Ou seja, temos uma resolução de 5V/1024=4.8mV (milivolts).

    Dessa forma, a cada incremento de 4.8mV na entrada do conversor analógico do PIC, teremos 1 valor binário até 1024.

    Exemplo:

    http://upload.wikimedia.org/wikipedia/en/5/52/ADC_voltage_resolution.svg

    Veja no eixo dos X é a entrada analógica e no eixo dos Y é o resultado da conversao em binário.

    Deu p entender?

    Consegue perceber o que tem de ruim num conversor analógico-digital?

    Se não, espere algum outro membro aparecer para explicar melhor.... :D

    Falou

    Editado por MatheusLPS

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Sim esse negoso dos 1024 eu sakei, o que queria saber é ki o pic nao le apenas 1 bit e sim 10bits para formar os 1024 combinaçoes.

    então nao quer dizer que ele ler um tem de pulso gerado pelo sensor ?

    exemplo: o sensor manda 0v o pic grava 0000000000 (10 zeros) o sensor manda 5v o pic grava (1111111111 ( 10 um)) e se ele manda 2,5v o pic vai grava 512. Certo ?

    Resumindo ele pega uma tensão e transforma em um trem de pulso para saber a temp?

    Editado por Rjmp

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Sempre achei que no casamento, as impedancias deviam ser iguais...

    depende do caso, no caso de amplificadores de audio por exemplo, as impedancias devem sempre ser iguais de modo que haja máxima transferencia de potência a carga, porém no caso de medição apenas nos interessam nivel de tensão e não de corrente por isso a carga tem que ter uma impedancia beem mais elevada.

    Abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×