Table des matières:
- Étape 1: Composants
- Étape 2: Pont de Wheatstone
- Étape 3: Amplification
- Étape 4: Alimentation du circuit
- Étape 5: Circuit complet et code
- Step 6: Time Response of PT100
Vidéo: Mesure de la température à partir du PT100 à l'aide d'Arduino : 6 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-31 10:19
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
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:
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.
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:
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)
et à 130 degrés (150ohms):
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:
La tension de sortie du PT100 étant de 80 ohms et utilisant les autres valeurs de l'image:
et pour Pt100 étant 150ohms:
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
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:
Ra est R5 & R7 et Rb est R6 & R8, la tension de sortie est donnée par:
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:
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.
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:
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
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
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:
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:
C devrait être proche de votre vrai Roff, à partir de ma simulation j'ai calculé ces valeurs:
A partir de cette résistance, nous pouvons trouver notre température en utilisant la formule que nous avions au départ:
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
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:
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.
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:
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:
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:
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é:
Mesure de la température à l'aide de STS21 et Arduino Nano : 4 étapes
Mesure de la température à l'aide de STS21 et Arduino Nano : le capteur de température numérique STS21 offre des performances supérieures et un encombrement réduit. Il fournit des signaux calibrés et linéarisés au format numérique I2C. La fabrication de ce capteur est basée sur la technologie CMOSens, qui attribue à la qualité supérieure
Mesure de la température à l'aide de l'ADT75 et de l'Arduino Nano : 4 étapes
Mesure de la température à l'aide de l'ADT75 et de l'Arduino Nano : l'ADT75 est un capteur de température numérique très précis. Il comprend un capteur de température à bande interdite et un convertisseur analogique-numérique 12 bits pour surveiller et numériser la température. Son capteur très sensible le rend assez compétent pour moi
Mesure de l'humidité et de la température à l'aide de HIH6130 et Arduino Nano : 4 étapes
Mesure d'humidité et de température à l'aide de HIH6130 et Arduino Nano : HIH6130 est un capteur d'humidité et de température avec sortie numérique. Ces capteurs offrent un niveau de précision de ±4% HR. Avec une stabilité à long terme de pointe, une véritable I2C numérique à compensation de température, une fiabilité de pointe, une efficacité énergétique
Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : 4 étapes
Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : HTS221 est un capteur numérique capacitif ultra compact pour l'humidité relative et la température. Il comprend un élément de détection et un circuit intégré spécifique à l'application de signal mixte (ASIC) pour fournir les informations de mesure via série numérique
Mesure de la température à l'aide du LM75BIMM et de l'Arduino Nano : 4 étapes
Mesure de la température à l'aide de LM75BIMM et d'Arduino Nano : LM75BIMM est un capteur de température numérique incorporé avec un chien de garde thermique et possède une interface à deux fils qui prend en charge son fonctionnement jusqu'à 400 kHz. Il a une sortie de surchauffe avec limite et hystérésis programmables. Dans ce tutoriel, l'interface