Ir ao conteúdo
  • Cadastre-se

PIC12F675 lendo NTC10K


Posts recomendados

Ola pessoal, estou precisando ler temperatura com um NTC10K ligado a um PIC12F675 , mas estou com muitas duvidas. No mikroC PRO  não estou conseguindo inicializar o conversor AD nem o comparador analógico. Também na questão de interfacear o NTC ao PIC, estou com duvida se seria preciso montar um divisor de tensão com o NTC, ou se e possível ligar direto .

Gostaria de testar com os dois periféricos (AD e Comparador) e observar o melhor resultado para a minha aplicação. Estava um pouco afastado desse mundo de programação, e estou voltando agora.

Conto com a ajuda de vocês... 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo certamente deverás usar um divisor. O ntc é 10K? Algo como um resistor de 10k pro +vcc pode dar uma boa resolução de leitura. Aplique simultaneamente nas entradas analógica e do comparador. Mas, claro, leia-as e trate-as individualmente no sw.

Sugiro definir melhor 'não estou conseguindo'. No entanto creio que uma olhadela nos exemplos que vêm com seu compilador você deve matar a charada rapidin.

Não sei qual sua aplicação mas deduzo que é algo simples devido ao mc escolhido. Neste caso, simular primeiro (proteus p.ex.) é uma boa opção. Também permita-me sugerir o uso de um LM35 cuja estabilidade, precisão, linearidade e etc são superiores ao ntc. De novo, não se irrite (como certas pessoas) pois não conheço sua aplicação ok? Só quero seu bem...

 

Publique o circuito e algo do sw que fizeste. Com isso os chutes podem doer menos kk

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

A aplicação é simples sim, consiste em um termostato que quero melhora-lo. O uso do LM35 fica inviavel devido a diferença de preço entre ele e o ntc. A montagem ainda não fiz, mas a ideia é controlar a temperatura ligando e desligando uma resistência de aquecimento e ter a possibilidade de ajustar a temperatura com um trimpot ou potenciometro..A parte de hardware eu monto fácil usando triac e optoacoplador. O problema para mim esta na entrada analogica e leitura do sensor... agora ja sei que devo montar o divisor e vou pesquisar mais um pouco. Obrigado. 

 

 

Encontrei na net (vou deixar o link : http://microcontrolado.com/termistor-ntc-10k-no-pic/#comment-290), algo sobre como ligar o sensor, mas preciso de ajuda, e isso e a minha maior dificuldade, passar o código para o mikcroC. A parte de lidar com os registradores do ADC esta sendo um pesadelo pra mim. E gostaria de ter uma ideia de como regular ainda a temperatura, visto que estarei trabalhando com o ADC e nao com o comparador.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

permita-me algumas  obervações

-ntc é mais barato mesmo. R$0,30  Mas vale a pena só se for pra projeto que vai vender muito.

-lm35 é mais caro mesmo ~R$2,50 mas pra um projeto pra seu próprio uso, creio ser mais apropriado

-ntc não é linear. P.ex., pelo seu link há fórmulas complexas - log, pow - que o 12F pode não ser capaz de resolver - não cabe na memória. Mas tem contornos pra isso

-com lm35 é basicamente ler o ad e multiplicar ou dividir por uma constante pra obter o valor em °C. De fato nem precisa. voce pode e deve trabalhar com unidades de ad apenas visto que, penso eu, não vai mostrar nada em display.

 

Lidar com os registradores é moleza. De fato nem vai. Há funções prontas pra manipular os periféricos do mc (apesar de pessoalmente, prefiro lidar com regs mesmo). De novo, de uma olhada nos exemplos do compilador e adapte à sua realidade. Este compilador (não o uso) em si, já tem muita coisa mastigada.

 

E de novo, se achar que deve, poste o circuito e algo de sw que acha que deve fazer. Ou seja, você deve dar a partida senão o carro não anda. Ajude-nos a te ajudar...

abç

Link para o comentário
Compartilhar em outros sites

Obrigado. quanto aos valores, aqui pra mim (moro no interior de MG) os componentes chegam muitos caros : NTC = R$ 0,50 e LM35 = R$ 5,50  fora o frete.

 

A ideia é para melhorar um projeto simples, mas sem aumentar tanto o custo. Como você citou as funções complexas e existe mesmo a limitação do PIC , vou partir para os comparadores que acredito que vão atender bem as minhas expectativas. Nunca trabalhei com comparadores de uC, mas pela minhas pesquisas parece que não e estão difícil. Ainda não parti para a programação, mas vou tentar uma simulação no proteus e assim que tiver alguma coisa eu posto aqui.

 

Obrigado de novo.

Abcs

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Uma alternativa ao não linear NTC é um simples diodo 1n4148. Ele varia cerca de -2mV/ºC e bem linear. Para seu pic, você deve lançar mão de um ampop. Para um attiny26 p.ex. este já tem um ampop integrado. A princípio é só ligar o diodo num pino...

 

Votando ao pic, talvez valha a pena usar adc pois se só comparador um ci comparador já bastava. O comparador deste mc você pode 'comparar' 32 valores e o adc 1023. O programa do adc é relativamente simples

p.ex. para valor fixo

a=adcread(0);if (a<250) aquecimento=1;if (a>255) aquecimento=0;//histerese

para valor variável, troque por uma ... variável

#define diminui GPIO0 //p.ex;#define aumenta GPIO1#define ligado 1#define desligado 0if (a< aquecimento=ligado;if (a>(b+5)) aquecimento=desligado;//histereseif (!aumenta) b++;if (!diminui) b--;

Num futuro não muito distante você deve cogitar usar os princípios PID .... e me ensinar!! Num achou que estas dicas foram de graça né??

Link para o comentário
Compartilhar em outros sites

Ok, o hardware que tenho pronto é o da imagem abaixo. Agora preciso de ajudar para compreender se ele usa o comparador ou o conversor...   

 

 

O hardware nao foi desenvolvido por mim, e nao entendo como posso usar a saida do comparador (Pino 5 do PIC) como entrada. E qual recurso usar para fazer a leitura do sensor e assim controlar uma saida.

teste comparador.BMP

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

A imagem tá meia ruim. E o circuito pode ser mais otimizado e melhorado. Pelo jeito usa o conversor mesmo.

"E qual recurso usar para fazer a leitura do sensor e assim controlar uma saida" é algo como postei acima.

 

ok já temos o circuito. Agora publique o fonte. Se dizer que não tem nada aí o bixo pega.

Numa eletricopsicoanálise de suas letras me parece que mostra que você não passou pela etapa do pisca-led. Por gentileza não a queime. Depois dela, portas se abrirão.

(Já vi que vou demorar pra aprender o PID kk)

Link para o comentário
Compartilhar em outros sites

Bom, praticamente desconsiderando o desenho citado acima, estou tentando começar pelo firmware  e despois montar e testar no proteus.

A primeira vista o código esta assim :

 

/*********************************************************************************

unsigned float sensor = 0;
unsigned float ref = 0;
 
void main()
{
   CMCON  = 7 ;            // desliga os comparadores
   ANSEL = 0 ;             // Configura entrada analogica AN0
   ADCON0 = 1 ;            // Vdd as Vref
   TRISIO  = 1 ;           // configura a porta gp0 como entrada
   GPIO = 0 ;             // Passa o estado logico 0 para a porta
 
   while(1)
   {
       ref = ADC_Read(0);
       delay_ms(10);
       sensor = ADC_Read(1); // leitura da porta AN1
       delay_ms(10);
 
       if(sensor > ref)
       GPIO.F5 = 0;
       else
       GPIO.F5 = 1;
       delay_ms(10);
       
   }
}
************************************************************************************/
 
O problema e que o MikroC esta dando um erro na linha de desabilitação do comparador (CMCON = 7) , ja tentei com tres versões diferentes do compilador.
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Já é alguma coisa amigo. O ideal mesmo seria se você DISSESSE O ERRO QUE O COMPILADOR ESTÁ DANDO pois talvez seja apenas colocar a sintaxe correta ou este mc não tem comparador. Também (acho que já disse) podes dar uma olhada nos exemplos dele.

 

Ah e um detalhe importante: você está a usar (unsigned?) float. Esquece isso! este mc não consegue trabalhar com ele por muito tempo e no caso nem precisa. Use no máximo unsigned int.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Tentativas com o comparador, mas agora me veio uma duvida: Esse comparador so funciona com interrupção?

vejam o meu codigo que nao esta funcionando. Espero por alguma ajuda.

 

void main() {
 
   TRISIO.F0 = 1;    // Entrada nao inversora COMP
   TRISIO.F1 = 1;    // Entrada inversora COMP
 
   TRISIO.F2 = 0;    // Saida do comparador
   GPIO.F2 = 0;
 
 
   CMCON.CINV = 0;   // Bit que inverte ou nao a saida  //Se Vin > Vref => S = 0
   
  
   CMCON.CM2 = 0;     //
   CMCON.CM1 = 1;     // Configuração do comparador
   CMCON.CM0 = 0;     //
 
   //VRCON = 0xFC; //tensão interna de referencia 2,5V
 
 
 while(1){
 
       if(CMCON.COUT == 1)
          GPIO.F2 = 1;
       else
          GPIO.F2 = 0;
 
 
   }
}
Link para o comentário
Compartilhar em outros sites

Contando que alguém esteja seguindo este tópico, com o comparador do PIC12F675 eu resolvi o problema, que o registrador ANSEL, o qual define quais serão entradas analógicas e quais serão digitais. Agora vou partir para o uso do conversor AD.

 

Por hora, o código do comparador ficou assim :

 

void main() { 
 
    CMCON = 0b00000001;   // Habilita comparador para modo isolado com saida em GP2
    ANSEL = 0b00000011;   // Define AN0 e AN1 como entradas analogicas
    TRISIO = 0b00000011;  // Define gp0 e gp1 como entrada
    GPIO = 0b00000000;    // Inicia todos os pinos desligados
    
 while(1) {
 
      /*                                     // Bloco IF opcional caso a saida do comparador nao
      if(CMCON.COUT == 1)   // nao esteja ligado direto ao GP2.
          GPIO.F2 = 1;
       else
          GPIO.F2 = 0;
      */
 
   }
}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!