Table des matières:

Mesure de la température à partir du PT100 à l'aide d'Arduino : 6 étapes (avec photos)
Mesure de la température à partir du PT100 à l'aide d'Arduino : 6 étapes (avec photos)

Vidéo: Mesure de la température à partir du PT100 à l'aide d'Arduino : 6 étapes (avec photos)

Vidéo: Mesure de la température à partir du PT100 à l'aide d'Arduino : 6 étapes (avec photos)
Vidéo: Électrotechnique - Sonde de température RTD (PT-100) 2024, Novembre
Anonim
Mesurer la température à partir du PT100 à l'aide d'Arduino
Mesurer la température à partir du PT100 à l'aide d'Arduino

Le PT100 est un détecteur de température à résistance (RTD) qui change sa résistance en fonction de sa température ambiante, il est largement utilisé pour les processus industriels avec une dynamique lente et des plages de température relativement larges. Il est utilisé pour les processus dynamiques lents car les RTD ont des temps de réponse lents (dont je parlerai plus tard) mais sont précis et ont une faible dérive dans le temps. Ce que je vais vous montrer dans ce Instructable ne serait pas conforme aux normes industrielles, mais cela vous exposera à une autre façon de mesurer la température que d'utiliser le LM35 avec lequel de nombreux amateurs seraient familiers et la théorie des circuits montrée peut être appliqué à d'autres capteurs.

Étape 1: Composants

1x PT100 (deux fils)

1x Arduino (tout modèle)

3x 741 amplificateurs de fonctionnement (LM741 ou UA741)

1x résistance 80ohm

2x Résistances 3.9kohms

2x résistances 3,3kohms

2x Résistances 8.2kohms

2x résistances 47kohms

1x potentiomètre 5kohms

1x alimentation à deux bornes ou 8x piles AA 1.5V

J'utilise un PT100 à deux fils, les PT100 à trois et quatre fils auront des circuits différents. Les valeurs de résistance pour la plupart d'entre elles n'ont pas besoin d'être exactement les mêmes que ci-dessus, mais s'il y a une paire de résistances, c'est-à-dire les 3,9 Kohms, si vous les avez échangées pour disons 5k, vous devrez échanger les deux pour 5k comme alors doit être le même. Lorsque nous aurons le circuit, je dirai l'effet du choix de différentes valeurs. Pour les amplificateurs opérationnels (amplis op), vous pouvez utiliser d'autres amplis op mais ce sont ceux que j'ai utilisés.

Étape 2: Pont de Wheatstone

Pont de Wheatstone
Pont de Wheatstone
Pont de Wheatstone
Pont de Wheatstone
Pont de Wheatstone
Pont de Wheatstone

Je dois d'abord parler de la formule pour obtenir la température de la résistance pour le PT100 avant de parler de la première partie du circuit, la formule pour la résistance est la suivante:

Image
Image

où Rx est la résistance PT100, R0 est la résistance PT100 à 0 degré C, est le coefficient de résistance thermique et T est la température.

Image
Image

R0 est de 100 ohms car il s'agit d'un PT100, s'il s'agissait d'un PT1000, R0 serait de 1000 ohms. est de 0,00385 ohms/degrés C tiré de la fiche technique. Il existe également une formule plus précise qui peut être trouvée ici, mais la formule ci-dessus fera l'affaire pour ce projet. Si on transpose la formule on peut calculer la température pour une résistance donnée:

Image
Image

Disons que nous voulons mesurer quelque chose qui aurait une plage de température de -51,85 à 130 degrés C et nous avons placé le PT100 dans le circuit montré dans l'image 1. En utilisant l'équation ci-dessus et l'équation pour la tension d'un diviseur de tension (montré dans la première image) nous pouvons calculer la plage de tension. Bas de gamme T = -51.85 (80ohms)

Image
Image

et à 130 degrés (150ohms):

Image
Image

Cela donnerait une plage de 0,1187 V et un décalage CC de 0,142 car nous savons que notre température ne descendra jamais en dessous de -51,85 degrés C, cela diminuera la sensibilité dans la plage qui nous intéresse (80 à 130 ohms) lorsque nous amplifions cette tension. Pour se débarrasser de ce décalage DC et augmenter notre sensibilité, nous pouvons utiliser un pont de Wheatstone qui est montré dans la deuxième image.

La sortie du deuxième diviseur de tension (Vb-) sera soustraite de la sortie du premier diviseur de tension (Vb+) à l'aide d'un amplificateur différentiel plus tard. La formule pour la sortie du pont est juste deux diviseurs de tension:

Image
Image

La tension de sortie du PT100 étant de 80 ohms et utilisant les autres valeurs de l'image:

Image
Image

et pour Pt100 étant 150ohms:

Image
Image

En utilisant le Wheatstone, nous nous débarrassons du décalage DC et augmentons la sensibilité après amplification. Maintenant que nous savons comment fonctionne le pont de Wheatstone, nous pouvons expliquer pourquoi nous utilisons 80 ohms et 3,3 kohms. Les 80ohms sont en quelque sorte expliqués à partir de la formule ci-dessus, choisissez cette valeur (nous appellerons cela la résistance de décalage Roff) pour être la plage inférieure de votre température ou encore mieux, légèrement en dessous du bas de votre plage, si cela est utilisé pour un système de contrôle pour la régulation de la température ou quelque chose comme ça, vous voudriez savoir à quel point la température descend en dessous de votre plage de température. Donc, si -51,85C est le bas de votre plage, utilisez 74,975 ohms (-65 degrés C) pour votre Roff.

J'ai choisi 3,3k pour R1 et R3 pour deux raisons, pour limiter le courant et augmenter la linéarité de la sortie. Comme le PT100 change de résistance en raison de la température, faire passer trop de courant à travers lui donnera des lectures incorrectes en raison de l'auto-échauffement, j'ai donc choisi un courant maximum de 5 à 10 mA. Lorsque le PT100 est de 80 ohms, le courant est de 1,775 mA, donc en dessous de la plage maximale. Vous diminuez la résistance pour augmenter la sensibilité, mais cela pourrait avoir un effet négatif sur la linéarité, car nous utiliserons l'équation d'une ligne plus tard (y=mx+c) avoir une sortie non linéaire introduira des erreurs. La troisième image a un graphique de la sortie du pont utilisant différentes résistances supérieures, la ligne continue est la sortie réelle et la ligne pointillée est l'approximation linéaire. Vous pouvez voir dans le graphique bleu foncé (R1 & R3 = 200 ohms) la plus grande plage de tension mais la sortie est la moins linéaire. Le bleu clair (R1 & R3 = 3,3 kohms) donne la plus petite plage de tension, mais la ligne pointillée et la ligne continue se chevauchent, ce qui montre que sa linéarité est très bonne.

N'hésitez pas à modifier ces valeurs en fonction de votre application, même si vous modifiez la tension, assurez-vous que le courant ne devient pas trop élevé.

Étape 3: Amplification

Amplification
Amplification
Amplification
Amplification

Dans la dernière étape, nous avons trouvé que la plage de sortie des deux diviseurs de tension soustraits était de 0 à 0,1187, mais nous n'avons pas expliqué comment soustraire ces tensions. Pour ce faire, nous aurons besoin d'un ampli différentiel qui soustraira une entrée de l'autre et l'amplifiera par le gain de l'ampli. Le circuit pour un ampli différentiel est montré dans la première image. Vous alimentez le Vb+ dans l'entrée inverseuse et le Vb- dans l'entrée non inverseuse et la sortie sera le Vb+ - Vb- avec un gain de un c'est-à-dire pas d'amplification mais en ajoutant les résistances montrées sur la photo nous ajoutons un gain de 5.731. Le gain est donné par:

Image
Image

Ra est R5 & R7 et Rb est R6 & R8, la tension de sortie est donnée par:

Image
Image

Il y a deux problèmes avec la simple connexion de cet ampli à la sortie du pont, l'effet de chargement et la modification du gain. Changer le gain de l'ampli vous oblige à changer au moins deux résistances car les deux paires de résistances doivent être identiques, donc avoir deux pots qui doivent avoir la même valeur serait ennuyeux donc nous utiliserons quelque chose appelé un ampli d'instrumentation dont je parle ci-dessous. L'effet de charge est que les résistances d'entrée dans l'ampli affectent la chute de tension aux bornes du PT100, nous voulons que la tension aux bornes du PT100 reste inchangée et pour ce faire, nous pouvons choisir de très grandes résistances pour les résistances d'entrée afin que la résistance parallèle du PT100 et la résistance d'entrée est très proche de la résistance PT100 mais cela peut causer des problèmes de bruit et de décalage de sortie de tension que je ne vais pas aborder. Choisissez simplement le milieu de gamme dans la gamme Kohms, mais comme je le disais, avoir de petites résistances est également mauvais, nous allons donc changer un peu le circuit.

Dans la deuxième image, nous avons la sortie du pont connectée à un ampli d'instrumentation qui agit comme un ampli tampon pour séparer les deux moitiés des circuits (le pont et l'amplification) permet également d'amplifier l'entrée en changeant un seul potentiomètre (Rgain). Le gain de l'ampli d'instrumentation est donné par:

Image
Image

où Rc est les deux résistances de 3,9k au-dessus et au-dessous du pot.

En diminuant Rgain, l'amplification augmente. Ensuite, aux points Va et Vb (amplifiés Vb+ et Vb-), c'est juste un ampli différentiel comme avant et le gain total du circuit n'est que les gains multipliés ensemble.

Image
Image

Pour choisir votre gain, vous voulez faire quelque chose comme nous l'avons fait auparavant avec le Roff, nous devons choisir une résistance juste au-dessus de votre température maximale dans votre plage au cas où elle dépasserait. Parce que nous utilisons l'Arduino qui a un courant alternatif de 5 V, la sortie maximale du circuit doit être de 5 V à la température maximale que vous avez choisie. Choisissons les 150 ohms comme résistance maximale et la tension du pont non amplifiée était de 0,1187 V, le gain dont nous avons besoin est de 42,185 (5/0.1187)

Disons que nous gardons Ra, Rb et Rc à 8,2k, 47k et 3,9k, il suffit de trouver la valeur du pot Rgain:

Image
Image

Donc, pour obtenir les 5 volts complets de la plage de température que nous utilisons, changez la valeur de Rgain à 1,226k. La tension de sortie sortant de l'ampli différentiel est donnée par:

Étape 4: Alimentation du circuit

Alimentation du circuit
Alimentation du circuit
Alimentation du circuit
Alimentation du circuit
Alimentation du circuit
Alimentation du circuit

C'est la dernière étape du circuit, vous avez peut-être remarqué le Vcc+ et le Vcc- sur les circuits de l'ampli op, c'est parce qu'ils ont besoin à la fois d'une tension positive et négative pour fonctionner correctement, vous pouvez obtenir des amplis op à un seul rail mais j'ai décidé d'utiliser ces amplis car c'est ce que j'avais qui trainait. Nous fournirons donc +6V et -6V, il y a trois façons de le faire. Le premier est montré dans la première image où nous avons deux alimentations ou deux bornes de sortie à partir d'une seule alimentation, les deux à 6V et une sortie positive connectée au négatif de l'autre. Le 6V de l'alimentation supérieure sera notre +6V, le positif de l'alimentation inférieure est le GND et le négatif de l'alimentation inférieure est le -6V. CONNECTEZ-LE COMME CECI UNIQUEMENT SI LES GND DES DEUX ALIMENTATIONS SONT SEPARES OU CELA ENDOMMAGERA VOTRE ALIMENTATION ELECTRIQUE. Toutes les alimentations commerciales auraient des GND séparés mais si vous voulez vérifier, utilisez le testeur de continuité sur votre multimètre, s'il vibre, n'utilisez pas cette configuration et utilisez la suivante. Sur mon approvisionnement fait maison, j'ai fait sauter le fusible en faisant cela.

Dans la deuxième image est la deuxième configuration que nous pouvons avoir, elle nécessite qu'une alimentation ait le double de la tension de l'autre mais n'endommagera pas l'alimentation si les GND sont connectés. Nous avons deux alimentations, une à 12V et une autre à 6V. Le 12V agira comme notre +6V, le 6V de la deuxième alimentation agira comme GND et les deux GND réels des alimentations agiront comme -6V.

Cette dernière configuration est destinée aux alimentations à une seule sortie, elle utilise un amplificateur tampon de gain 1 pour créer une masse virtuelle en faisant passer la moitié de la tension d'alimentation à travers l'amplificateur tampon. Ensuite, le 12V agira comme le +6V et la borne GND réelle sera -6V.

Si vous souhaitez utiliser des batteries, je suggérerais la première configuration, mais un problème avec les batteries est que la tension chute lorsqu'elles commencent à mourir et que la tension du pont chute également, ce qui donne des lectures de température erronées. Vous pouvez bien sûr lire la tension des batteries et les inclure dans les calculs ou utiliser des régulateurs et plus de batteries. En fin de compte, c'est à vous.

Étape 5: Circuit complet et code

Circuit complet et code
Circuit complet et code
Circuit complet et code
Circuit complet et code
Circuit complet et code
Circuit complet et code

Le circuit complet est montré ci-dessus et il a été réalisé dans le nouveau Circuits.io d'Autodesk qui vous permet de créer des circuits sur une maquette, d'éditer un schéma de circuit (illustré sur l'image 2) et des diagrammes de PCB et la meilleure partie, vous permet de simuler le circuit à partir de la planche à pain et peut même programmer un Arduino et le connecter en mode maquette, plus bas dans la page se trouve la simulation et vous pouvez jouer avec deux pots. Si vous souhaitez dupliquer le circuit et entrer vos propres valeurs, vous pouvez trouver le circuit ici. Le premier potentiomètre est de 70ohms et en série avec une résistance de 80ohms qui simule le PT100 avec une plage de 80-150ohms, le deuxième potard est le gain de l'ampli instrumentation. Malheureusement, j'ai utilisé une bibliothèque que j'ai téléchargée pour mon code, donc l'Arduino n'est pas inclus dans le circuit ci-dessous, mais il n'y a que deux fils supplémentaires à connecter. Si vous êtes plus à l'aise avec LTspice, j'ai inclus un fichier asc avec le circuit.

Connectez la broche A0 à la sortie de l'ampli différentiel

Connectez le GND de l'Arduino au GND du circuit (PAS LE -6V)

Et c'est le circuit fait, maintenant sur le code. Plus tôt, j'ai mentionné que nous utiliserions la formule y=mx+c, eh bien maintenant nous allons calculer m(la pente) et c(le décalage). Dans l'Arduino, nous lirons la tension, mais l'équation de température a besoin que nous connaissions la résistance du PT100. Nous pouvons donc le faire en remplaçant Serial.println (temp) par Serial.println (V) et enregistrer le tension et résistance à deux températures. Lorsque vous effectuez ce test, laissez le PT100 seul pendant une minute ou deux, et éloignez-vous de toute source de chaleur (lumière du soleil, ventilateur d'ordinateur portable, corps, etc.).

Le premier point que nous pouvons prendre est la température ambiante, lorsque le circuit est connecté et fonctionne, enregistrez la tension (Vt1) lue par l'Arduino sur le moniteur série et déconnectez rapidement le PT100 et enregistrez sa résistance (Rt1), ne mettez pas votre mains sur la sonde lors de la déconnexion car cela modifiera la résistance. Pour la deuxième température, nous pourrions placer la sonde dans de l'eau glacée ou de l'eau chaude (attention si vous utilisez de l'eau chaude) et répéter ce que nous avons fait avant de trouver Vt2 et Rt2. Juste après avoir placé la sonde dans le liquide, attendez une minute ou deux pour que la résistance se stabilise. Si vous êtes intéressé par la réponse temporelle du PT100, enregistrez la tension du moniteur série toutes les 2 secondes environ et nous pourrons en tirer un graphique et je l'expliquerai plus tard. En utilisant les deux tensions et résistances, nous pouvons calculer la pente comme suit:

Image
Image

Rt1 et Rt2 sont les résistances aux deux températures et il en est de même pour les tensions Vt1 et Vt2. À partir de la pente et de l'un des deux ensembles de points que vous avez enregistrés, nous pouvons calculer le décalage:

Image
Image

C devrait être proche de votre vrai Roff, à partir de ma simulation j'ai calculé ces valeurs:

Image
Image

A partir de cette résistance, nous pouvons trouver notre température en utilisant la formule que nous avions au départ:

Image
Image

Et c'est tout, le code de l'Arduino est ci-dessous, si vous avez des problèmes, laissez simplement un commentaire et j'essaierai de vous aider.

Il n'y a pas de photos du circuit que j'ai fait comme je l'ai fait il y a quelques temps et je n'ai plus le PT100 à refaire et tester mais il faudra juste me croire que ça marche. Il n'y a pas grand-chose sur le PT100 sur Instructables que j'ai trouvé, c'est pourquoi j'ai fait cet ible.

Dans l'étape suivante, je parlerai de la réponse temporelle du PT100 et si vous n'êtes pas intéressé par les mathématiques, lorsque vous mesurez un changement de température, laissez le PT100 se stabiliser pendant environ une minute avant de prendre la lecture.

Si vous êtes intéressé de voir d'autres projets que j'ai réalisés, visitez mon

Blog: Roboroblog

Chaîne YouTube: Roboro

Ou regardez mes autres Instructables: ici

Si le code HTML perturbe le code ci-dessous, le code est joint

* Ce code calcule la température à l'aide d'un PT100

* Écrit par 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

Temps de réponse du PT100
Temps de réponse du PT100

J'ai donc mentionné que le PT100 a une réponse lente mais nous pouvons obtenir une formule pour la température actuelle lue par le PT100 à tout moment t. La réponse du PT100 est une réponse du premier ordre qui peut être écrite en termes de Laplace, c'est-à-dire une fonction de transfert, comme:

Image
Image

où tau(τ) est la constante de temps, K est le gain du système et s est l'opérateur de Laplace qui peut s'écrire jω où ω est la fréquence.

La constante de temps vous indique combien de temps il faut à un système de premier ordre pour s'installer à sa nouvelle valeur et une règle ou un pouce est que 5*tau est le temps qu'il faudra pour s'installer au nouvel état stable. Le gain K vous indique à quel point l'entrée sera amplifiée. Avec le PT100, le gain correspond à la variation de résistance divisée par la variation de température. En choisissant deux valeurs aléatoires dans cette fiche technique, j'ai obtenu un gain de 0,3856 ohm/C.

Avant, je disais que vous pouviez enregistrer la tension toutes les 2 s après avoir mis la sonde dans le liquide, chaud ou froid, à partir de là, nous pouvons calculer la constante de temps du système. Vous devez d'abord identifier où se trouvent le point de départ et le point d'arrivée, le point de départ étant la tension avant de mettre la sonde dans le liquide et le point final étant le moment où elle s'est installée. Ensuite, soustrayez-les et c'est le changement de tension de l'étape, le test que vous avez effectué était un changement d'étape qui est un changement soudain d'entrée dans un système, l'étape étant la température. Maintenant, sur votre graphique, allez à 63,2% du changement de tension et cette fois est la constante de temps.

Image
Image

Si vous branchez cette valeur dans la fonction de transfert, vous avez alors la formule pour décrire la réponse en fréquence des systèmes mais ce n'est pas ce que nous voulons en ce moment, nous voulons la température réelle à l'instant t pour un pas de température donc nous allons devoir effectuer une transformée de Laplace inverse d'une étape dans le système. La fonction de transfert d'un système du premier ordre avec une entrée d'une étape est la suivante:

Image
Image

Où Ks est la taille du pas, c'est-à-dire la différence de température. Disons donc que la sonde est installée à 20 degrés C, placée dans de l'eau à 30 degrés C et que la sonde a une constante de temps de 8 s, la fonction de transfert et la formule du domaine temporel sont les suivantes:

Image
Image

Le (t) signifie simplement une impulsion, c'est-à-dire un décalage CC de 20 degrés C dans ce cas, vous pouvez simplement écrire 20 dans vos équations lors du calcul. C'est l'équation standard pour l'étape dans un système du premier ordre:

Image
Image

Ce qui précède calcule la température à l'instant t mais cela fonctionnera pour la tension car elles sont proportionnelles les unes aux autres, vous avez juste besoin de la valeur de début et de fin, de la constante de temps et de la taille du pas. Un site Web appelé Symbolab est idéal pour vérifier si vos calculs sont bons, il peut faire Laplace, l'intégration, la différenciation et bien d'autres choses et il vous donne toutes les étapes à suivre. La transformée de Laplace inverse ci-dessus peut être trouvée ici.

Conseillé: