sensor pt100

estou precisando ligar um pt100 no arduino mais ate agora não consegui fazer direito. imagino que devo usar um amplificador operacional para isso. Porem sou novato na areá e não sei ao certo que configuração devo usar e nem sei calcular os valores dos resistores.

Estarei usando um pt100 de 3 fios para medir de 0C a aprox 300C.

Qualquer ajuda é bem vinda.

O manual
http://www.addtherm.com.br/wp-content/uploads/2012/06/A70-SensoresPT100-PT1000-ADD.pdf

Você espera alimentar com que tensão 5V?
Para começar, acho que um resistor de 100R seria o ideal, mas o melhor é saber qual é a faixa de temperatura que você vai trabalhar? Pois pelo catalogo, a 0º ele tem resistência de 100R, o resistor que você deve escolher deve se basear na faixa que você pretende medir com mais precisão.

Coloca a PT100 num braço de uma ponte wheatstone com 3 resistencias de 100 ohms cada.Depois alimentas com 5V do arduino e o meio da ponte wheatstone ligas numa entrada analogica.Caso os valores sejam muito baixos amplificas com um ampop para elevares o sinal ligeiramente e adaptares a tua escala.
Le isto

Claro que isto é apenas uma forma de se poder fazer existem muitas mais...

eu fiz como na imagem acima e usei o seguinte código no arduino:

int sensor = 0;
int valor = 0;

void setup(){

Serial.begin(9600);
}

void loop(){
valor = analogRead(sensor);
Serial.println(valor);
delay(1000);

}

E hora deixo o pt100 a temperatura ambiente hora o deixo a aproximadamente 45graus C

mais a unica leitura que recebo é: 325 . Essa leitura deveria mudar proporcionalmente ao aumento da temperatura não é?

O que sera que fiz de errado?

Corta a ligaçao entre o Ponto A e o PontoB.Depois liga a entrada analogica no pontoA.Isto nao sera o correcto de se fazer mas devera dar para veres o valor a mexer.
O problema que iras infrentar é a referencia de ground.A ponte ira funcionar bem se leres a tensao entre o ponto A e ponto B.Podes comprovar isso com o multimetro.
A questao e que se usares a alimentaçao vinda do arduino nao vais poder fazer isso porque devias ligar o pontoB ao gnd e o Ponto A na entrada analogica.Desta forma com a alimentaçao comum nao consegues ver a diferença entre a malha A e a malha B.
Outra forma seria ligares o ponto B em outra entrada analogica e depois compara-la com a analogica do pino A.Desta forma consegues ver a diferença entre eles como se fosse uma massa virtual.
Faz o teste

Muito obrigado pelas ajudas...

Fiz as mudanças...

Mais continuo com o mesmo problema...

sera algum problema no meu pt100? existe alguma forma de testar o pt100 de 3 fios??

uint8_t pontoA = 0;
uint8_t pontoB = 1;
int valorA = 0;
int valorB = 0;
int diferenca = 0;

void setup()
{
 Serial.begin(9600);
}

void loop()
{
valorA = analogRead(pontoA);
valorB = analogRead(pontoB);
Serial.print("Valor da entrada A:");
Serial.println(valorA);
Serial.print("Valor da entrada B:");
Serial.println(valorB);
Serial.print("Diferenca entre os Sinais:");
diferenca = valorA - valorB;
Serial.println(diferenca);
delay(1000);
 
}

Essa PT100 tem alguma referencia?
Tem cores?
Ve se isto te pode ajudar:
http://www.cip.ukcentre.com/pt100.htm

usei o código que vc postou

o valou da entrada A nunca muda é sempre 490
e o valor da entrada B em geral é 0 muito de vez em quando oscila ate no máximo 3...

vou tentar montar de novo para ver se eu não fiz nada errado na hora de montar a ponte...

quanto ao pt100 ele não tem codigo nenhum

seus fios são verde, vermelho e azul (medindo a resistência entre o vermelho e o azul o valor é um curto e entre o fio verde e os demais a resistência fica variando pela casa de 1mega)

Usa este esquema super simples:
Essa leitura na casa de um Mega ohms axo muito pode estar aberta mas ...
Coloca a tua PT100 na posiçao do Rx
Corre o programa e posta o resultado.
Quando dizes que o ponto B esta a zero tal so pode significar que esta em pull-down, por outras palavras a RL1 ou esta incorretamente ligada ou mesmo desligada.
o ponto B tem de ter um valor fixo no teu esquema.
Ao usares o esquema que te indico teras de ler um valor fixo no ponto D e um a variar a medida da pt100 no ponto B

300px-Wheatstonebridge.svg.png

O valor da leitura é esse:

Valor da entrada A:512
Valor da entrada B:1023
Diferenca entre os Sinais:-511

E continua sem variar o valor da resistência.

Testa a pt100 com o multimetro arrefece a no congelador e depois mede lhe a resistência
Ela é nova ?
A 0 graus ela tem de ter 100 ohms, claro que no congelador podes não conseguir isso mas a resistência terá de andar por lá perto
Desta forma comprovas a pt100 a ver se esta ok

Apos uma procura sobre os valores resistivos normais de uma PT100 encontrei isto:

If the reading is within tolerance then this process is repeated two more times to give three readings across the working range of the instrument. For CIP temperature instruments the resistances selected are normally 100.00, 119.40 and 138.50 Ohms. The temperature equivalent values are 0, 50 and 100oC respectively.

Significa que se a tua mede perto de 1Mega das duas uma ou esta mesmo avariada ou estas com ligaçoes erradas!!!
O valor em ohms a temperatura ambiente anda na casa dos cento e poucos ohms!!!!

vou tentar providenciar outro pt100 para comparar...

Por que as leituras estão muito estranhas...

Era meu sensor que estava mesmo com defeito...

Hj recomeço de novo os testes...

Agora sim esta tudo funcionando direito...

agora gostaria de uma ajudinha.

Como converto os valores lidos em ºC

A leitura aqui esta dando 20 com o sensor colocado no meio do gelo (aprox 0ºC)...

Bom para ja coloca o codigo que tas a usar para estar mos sintonizados e ver o que ja tens feito

Afinal sempre era a PT100 avariada :slight_smile:
Em relaçao a esse ajuste de gamas agora teras de fazer o seguinte.
Tens de tentar arranjar uma forma de leres a temp a que a PT100 esta sugeita para que desta forma possas achar o racio que teras de usar para a ajustar.
Ex:
tens a sonda no gelo e um termometro ao lado dela mede 3ºC
Na Leitura obtens um valor de 20
De seguida sobes a temperatura e voltas a ler o valor na ponte
Depois ao fim de todos esses dados podes obter a diferença que teras de ajustar
Isto claro se essa variaçao for linear senao sera algo mais dificil

Bem estou usando uma ponte como esta para fazer a leitura:

Todos os resistores são de 100
e o ponto A esta ligado a entrada analógica 2 e
o ponto B esta ligado a entrada analogica 3.

Estou usando o seguinte codigo:
#define pt1 2//
#define pt2 3//
int val1;//
int val2;//
int val3;//

void setup() {
Serial.begin(9600);
}

void loop(){
val1= analogRead(pt1);
Serial.println(val1);

val2= analogRead(pt2);
Serial.println(val2);

val3= val1 - val2;
Serial.print("/////////////////////");
Serial.println(val3);

delay(1000);
}

Ok tenta com este codigo

#define ponto1 A2//
#define ponto2 A3//
int amostra1;//
int amostra2;//
int diferenca;
int temperatura;//


void setup() 
{
  Serial.begin(9600);
}


void loop()
{
  amostra1= analogRead(ponto1);
  amostra2= analogRead(ponto2);
  Serial.println("O valor das entradas sao:");
  Serial.print(amostra1);
  Serial.print("****");
  Serial.println(amostra2);
  diferenca= ponto1 - ponto2;
  temperatura = map(diferenca, 20, 40, 0, 25); //Esta funcao pega nos valores aramzenados na var diferença e faz uma adaptaçao de escala ou seja casa o valor 20 com 0 e o seu maximo 40 com 25,
  //Claro esta que e um exemplo tens de axar a relaçao que pretendes para converter os valores da diferença para a temperatura,
  //Neste exemplo estou a dizer que tenho uma gama de 20 a 40 e que vai ser convertida numa outra gama de 0 a 25 graus por exemplo
  Serial.println("O valor convertido e:");
  Serial.print(temperatura);
  delay(1000);
}

Quando escreveres o teu codigo aposta na identaçao do codigo e tenta torna-lo o mais simples possivel( nomes de variaveis, e comenta-o)
Quanto mais "human readable" ele for mais a ti proprio te ajudas

Kra muito obrigado...

Funcionou certinho... so a precisão que ainda num esta legal...

Sera que vou precisar montar um circuito pra amplificar o sinal??? ou algo do tipo???