Convertendo matematicamente temperatura em resistência num termistor NTC. (resolvido)

Boa noite galera!

O desafio de hoje é um termistor NTC que eu tenho aqui.

Nem sempre é possível usar um sensor analógico como o LM35, que nos dá uma biblioteca prontinha para converter tensão em temperatura, direto, para a saída serial.

Eu sei que um termistor NTC aumenta a resistência conforme diminui a temperatura, mas como transformar tensão (ou resistência) em temperatura?

A princípio tinha pensado em obter experimentalmente uma tabela temperatura x resistência, colocando o termistor em água gelada e medindo várias vezes a temperatura e a resistência. Mas na prática isso se mostrou mais difícil do que eu imaginava, então o melhor é mesmo utilizar o método clássico para resolver o problema.

A fórmula (bem simples) é :


RT = RT0*{e^{b*[(1/T)-(1/T0)]}}

onde:

RT é a resistência do termistor à temperatura T (medida em Kelvin).

RT0 é a resistência do termistor à temperatura T0 (medida em Kelvin).

e é o número neperiano, ou algaritmo neperiano, que a minha calculadora tá dizendo que é 2.718281828.

T é a temperatura.

T0 é a temperatura inicial.

b é a constante térmo-resistiva atribuída ao termistor, um valor obscuro que podemos obter no datasheet do termistor. O problema é que os fabricantes muitas vezes não identificam esse termistor e você fica na mão, sem conhecer a principal característica do termistor.

A boa notícia é que agora eu só preciso de 2 valores de temperatura, 2 valores de resistência e um pouquinho de matemática, encontrar a dita-cuja constante térmica e alimentar meu Arduíno com apenas uma equação.

Só que a equação não é tão simples como parece. Quem tem seus 40 anos pegou uma formação melhor em matemática, talvez os mais novos não estejam acostumados a logaritmos neperianos. Notaram que o fator "b" que procuramos é uma exponencial? 

Calma! Vamos por partes. Primeiro, com um termômetro, uma caneca d'água e um multimetro vamos encontrar os valores de T, T0, RT e RT:

RT = 2.2k

T = 26ᵒC = (26+273)ᵒK = 299ᵒK (graus Kelvin)

RT0 = 8.3k

T0 = 5.5ᵒC = (5.5+273)ᵒK = 278.5ᵒK (graus Kelvin)

Então temos:

2200 = 8300*{2.718^{b*[(1/299)-(1/278.5)]}}

2200 = 8300*{2.718^{b*[-(1/4062)]}}

2200 = 8300*[2.718^(-b*/4062)]

2200/8300 = 2.718^(-b*/4062)

22/83 = 2.718^(-b*/4062)

0.265 = 2.718^(-b*/4062)

Agora tem que resolver por logaritmo:

Log b A = x <=> b^x = A

(o logaritmo de A na base b é igual a x, se e somente se: b elevado a x for igual a A)

então:

Log n (0.265) = (-b/4062)

Ln (0.265) = (-b/4062)

Agora Ln (0.265) tem que resolver na calculadora, senão é covardia:

-0.47 = -b/4062

b = 5394 ~ 5400

Pronto! Agora sabendo que R=U/i, é só jogar essa fórmula no Arduino que ele vai te retornar a temperatura em função da tensão (5 ou 3.3V) e da corrente de trabalho. Particularmente, gosto de usar planilhas e gráficos prá ajudar, mas cada um tem suas técnicas.

Só que no meu caso não é tão simples, ainda preciso concatenar a resistência do termistor (e a temperatura do ar) à frequencia de um oscilador.

Mas espero que seja útil pra vocês. Grande abraço!

Exibições: 8214

Responder esta

Respostas a este tópico

Alexandre, já existe biblioteca pronta para termistor para uso com o arduino, até tem um tutorial aqui no LDG:

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-ter...

e tem este outro artigo também:

http://microcontrolandos.blogspot.com.br/2013/01/termometro-com-ntc...

Opa.

Esse semana fiz algo assim, para ajudar uma amigo na verdade. Usando um NTC de 10k/25ºC e fazendo com ele um divisor resistivo com um resistor de 10k, resistor ligado ao GND e NTC ao 5V. Usei um AD de  10bits com referencias em GND e 5V. Cheguei na simples equação T(AD)= -32+0,11608 * AD. Os resultados foram satisfatórios, poderia melhorar se fosse linearizado por partes, mais ja da pra ter uma boa ideia. Segue em anexo um gráfico com a temperatura real, e a calculada pela interpolação vs AD. Também a planinha onde fiz os cálculos. Tem uma parte do calculo que esta omitida, fiz na HP. O casamento da na linearidade do NTC com a do divisor resistivo, quase se cancela. =)

Anexos

Opa, valeu! Não manjo de AD, mas o Almir e outros já tinham me falado, pode ser q seja uma solução até melhor. Em todo caso, agradeço pelos arquivos, já baixei pra estudar melhor depois.

Gostei muito da aplicação de metodologias científica .Isso pode se tornar um bom produto que poderia ser disponibilizado em forma de kit:

-Uma placa com sensor e interface via cabo usando transmissão em protocolo de frequencias (tipo CI555 com interface de potencia para longas distancias ou mesmo modbus,etc)

-Uma placa de aquisição para USB (poderia ser usando um atmega32u que ja tem usb embutida)

-Uma unidade Pascal (para ser usada por usuários de Delphi,Pascal)

-Uma biblioteca em C para desenvolvedores

-Uma aplicação com interface com Banco de Dados

*Muitos engenheiros e empresas precisam disso,mas não tem tempo de produzir algo desse nível.

Agora que tu falou, tão começando a pipocar idéias aqui!!!

Opa, vai ajudar pra servir de base, vou estudar. Problema é que não estou usando o termistor diretamente, mas num oscilador com ne555.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço