Sensor NTC 10K + PIC + CCS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 27 Jan 2014 18:03

Boa tarde pessoal,

Estou tendo algumas dificuldades na elaboração de um programa de leitura do sensor NTC 10 k no pic.
Montei um divisor resistor com um resistor de 10k e joguei o sinal do ntc diretamente na porta ADC do pic.
Utilizei um exemplo de equação de Steinhart disponível na internet mais o resultado não está sendo bem o que necessito.
Não sei se isso se deve as constantes do A B e C do sensor (que eu não possuo) e portanto usei as que estão disponíveis no site onde consultei.

Minha pergunta é: alguém do fórum já desenvolveu algo nesse sentido? Poderiam me orientar em relação a rotina de leitura?

Segue a fonte que segui para montagem do software.

www.microcontrolado.com/termistor-ntc-10k-no-pic/
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor andre_luis » 27 Jan 2014 18:16

Juraci,



Quando trabalhei com NTC a bastante tempo atrás, como a minha aplicação não demandava tanta precisão, simplesmente mapeei em memória estática os pontos da curva ( o equivalente á decalrar como const no C ) e os valores intermediários eram obtidos por interpolação.

No seu caso, como você está fazendo o modelamento da curva para cálculo em tempo de execução do programa, eu sugiro fazer uma simulação primeiro, utilizando alguma ferramenta de cálculo numérico, como o MATLAB, que é uma mão-na-roda nesses casos, pois como utiliza uma linguagem meio que em "pseudo-C", para fazer a conversão depois é bem tranquilo.



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Sensor NTC 10K + PIC + CCS

Mensagempor Maffeis » 27 Jan 2014 18:56

Eu tava estudando a um tempo atrás NTC

lembro que eu ia usar um circuito diferente desse

por conta que a corrente que passa por influenciava na leitura

eu tava vendo de usar uns amplificadores como seguidores de tensão
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Re: Sensor NTC 10K + PIC + CCS

Mensagempor andre_luis » 27 Jan 2014 19:27

Então,



Fiz uma adaptação para o MATLAB do modelo matemático apresentdo do link, e como dito, tive de mudar poucas coisas no código do link:

Código: Selecionar todos
%%%% ENTRADA
ADRES = 0 : .1 : 1023 ;
sensor = 0 ;

%%%% CONFIGURACAO
a = 0.0011303;
b = 0.0002339;
c = 0.00000008863 ;

VCC = 5 ;
R1 = 10000 ;

%%%% CALCULO
sensor = ADRES;
sensor = sensor * 5 ;
sensor = sensor/1023;
rntc=33000./sensor;    %//RNTC=(Vcc*R1/Vin)-R1
rntc=rntc-10000;       %//
b1=log(rntc);          %//LN(RNTC)
b1=b1*b;               %//b*LN(RNTC)
c1=log(rntc);          %//LN(RNTC)
c1=power(c1,3);        %//LN(RNTC)^3
c1=c1*c;               %//c*(LN(RNTC)^3)
temp=a+b1+c1;          %//a+b*LN(RNTC)+c*(LN(RNTC)^3)
temp=1./temp;          %//1/(a+b*LN(RNTC)+c*(LN(RNTC)^3))
temp=temp-273.15 ;

%%%% SAIDA
axis([ 0 1000 -100 300 ]) ;
title ( 'Equação de Steinhart & Hart' )
xlabel ( 'ADRES' )
ylabel ( 'temp' )
plot( ADRES , temp )


Porém, na simulação, apareceu um problema, que não sei se refere-se á adaptação pro MATLAB, ou se o modelo do link estaria errado.
Para valores do registrador ADRES acima de ~700, o resultado do cálculo apresentou uma componente imaginária.

NTC.jpg


De qualquer modo, fazendo uma análise crua, o comportamento da curva no inicio ( ou seja, ADRES abaixo de ~700 ), parece coerente com a topologia do circuito. Veja que como o NTC está na parte de cima do divisor, realmente a tensão de entrada no microcontrolador deveria realmente subir conforme a temperatura subisse :

Imagem

Enfim, sugiro você fazer uma simulação agora, ponto-a-ponto, em cada valor de temperatura da equação acima, porém iniciando uma análise da fórmula abaixo, pois é depois desse ponto que efetivamente começa o modelamento do NTC, mas de cara, parece estranho o fato de na fórmula, ter ignorado o valor R1.

Código: Selecionar todos
rntc=33000./sensor;    %//RNTC=(Vcc*R1/Vin)-R1





+++
Você não está autorizado a ver ou baixar esse anexo.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 28 Jan 2014 07:53

André, bom dia,

Minha aplicação também não demanda tanta precisão, preciso apenas monitorar a temperatura ambiente de um galpão.
Você teria o circuito que foi utilizado?

Não sei de onde tiro essas constantes, pois o ntc que estou utilizando é 10k fabricado pela Inova.



andre_teprom escreveu:Juraci,



Quando trabalhei com NTC a bastante tempo atrás, como a minha aplicação não demandava tanta precisão, simplesmente mapeei em memória estática os pontos da curva ( o equivalente á decalrar como const no C ) e os valores intermediários eram obtidos por interpolação.

No seu caso, como você está fazendo o modelamento da curva para cálculo em tempo de execução do programa, eu sugiro fazer uma simulação primeiro, utilizando alguma ferramenta de cálculo numérico, como o MATLAB, que é uma mão-na-roda nesses casos, pois como utiliza uma linguagem meio que em "pseudo-C", para fazer a conversão depois é bem tranquilo.



+++
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 28 Jan 2014 07:54

Olá Maffeis, poderia me dar mais detalhes do circuito e do programa utilizado?

Grato

Maffeis escreveu:Eu tava estudando a um tempo atrás NTC

lembro que eu ia usar um circuito diferente desse

por conta que a corrente que passa por influenciava na leitura

eu tava vendo de usar uns amplificadores como seguidores de tensão
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 28 Jan 2014 07:57

Pois é André, também achei estranho.

Não preciso me apegar a esse código nem a esse circuito.
Se tiver alguma idéia, estou aberto a dicas...rsrs
Editado pela última vez por andre_luis em 31 Jan 2014 20:30, em um total de 1 vez.
Razão: removido conteudo replicado, excessivamente grande
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor ze2 » 28 Jan 2014 08:57

'ainda que isso suscite impulsos de verdadeira agressividade', não resisto em fazer o comentário a seguir...

Ja pensou em usar estes lm35 da vida? Facilitariam a sua. Bom, barato, preciso, linear

comentário tão óbvio que chego a temer por minha integridade intelectual...
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 28 Jan 2014 09:14

RSRSRSRSRSRS

Caro amigo, mesmo assim só tenho a agradecer, afinal, nem sempre a gente pensa em tudo....rs

Mas então, eu utilizo muito os lm35 da vida em meus projetos, mas para esse em especial, necessito do NTC, pois é meio que padrão e se encontra em qualquer casa de material elétrico (ao contrário do Lm35) além de já vir encapsulado e com o cabo no comprimento que o cliente necessita.

Agora temos de convir, que realmente o lm35 é uma maravilha para se trabalhar.

Só nunca o testei com cabos compridos em torno de 30 metros ou mais. Se alguém já o fez, por favor, poste o resultado.

Muito grato
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor andre_luis » 28 Jan 2014 19:51

juracipereira escreveu:Pois é André, também achei estranho.

Não preciso me apegar a esse código nem a esse circuito.
Se tiver alguma idéia, estou aberto a dicas...rsrs


Juraci,


Acabei de perceber que temos de dar mais um crédito para o autor do artigo.
Raciocinando um pouco, podemos observar 2 erros na minha análise anterior:

1. Embora a função em C do artigo calcule o valor de temp em função de ADRES, na verdade estamos no domínio da teperatura: ADRES=f(temp)
2. Por estarmos modelando de um dispositivo real, precisamos simular somente na faixa de temperatura de operação [-100,300].

Na verdade, o modelo matemático é valido somente para a região para a qual foi criado, e se forçarmos fora da região, a o resultado vai tentar compensar matemáticamente aquilo que não tem correspondencia com o físico, mas enfim, aqui vai agora a relação do NTC com os parametros acima :

NTC3.jpg


Ou seja, aplicando as condições de contorno, agora a coisa parece mais factível.
Bom, se quizer avançar nisso aí, mede alguns valores pra plotar superposto e ver se o real confere com o modelo.

Segue o código MATLAB modificado:

Código: Selecionar todos
%%%% ENTRADA
ADRES = 0 : .1 : 675 ;
sensor = 0 ;

%%%% CONFIGURACAO
a = 0.0011303;
b = 0.0002339;
c = 0.00000008863 ;

VCC = 5 ;
R1 = 10000 ;

%%%% CALCULO
sensor = ADRES;
sensor = sensor * 5 ;
sensor = sensor/1023;
rntc=33000./sensor;    %//RNTC=(Vcc*R1/Vin)-R1
rntc=rntc-10000;       %//
b1=log(rntc);          %//LN(RNTC)
b1=b1*b;               %//b*LN(RNTC)
c1=log(rntc);          %//LN(RNTC)
c1=power(c1,3);        %//LN(RNTC)^3
c1=c1*c;               %//c*(LN(RNTC)^3)
temp=a+b1+c1;          %//a+b*LN(RNTC)+c*(LN(RNTC)^3)
temp=1./temp;          %//1/(a+b*LN(RNTC)+c*(LN(RNTC)^3))
temp=temp-273.15 ;

%%%% SAIDA

plot( temp , ADRES )
axis([ -100 300 -5 679 ]) ;
title ( 'Equação de Steinhart & Hart' )
xlabel ( 'temp' )
ylabel ( 'ADRES' )


+++
Você não está autorizado a ver ou baixar esse anexo.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 29 Jan 2014 10:35

André,

muito bem observado!!!!!

Outra coisa que observei também foi o valor de VCC utilizado na equação "RNTC=(Vcc*R1/Vin)-R1", que foi de 33000, acredito eu que tenho havido uma confusão entre 5,0 e 3,3V da alimentação. Como no meu projeto a alimentação é de 5,0V eu alterei o valor para 50000. E também dei uma pequena alterada nas constantes A e B e pelo jeito ficou bacana.
Preciso agora, (quando sobrar um tempinho) coletar as medidas de resistência desse sensor da Inova para gerar as constantes corretas. Mas por enquanto, está funcionando belezinha (pelo menos na faixa de temperatura que preciso que é de até no máximo 45ºC).

Mas vamos continuar discutindo o assunto...

Grato
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor MOR_AL » 29 Jan 2014 11:39

André!
Você fez uma coisa interessante. Plotou a função ADRES = f(T) e poderia ir mais adiante.
Você poderia normalizar os valores de ADRES, entre 0% e 100%. 0% seria ADRES = 0 e 100% seria ADRES = 600 e alguma coisa.
Você poderia calcular uma reta (r1) que passasse pelo ponto (25ºC; ADRES percentual para T = 25ºC)) e com inclinação tangente neste ponto?
Daí calculando a função erro(%) = ADRES(%) - r1(%) forneceria o erro introduzido quando consideramos a função não linear como linear, que é o caso ocorrido em nossos circuitos.
Um gráfico deste erro seria bem interessante.
O que você acha? Acredito que você saiba fazer, mas se precisar pode contar comigo.
[]'s
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Re: Sensor NTC 10K + PIC + CCS

Mensagempor andre_luis » 29 Jan 2014 11:53

Olá MOR_AL,



Acho que o mais indicado pra isso - até porque já deve ter isso pronto no MATLAB com raiz média quadrada - seria traçar uma reta considerando como media, os pontos dentro da região linear de temperatura [0,50].

Mas na verdade, o conceito desse modelo, é justamente sair do caso mais genérico, que seria uma reta, pois ele dá o comportamento mais próximo do real, permitindo que computacionalmente estimemos o valor na saída.

Por acaso, quem entrar no meu LinkedIn, vai ver anexado um trabalho que fiz na escola técnica, algo muito próximo desse conceito, mas não computacionalmente. Naquele caso, eu gerei um circuito com OTA, que compensava a não linearidade da leitura de temperatuda de um corpo-negro com um foto-transistor.

Mas enfim, o que eu estava curioso mesmo - e pensei em você como a pessoa certa para decifrar isso - era entender como o camarada deduziu aquela formula mais acima, de modo que pudessemos inserir os valores de VCC e R1 como variáveis...



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Sensor NTC 10K + PIC + CCS

Mensagempor juracipereira » 29 Jan 2014 14:28

Muito boa a idéia MOR_AL,

podemos colocá-la em prática e ver no que dá!!
juracipereira
Bit
 
Mensagens: 32
Registrado em: 14 Jan 2008 23:38

Re: Sensor NTC 10K + PIC + CCS

Mensagempor EDSONCAN » 30 Jan 2014 07:21

Todo o NTC tem um curva logarítmica aproximadamente, se me lembro de calculo numérico da época da faculdade toda curva pode ser aproximada a um polinômio e quando maior o grau maior é a precisão. acredito que o mesmo pode ser feito com uma curva logarítmica e coeficientes.
Não gosto muito dessa solução devido ao tempo de multiplicação dos coeficientes que não acho muito adequado para um PIC, me lembro que uma vez em um controle de estufa dividimos a curva do NTC em 6 curvas lineares e ajustamos os trechos de maneira a minimizar os erros, como ficou com precisão acima de 1 grau que era o máximo que o display mostrava foi um solução bem adequada ao projeto.

Edson
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x