lape
  LAPE e-log  ELOG logo
Message ID: 106     Entry time: Wed Aug 21 17:42:29 2013
Author: saullo 
Type: Routine 
Category: Aividades do LAPE 
Subject: Arduino + Sensor PT100 

Hoje pus pra rodar o programa de leitura e conversao do PT100.

 

O Arduino esta lendo a tensao no PT100 e fazendo a conversao da voltagem em resistencia e da resistencia em temperatura...

Foi usado um resistor de 150 Ohn, em serie com o PT100, como mostra a figura.

Estou pondo aqui o codigo de leitura...

Tive alguns problemas, com a leitura pq o PT100 é muito pequeno e estava dando mal contato ou/e eu nao sabia manusea-lo... Na segunda imagem da pra ver o resultado( a temperatura era de 20*C mas) ta mostrando 50*C por causa desse mal contato.

Eu havia resolvido isso, mas voltou a aparecer, nada com o que se preocupar, visto o tamanho "de mosquito" do sensor, quando tivermos um sensor maior, isso nao sera mais problema... É apenas para demonstrar que funciona.

 

IMG_1793.JPG

leitura.png

 

 

Attachment 2: pt100_arduino.ino  1 kB  | Hide | Hide all

// Programa para ler temperatura do PT100

float volt = 5;
float R1 = 150;

float calcula_temp(float Rpt){ // valido apenas para temperaturas entre (0 e 850)C
  
  float R0 = 100; //resistencia a zero graus
  float A = +3.9083E-03;
  float B = -5.775E-07;
  float C = -4.183E-12;
  
  //float Tp = (- A + pow((A*A-4*B),0.5))/(2*A);
  //float Tn = (- A - pow((A*A-4*B),0.5))/(2*A);
  float T = (Rpt - R0)/(A*R0); // como B e C sao pequenos, boa aproximacao ela ser linear...
  return (T);
  
}

void setup() {
  // put your setup code here, to run once:
 Serial.begin(4800);
 
 Serial.print("Voltagem PT100(V)");
 Serial.print("\t");
 Serial.print("Resistencia PT100(Ohm)");
 Serial.print("\t");     
 Serial.println("Temperatura(C)");
}

void loop() {
  // put your main code here, to run repeatedly: 
  
     float leitura_porta1 = 0;
     float leitura_porta2 = 0;
  
     //leitura_porta1 = analogRead(A0);
     leitura_porta2 = analogRead(A1);
     /*Serial.print(leitura_porta1);   
     Serial.print("\t");
     Serial.println(leitura_porta2);   
*/

     float voltagem1 = 0;
     float voltagem2 = 0;
     
     //voltagem1 = leitura_porta1 * (volt / 1024.0);
     voltagem2 = leitura_porta2 * (volt / 1024.0);
     
     //float Rpt1 = voltagem2 * R1 / voltagem1  ;
     //float Rpt = 150.0*5.0/voltagem1 - 150;
     float Rpt = voltagem2*R1/(volt - voltagem2);
     
     float temperatura = calcula_temp(Rpt);
     
  //   Serial.print(voltagem1);
   //  Serial.print("\t");
     Serial.print(voltagem2);
     Serial.print("\t");
     Serial.print(Rpt);
     Serial.print("\t");     
     Serial.println(temperatura);

      delay(1000);
      

  
}
ELOG V2.9.2-2455