Índice:

Medindo a temperatura do PT100 usando o Arduino: 6 etapas (com imagens)
Medindo a temperatura do PT100 usando o Arduino: 6 etapas (com imagens)

Vídeo: Medindo a temperatura do PT100 usando o Arduino: 6 etapas (com imagens)

Vídeo: Medindo a temperatura do PT100 usando o Arduino: 6 etapas (com imagens)
Vídeo: SENSOR DE TEMPERATURA PT100 COM STM32 2024, Julho
Anonim
Medindo a temperatura do PT100 usando o Arduino
Medindo a temperatura do PT100 usando o Arduino

O PT100 é um detector de temperatura de resistência (RTD) que muda sua resistência dependendo da temperatura ambiente, é amplamente utilizado para processos industriais com dinâmica lenta e faixas de temperatura relativamente amplas. É usado para processos dinâmicos lentos porque os RTDs têm tempos de resposta lentos (sobre os quais falarei mais tarde), mas são precisos e têm baixa variação ao longo do tempo. O que vou mostrar a você neste Instructable não estaria de acordo com o padrão industrial, mas irá expô-lo a uma maneira alternativa de medir a temperatura do que usar o LM35, com o qual muitos entusiastas estariam familiarizados e a teoria do circuito mostrada pode ser aplicado a outros sensores.

Etapa 1: Componentes

1x PT100 (dois fios)

1x Arduino (qualquer modelo)

3 amplificadores de operação 741 (LM741 ou UA741)

1x resistor 80ohm

2 resistores de 3,9kohms

2 resistores de 3,3kohms

2 resistores de 8,2 kohms

2 resistores 47kohms

1x Potenciômetro 5kohms

1 fonte de alimentação de dois terminais ou 8 baterias AA de 1,5 V

Estou usando um PT100 de dois fios, os PT100s de três e quatro fios terão circuitos diferentes. Os valores do resistor para a maioria deles não precisam ser exatamente os mesmos acima, mas se houver um par de resistores, ou seja, 3,9 Kohms, se você os trocou por, digamos, 5k, você precisaria trocar ambos por 5k a partir de então precisa ser o mesmo. Quando chegarmos ao circuito, direi o efeito da escolha de valores diferentes. Para os amplificadores operacionais (amplificadores operacionais), você pode usar outros amplificadores operacionais, mas esses são os que usei.

Etapa 2: Ponte Wheatstone

Ponte Wheatstone
Ponte Wheatstone
Ponte Wheatstone
Ponte Wheatstone
Ponte Wheatstone
Ponte Wheatstone

Primeiro preciso falar sobre a fórmula para obter a temperatura da resistência para o PT100 antes de falar sobre a primeira parte do circuito, a fórmula para a resistência é a seguinte:

Imagem
Imagem

onde Rx é a resistência PT100, R0 é a resistência PT100 a 0 graus C, α é o coeficiente de resistência de temperatura e T é a temperatura.

Imagem
Imagem

R0 é 100 ohms pois este é um PT100, se fosse um PT1000, R0 seria 1000 ohms. α é 0,00385 ohms / graus C retirado da folha de dados. Também existe uma fórmula mais precisa que pode ser encontrada aqui, mas a fórmula acima servirá para este projeto. Se transpormos a fórmula, podemos calcular a temperatura para uma determinada resistência:

Imagem
Imagem

Digamos que queremos medir algo que teria uma faixa de temperatura de -51,85 a 130 graus C e colocamos o PT100 no circuito mostrado na figura 1. Usando a equação acima e a equação para a tensão de um divisor de tensão (mostrado na primeira foto) podemos calcular a faixa de tensão. Fundo do intervalo T = -51,85 (80 ohms)

Imagem
Imagem

e a 130 graus (150 ohms):

Imagem
Imagem

Isso nos daria uma faixa de 0,1187 V e um deslocamento DC de 0,142, porque sabemos que nossa temperatura nunca ficará abaixo de -51,85 graus C, isso diminuirá a sensibilidade na faixa que nos interessa (80 a 130 ohms) quando amplificamos essa tensão. Para se livrar desse desvio DC e aumentar nossa sensibilidade, podemos usar uma ponte de Wheatstone, que é mostrada na segunda foto.

A saída do segundo divisor de tensão (Vb-) será subtraída da saída do primeiro divisor de tensão (Vb +) usando um amplificador diferencial posteriormente. A fórmula para a saída da ponte é de apenas dois divisores de tensão:

Imagem
Imagem

A saída de tensão para o PT100 é de 80 ohms e usando os outros valores na imagem:

Imagem
Imagem

e para Pt100 sendo 150 ohms:

Imagem
Imagem

Ao usar o Wheatstone, eliminamos o desvio DC e aumentamos a sensibilidade após a amplificação. Agora que sabemos como a ponte de Wheatstone funciona, podemos falar sobre por que usamos 80 ohms e 3,3 kohms. Os 80 ohms são explicados pela fórmula acima, escolha este valor (vamos chamá-lo de resistor de deslocamento Roff) para ser a faixa inferior de sua temperatura ou, melhor ainda, um pouco abaixo da sua faixa, se estiver sendo usado para um sistema de controle para regulação de temperatura ou algo parecido, você gostaria de saber o quão baixa a temperatura está ficando abaixo de sua faixa de temperatura. Portanto, se -51,85 C é a parte inferior de sua faixa, use 74,975 ohms (-65 graus C) para seu Roff.

Eu escolhi 3,3k para R1 e R3 por duas razões, para limitar a corrente e aumentar a linearidade da saída. Como o PT100 muda a resistência devido à temperatura, passar muita corrente por ele resultará em leituras incorretas devido ao autoaquecimento, então escolhi uma corrente máxima de 5-10mA. Quando o PT100 é de 80 ohms, a corrente é de 1,775 mA com segurança abaixo da faixa máxima. Você diminui a resistência para aumentar a sensibilidade, mas isso pode ter um efeito negativo na linearidade, pois usaremos a equação de uma linha mais tarde (y = mx + c) com uma saída não linear irá introduzir erros. A terceira imagem tem um gráfico da saída da ponte usando diferentes resistores superiores, a linha sólida é a saída real e a linha pontilhada é a aproximação linear. Você pode ver no gráfico em azul escuro (R1 e R3 = 200 ohms) fornece a maior faixa de tensão, mas a saída é a menos linear. O azul claro (R1 & R3 = 3,3kohms) fornece a menor faixa de tensão, mas a linha pontilhada e a linha sólida estão sobrepostas, mostrando que sua linearidade é muito boa.

Sinta-se à vontade para alterar esses valores para se adequar à sua aplicação, também se você alterar a tensão, certifique-se de que a corrente não fique muito alta.

Etapa 3: amplificação

Amplificação
Amplificação
Amplificação
Amplificação

Na última etapa, descobrimos que a faixa de saída dos dois divisores de tensão subtraídos era de 0 a 0,1187, mas não falamos sobre como subtrair essas tensões. Para fazer isso, precisaremos de um amplificador diferencial que subtrairá uma entrada da outra e amplificará pelo ganho do amplificador. O circuito para um amplificador diferencial é mostrado na primeira imagem. Você alimenta o Vb + na entrada inversora e Vb- na entrada não inversora e a saída será o Vb + - Vb- com um ganho de um, ou seja, sem amplificação, mas adicionando os resistores mostrados na imagem, adicionamos um ganho de 5,731. O ganho é dado por:

Imagem
Imagem

Ra é R5 e R7 e Rb é R6 e R8, a saída de tensão é dada por:

Imagem
Imagem

Existem dois problemas em apenas conectar este amplificador à saída da ponte, o efeito de carregamento e a alteração do ganho. Alterar o ganho do amplificador requer que você troque pelo menos dois resistores, já que os dois pares de resistores devem ser iguais, então ter dois potes que devem ter o mesmo valor seria irritante, então usaremos algo chamado amplificador de instrumentação sobre o qual falo a seguir. O efeito de carregamento são os resistores de entrada no amplificador que afetam a queda de tensão no PT100, queremos que a tensão no PT100 permaneça inalterada e para fazer isso podemos escolher resistores muito grandes para os resistores de entrada de modo que a resistência paralela do PT100 e o resistor de entrada está muito próximo da resistência PT100, mas isso pode causar problemas com ruído e deslocamento de saída de tensão que não irei abordar. Apenas escolha a faixa intermediária na faixa de Kohms, mas como eu estava dizendo, ter resistores pequenos também é ruim, então vamos mudar um pouco o circuito.

Na segunda foto, temos a saída da ponte conectada a um amplificador de instrumentação que atua como um amplificador buffer para separar as duas metades dos circuitos (a ponte e a amplificação) e também permite o uso para amplificar a entrada alterando apenas um potenciômetro (Rgain). O ganho do amplificador de instrumentação é dado por:

Imagem
Imagem

onde Rc são os dois resistores de 3,9k acima e abaixo do potenciômetro.

Ao diminuir Rgain, a amplificação aumenta. Então, no ponto Va e Vb (amplificado Vb + e Vb-), é apenas um amplificador diferencial como antes e o ganho total do circuito é apenas os ganhos multiplicados juntos.

Imagem
Imagem

Para escolher seu ganho, você deseja fazer algo como fizemos antes com o Roff, devemos escolher uma resistência logo acima de sua temperatura máxima em sua faixa, caso ela ultrapasse. Como estamos usando o Arduino que tem um adc de 5 V, a saída máxima do circuito deve 5 V na temperatura máxima que você escolheu. Vamos escolher 150 ohms como a resistência máxima e a tensão da ponte não amplificada foi de 0,1187 V, o ganho que precisamos é de 42,185 (5 / 0,1187)

Digamos que mantenhamos Ra, Rb e Rc em 8,2k, 47k e 3,9k, só precisamos encontrar o valor para o pote Rgain:

Imagem
Imagem

Portanto, para obter os 5 volts completos da faixa de temperatura que estamos usando, altere o valor de Rgain para 1.226k. A tensão de saída que sai do amplificador diferencial é dada por:

Etapa 4: Alimentação do circuito

Alimentação do circuito
Alimentação do circuito
Alimentação do circuito
Alimentação do circuito
Alimentação do circuito
Alimentação do circuito

Esta é a última etapa do circuito, você deve ter notado o Vcc + e o Vcc- nos circuitos do amplificador operacional, isso é porque eles precisam de tensão positiva e negativa para funcionar corretamente, você pode obter amplificadores operacionais de barramento único, mas eu decidi para usar esse amplificador, pois era isso que eu tinha por aí. Então, forneceremos + 6V e -6V, existem três maneiras de fazer isso. O primeiro é mostrado na primeira foto onde temos que duas fontes de alimentação ou dois terminais de saída de uma única fonte de alimentação, ambos em 6V e ter uma saída positiva conectada ao negativo da outra. Os 6V do suprimento superior serão nossos + 6V, o positivo do suprimento inferior é o GND e o negativo do suprimento inferior é o -6V. SÓ CONECTE ASSIM SE OS GNDs DAS DUAS FONTES DE ALIMENTAÇÃO ESTIVEREM SEPARADOS OU SEJA DANIFICAR SUA FONTE DE ALIMENTAÇÃO. Todas as fontes de alimentação comerciais teriam GNDs separados, mas se você quiser verificar, use o testador de continuidade do multímetro, se ele zumbir, não use esta configuração e use a próxima. No meu suprimento caseiro, queimei o fusível fazendo isso.

Na segunda foto está a segunda configuração que podemos ter, ela exige que uma fonte tenha o dobro da tensão da outra, mas não danificará a fonte se os GNDs estiverem conectados. Temos dois suprimentos, um de 12V e outro de 6V. O 12V atuará como nosso + 6V, o 6V do segundo suprimento atuará como o GND e os dois GNDs reais fora do suprimento atuarão como -6V.

Esta última configuração é para fontes de alimentação com apenas uma saída, ela usa um amplificador de buffer de ganho 1 para criar um aterramento virtual passando metade da tensão de alimentação através do amplificador de buffer. Então, o 12V atuará como + 6V e o terminal GND real será -6V.

Se você quiser usar baterias, sugiro a primeira configuração, mas um problema com as baterias é que a voltagem vai cair à medida que começam a morrer e a voltagem da ponte também vai cair, dando leituras de temperatura erradas. Você pode, é claro, ler a tensão das baterias e incluí-las nos cálculos ou usar reguladores e mais baterias. No final, depende de você.

Etapa 5: Circuito Completo e Código

Circuito Completo e Código
Circuito Completo e Código
Circuito Completo e Código
Circuito Completo e Código
Circuito Completo e Código
Circuito Completo e Código

O circuito completo é mostrado acima e foi feito no novo Circuits.io da Autodesk que permite criar circuitos na placa de ensaio, editar o diagrama de circuito (mostrado na figura 2) e diagramas de PCB e a melhor parte, permite simular o circuito da placa de ensaio e pode até programar um Arduino e conectá-lo no modo breadboard, mais abaixo na página está a simulação e você pode brincar com dois potes. Se você quiser duplicar o circuito e inserir seus próprios valores, poderá encontrar o circuito aqui. O primeiro potenciômetro é de 70 ohms e em série com um resistor de 80 ohms que simula o PT100 com uma faixa de 80-150 ohms, o segundo potenciômetro é o ganho do amplificador de instrumentação. Infelizmente, usei uma biblioteca que baixei para o meu código, então o Arduino não está incluído no circuito abaixo, mas há apenas dois fios extras que você precisa conectar. Se você estiver mais confortável com o LTspice, incluí um arquivo asc com o circuito.

Conecte o pino A0 à saída do amplificador diferencial

Conecte o GND do Arduino ao GND do circuito (NÃO O -6V)

E esse é o circuito feito, agora no código. Anteriormente, mencionei que usaremos a fórmula y = mx + c, bem, agora vamos calcular m (a inclinação) e c (o deslocamento). No Arduino, estaremos lendo a tensão, mas a equação da temperatura precisa que conheçamos a resistência do PT100, então uma maneira de fazer isso é substituindo Serial.println (temp) por Serial.println (V) e registrar o tensão e resistência em duas temperaturas. Ao fazer este teste, deixe o PT100 sozinho por um tempo, como um minuto ou dois e mantenha-se afastado de qualquer fonte de calor (luz solar, ventoinha do laptop, seu corpo, etc).

O primeiro ponto que podemos tirar é a temperatura ambiente, quando tiver o circuito conectado e funcionando, registre a tensão (Vt1) lida pelo Arduino no monitor serial e rapidamente desconecte o PT100 e registre sua resistência (Rt1), não coloque o seu mãos na sonda ao desconectar, pois isso mudará a resistência. Para a segunda temperatura, poderíamos colocar a sonda em água gelada ou água quente (cuidado se usar água quente) e repetir o que fizemos antes de encontrar Vt2 e Rt2. Logo depois de colocar a sonda no líquido, aguarde um ou dois minutos para que a resistência se estabilize. Se você estiver interessado no tempo de resposta do PT100, registre a tensão desligada do monitor serial a cada 2 segundos ou mais e podemos desenhar um gráfico a partir disso e explicarei mais tarde. Usando as duas tensões e resistências, podemos calcular a inclinação da seguinte forma:

Imagem
Imagem

Rt1 e Rt2 são as resistências nas duas temperaturas e o mesmo vale para as tensões Vt1 e Vt2. A partir da inclinação e um dos dois conjuntos de pontos que você registrou, podemos calcular o deslocamento:

Imagem
Imagem

C deve estar perto de seu Roff real. De minha simulação, calculei estes valores:

Imagem
Imagem

A partir dessa resistência, podemos encontrar nossa temperatura usando a fórmula que tínhamos no início:

Imagem
Imagem

E é isso, o código para o Arduino está abaixo, se tiver algum problema é só deixar um comentário e tentarei ajudar.

Não há fotos do circuito que fiz como fiz há algum tempo e não tenho mais o PT100 para refazer e testar, mas você só tem que acreditar que funciona. Não há muito sobre o PT100 em Instructables que eu encontrei, então é por isso que fiz este ible.

Na próxima etapa, falarei sobre o tempo de resposta do PT100 e se você não estiver interessado em matemática, quando estiver medindo uma mudança de temperatura, deixe o PT100 descansar por um minuto ou mais antes de fazer a leitura.

Se você estiver interessado em ver outros projetos que fiz, visite meu

Blog: Roboroblog

Canal do YouTube: Roboro

Ou veja meus outros Instructables: aqui

Se o HTML interferir com o código abaixo, o código é anexado

* Este código calcula a temperatura usando um PT100

* Escrito por Roboro * Github: <a href = "https://github.com/RonanB96/Read-Temp-From-PT100-… <a href =" https://github.com/RonanB96/Read-Temp- From-PT100-… <a href = "https://github.com/RonanB96/Read-Temp-From-PT100-… >>>>>>>>> * Circuit: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * Blog: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * Instrustable Post: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * */ //You'll need to download this timer library from here //https://www.doctormonk.com/search?q=timer #include "Timer.h" // Define Variables float V; float temp; float Rx; // Variables to convert voltage to resistance float C = 79.489; float slope = 14.187; // Variables to convert resistance to temp float R0 = 100.0; float alpha = 0.00385; int Vin = A0; // Vin is Analog Pin A0 Timer t; // Define Timer object

void setup() {

Serial.begin(9600); // Set Baudrate at 9600 pinMode(Vin, INPUT); // Make Vin Input t.every(100, takeReading); // Take Reading Every 100ms } void loop() { t.update(); // Update Timer } void takeReading(){ // Bits to Voltage V = (analogRead(Vin)/1023.0)*5.0; // (bits/2^n-1)*Vmax // Voltage to resistance Rx = V*slope+C; //y=mx+c // Resistance to Temperature temp= (Rx/R0-1.0)/alpha; // from Rx = R0(1+alpha*X) // Uncommect to convet celsius to fehrenheit // temp = temp*1.8+32; Serial.println(temp); }

Step 6: Time Response of PT100

Resposta de tempo de PT100
Resposta de tempo de PT100

Mencionei que o PT100 tem uma resposta lenta, mas podemos obter uma fórmula para a temperatura atual lida pelo PT100 a qualquer momento t. A resposta do PT100 é uma resposta de primeira ordem que pode ser escrita em termos de Laplace, ou seja, função de transferência, como:

Imagem
Imagem

onde tau (τ) é a constante de tempo, K é o ganho do sistema e s é o operador de Laplace que pode ser escrito como jω onde ω é a frequência.

A constante de tempo informa quanto tempo leva para um sistema de primeira ordem se estabelecer com seu novo valor e uma regra ou indicador é que 5 * tau é quanto tempo levará para se estabelecer no novo estado estacionário. O ganho K informa quanto a entrada será amplificada. Com o PT100, o ganho é quanto a resistência muda dividido pela mudança de temperatura, escolhendo dois valores aleatórios desta folha de dados, obtive um ganho de 0,3856 ohm / C.

Antes eu disse que você poderia registrar a tensão a cada 2s após colocar a sonda no líquido, quente ou frio, a partir disso podemos calcular a constante de tempo do sistema. Primeiro você precisa identificar onde está o ponto inicial e o ponto final, o ponto inicial sendo a tensão antes de você colocar a ponta de prova no líquido e o ponto final sendo quando ela estabilizou. Em seguida, subtraia-os e essa é a mudança de voltagem do degrau, o teste que você conduziu foi uma mudança de degrau, que é uma mudança repentina na entrada de um sistema, sendo o degrau a temperatura. Agora, em seu gráfico, vá para 63,2% da mudança de tensão e este tempo é a constante de tempo.

Imagem
Imagem

Se você inserir esse valor na função de transferência, terá a fórmula para descrever a resposta de frequência dos sistemas, mas não é isso que queremos agora, queremos a temperatura real no tempo t para um nível de temperatura, então vamos ter que realizar uma transformação de Laplace inversa de uma etapa no sistema. A função de transferência de um sistema de primeira ordem com a entrada de uma etapa é a seguinte:

Imagem
Imagem

Onde Ks é o tamanho do passo, ou seja, a diferença de temperatura. Então, digamos que a sonda seja fixada a 20 graus C, colocada na água a 30 graus C e a sonda tenha uma constante de tempo de 8s, a função de transferência e a fórmula no domínio do tempo são as seguintes:

Imagem
Imagem

O δ (t) significa apenas um impulso, ou seja, deslocamento DC de 20 graus C, neste caso, você pode simplesmente escrever 20 em suas equações ao calcular isso. Esta é a equação padrão para a etapa em um sistema de primeira ordem:

Imagem
Imagem

O acima calcula a temperatura no tempo t, mas isso funcionará para a tensão, pois eles são proporcionais entre si, você só precisa do valor inicial e final, constante de tempo e tamanho do passo. Um site chamado Symbolab é ótimo para verificar se sua matemática está certa, ele pode fazer Laplace, integração, diferenciação e muitas outras coisas e dá a você todos os passos ao longo do caminho. A transformada de Laplace inversa acima pode ser encontrada aqui.

Recomendado: