Arduino Lab 06 – Leitura de um sensor de temperatura do tipo NTC com o Arduino Imagem montagem Resumo Neste Lab trataremos da leitura de temperatura utilizando um sensor do tipo NTC (Negative Temperature Coeficient). Um circuito será utilizado para amplificar e filtrar os sinais provenientes deste sensor e um display gráfico irá indicar os valores de temperatura para o usuário em valores numéricos e no tempo. Este Lab tem como coautores os meus colegas de TCC que contribuíram para esta parte do trabalho final. Uma imagem dos dispositivos utilizados neste Lab é indicada abaixo. Dispositivos a serem utilizados O termistor NTC Os termistores são dispositivos que apresentam em seu interior um resistor sensível a temperatura. Os do tipo NTC são normalmente compostos de materiais semicondutores. Embora sensores que apresentam um coeficiente de temperatura positiva estejam disponíveis no mercado, a maioria dos termistores tem um coeficiente de temperatura negativo (NTC), ou seja, sua resistência diminui com o aumento da temperatura. Neste Lab iremos utilizar um NTC com encapsulamento metálico de contato de pele assim como é mostrado na imagem abaixo. Sensor NTC de pele O coeficiente de temperatura negativo pode atingir uma alta porcentagem de variação por graus Celsius, permitindo que o circuito empregado detecte mudanças minúsculas na temperatura que não poderiam ser observadas utilizando outros tipos de sensores como os RTDs (Resistance Temperature Detector) ou Termopares. O grande preço de se ter um dispositivo sensível é a perda de linearidade com o aumento da temperatura. O termistor é um dispositivo extremamente não linear e altamente dependente de parâmetros do processo ao qual se trabalha. Devido a esse fato, os fabricantes de termistores ainda não padronizaram as curvas deste sensor assim como fizeram com os Termopar. Uma curva comparativa entre o NTC e o RTD é indicada abaixo. Curva NTC e RTD O intervalo de medida de temperatura com termistores, na prática para alguns modelos de NTC, está limitado a 100°C devido a estabilidade pobre do sensor quando submetido a altas temperaturas. A precisão na medida depende da técnica empregada para medida da variação da resistência e da calibração do sensor. Com o uso de uma técnica apropriada, temperaturas de 125°C pode ser medida com uma precisão de 0,01°C. Se o sinal de temperatura é lido através de um sistema de aquisição de dados, é mais adequado realizar a linearização da medida após a conversão analógica-digital no microprocessador / microcontrolador. Para isto pode se utilizar um polinômio gerado a partir de medidas de dados empíricos e comparação com um termômetro padrão. A construção deste polinômio será tratado mais adiante. Aquisição do sinal A temperatura, inicialmente, é obtida analogicamente através da variação de resistência do termistor quando em contato direto com a pele de uma pessoa. Um divisor de tensão referenciado em uma tensão constante de 3V, obtida com o uso do diodo Zener em paralelo, é utilizado para captar a queda de tensão sobre o sensor que NTC que em seguida é encaminhado ao amplificador de instrumentação INA122P. O esquema do amplificador é ilustrado abaixo. Diagrama Interno do INA122P O INA122P é um amplificador de instrumentação de precisão, para aquisição de sinais susceptíveis a pequenos ruídos. É um amplificador com bom desempenho e baixo consumo de corrente. É ideal para instrumentação portátil e sistemas de aquisição de dados. Um capacitor de 1µF é utilizado em paralelo com o divisor de tensão para eliminação de ruídos. Para manter a mínima variação de tensão de referência, utilizamos um Zener de 3 volts. A entrada inversora (pino 2) é aterrada (0V) e a entrada não inversora (pino 3) é alimentada com a queda de tensão advinda do divisor de tensão, ou seja, a queda de tensão proveniente no sensor. É utilizado um resistor entre os pinos 1 e 8 para cálculo do ganho. O RG utilizado é de 200kΩ, logo temos um ganho de 6 para este amplificador de acordo com a necessidade de amplificação do sinal. O circuito de aquisição é mostrado abaixo. Esquemático de Aquisição Uma imagem com a montagem em uma Protoshield é mostrada abaixo. Montagem na Protoshield Como o sensor NTC não apresenta um comportamento linear, foi utilizado um polinômio de terceira ordem afim de adquirir boa precisão e confiabilidade nas leituras. Para criar este polinômio um termômetro calibrado foi utilizado como referencia de temperatura. Assim, apanhamos os valores de resistência medidas no terminal do sensor e a tensão na saída do circuito amplificador e construímos a tabela abaixo. Tabela com os valores dos indices O polinômio utilizado foi gerado no Matlab, pelo método do Polinômio interpolador de Lagrange, de acordo com os dados indicados na tabela acima, e é mostrado abaixo. Código Matlab para gerar os coeficientes do polinômio Com os coeficientes determinados, o seguinte polinômio foi obtido: Onde: temp -> Valor da temperatura em graus Celsius v -> Valor da conversão proveniente do microcontrolador. AD do Algoritmo e testes O sinal amplificado pelo circuito descrito acima é enviado para o canal analógico A0 do Arduino. A conversão é feita e o resultado aplicado ao polinômio. Os valores de temperatura são indicados no display com o controlador PCD8544, muito conhecido como Nokia 5510, na forma numérica e no tempo em forma de gráfico. Quando o gráfico é totalmente preenchido, o cursor retorna a esquerda, no ponto zero no eixo do tempo, e os pontos antigos são apagados de acordo com o preenchimento dos novos pontos. Este funcionamento pode ser observado no vídeo indicado pelo link abaixo. Para o Display, algumas funções foram implementadas no próprio corpo do algorítmo principal não sendo necessário baixar nenhuma biblioteca extra. Desta forma, com uma análise minunciosa do código, muitos outros tipos de gráficos e representações podem ser gerados neste display. O algoritmo é indicado logo abaixo. [crayon-59434169999ec834496355/] Conclusão Neste Lab trabalhamos a aquisição de temperatura utilizando um sensor NTC. O circuito de condicionamento do sinal e o polinômio interpolador foram os pontos chaves deste protótipo. A representação gráfica dos valores da temperatura só foi possível devido a simplicidade de trabalho com o controlador PCD8544 do display e a construção versátil e bem entendida da biblioteca de comunicação. Novos protótipos podem ser criados com base neste apresentado neste Lab. Em ocasiões futuras, trabalharemos em um projeto de leitura de termopares industriais tomando como base este Lab. Imagem Display