Projeto Termistor NTC com Arduino
Por: Gustavo Mendes • 14/3/2017 • Relatório de pesquisa • 1.437 Palavras (6 Páginas) • 583 Visualizações
Projeto Termistor NTC com Arduino
Alunos: Felipe Davi
Victor Philippe
Gustavo Mendes
Vídeo do arduino em funcionamento: Projeto Arduino - Programação 1 ( CCUFAL)
Objetivo do Projeto:Utilizando-se de um termistor, baseado na temperatura ambiente, este termistor em questão trabalha de forma inversamente proporcional ao aumento da temperatura, ou seja, ele diminui a resistência conforme a temperatura sobe,e através corrente sai desse termistor podemos calcular a temperatura utilizando-se do método do fator beta, dado por esta formula:
[pic 1]
No código foram utilizadas variáveis do tipo float para maior precisão, segue declaração das variáveis:
float Vin=5.0; // [V]
floatRaux=10000; // [ohm] Resistor auxiliar
float R0=10000; // [ohm] valor nominal do RTC a 25ºC
float T0=298.15; // [K] (25ºC)
floatVout=0.0; // [V] Tensão de saída do divisor
floatRout=0.0; // [ohm] Valor de resistência do NTC
//Ver Datasheet ou usar um multímetro e medir a resistência do NTC nas duas temperaturas
float T1=273; // [K] Temperatura de calibração 1
float T2=373; // [K] Temperatura de calibração 2
float RT1=35563; // [ohms] Resistência medida na temperatura de calibração 1
float RT2=549; // [ohms] Resistência medida na temperatura de calibração 2
float beta=0.0; // [K] parâmetro Beta
floatRinf=0.0; // [ohm] parâmetro Rinf
floatTempK=0.0; // [K] Temperatura de saída em Kelvin
floatTempC=0.0; // [ºC] Temperatura de saída em °C
aqui temos o calculo do beta que é realizado apenas uma vez dados os valores setados universalmente nas variáveis previamente descritas:
beta=(log(RT1/RT2))/((1/T1)-(1/T2)); ->
beta=(log(35563/549))/((1/273)-(1/373)); ->
beta=4247.249512
Rinf=R0*exp(-beta/T0); ->
Rinf=10000*exp((-4247.249512)/298.15); ->
Rinf=0.006506
Já dentro do loop temos o calculo constante das variações de resistência e de temperatura:
//Calculo da resistência do NTC
Vout=Vin*((float)(analogRead(0))/1024.0); ->
Vout=5.0*((float)(analogRead(0))/1024.0);
Rout=(10000*Vout/(5.0-Vout)); ->
Rout=(10000*(5.0*((float)(analogRead(0))/1024.0))/(5.0-(5.0*((float)(analogRead(0))/1024.0))));
//Calculo da temperatura
TempK=(beta/log(Rout/Rinf));->
TempK=(beta/log(((10000*(5.0*((float)(analogRead(0))/1024.0))/(5.0-(5.0*((float)(analogRead(0))/1024.0)))))/ 0.006506));
TempC=TempK-273.15; ->
TempC=((beta/log(((10000*(5.0*((float)(analogRead(0))/1024.0))/(5.0-(5.0*((float)(analogRead(0))/1024.0)))))/ 0.006506)))-273.15;
Como extra a um simples termômetro, foi inserido um alarme o qual toca a Marcha Imperial - Tema dentro do filme de Star Wars, ou algo parecido com ela...
aqui definido em costantesestão as notas musicais transformadas em frequências para serem emitidas pelo buzzer:
//do
constint c = 261;
//re
constint d = 294;
//mi
constint e = 329;
//fa
constint f = 349;
//so
constint g = 391;
//so sustenido
constintgS = 415;
//la
constint a = 440;
//la sustenido
constintaS = 455;
//si
constint b = 466;
//do maior
constintcH = 523;
//do maior sustenido
constintcSH = 554;
//re maior
constintdH = 587;
//re maior sustenido
constintdSH = 622;
//mi maior sustenido
constinteH = 659;
//fa maior
constintfH = 698;
//fa maior sustenido
constintfSH = 740;
//so maior
constintgH = 784;
//so maior sustenido
constintgSH = 830;
//la maior
constintaH = 880;
jogando a função beep “ voidbeep(int nota, intduracao)” linha 138, enviamos a frequência da nota em forma de constante e a duração da emissão do “beep”.
Aqui temos uma amostra do código completo (seguido em anexo do arquivo .ino):
#include
float Vin=5.0; // [V]
floatRaux=10000; // [ohm] Resistor auxiliar
float R0=10000; // [ohm] valor nominal do RTC a 25ºC
float T0=298.15; // [K] (25ºC)
floatVout=0.0; // [V] Tensão de saída do divisor
floatRout=0.0; // [ohm] Valor de resistência do NTC
temperaturas
float T1=273; // [K] Temperatura de calibração 1
float T2=373; // [K] Temperatura de calibração 2
float RT1=35563; // [ohms] Resistência medida na temperatura de calibração 1
float RT2=549; // [ohms] Resistência medida na temperatura de calibração 2
float beta=0.0; // [K] parâmetro Beta
floatRinf=0.0; // [ohm] parâmetro Rinf
floatTempK=0.0; // [K] Temperatura de saída em Kelvin
floatTempC=0.0; // [ºC] Temperatura de saída em °C
//joga os "tons" em constantes
//do
constint c = 261;
//re
constint d = 294;
//mi
constint e = 329;
//fa
constint f = 349;
//so
constint g = 391;
...