Kazalo:

Merjenje temperature iz PT100 z uporabo Arduina: 6 korakov (s slikami)
Merjenje temperature iz PT100 z uporabo Arduina: 6 korakov (s slikami)

Video: Merjenje temperature iz PT100 z uporabo Arduina: 6 korakov (s slikami)

Video: Merjenje temperature iz PT100 z uporabo Arduina: 6 korakov (s slikami)
Video: Как связать промышленные датчики 4–20 мА с ПЛК Raspberry Pi Pico | ПЛК Мицубиси FX1N 2024, November
Anonim
Merjenje temperature iz PT100 z uporabo Arduina
Merjenje temperature iz PT100 z uporabo Arduina

PT100 je odporni detektor temperature (RTD), ki spreminja svojo upornost glede na temperaturo okolice, široko se uporablja za industrijske procese s počasno dinamiko in relativno širokimi temperaturnimi območji. Uporablja se za počasne dinamične procese, ker imajo RTR počasne odzivne čase (o katerih bom govoril kasneje), vendar so natančni in imajo sčasoma majhen odmik. Kar vam bom pokazal v tem navodilu, ne bi ustrezalo industrijskim standardom, vendar vas bo izpostavilo drugemu načinu merjenja temperature kot uporabi LM35, ki bi ga poznalo veliko ljubiteljev, in prikazani teoriji vezja se lahko uporablja za druge senzorje.

1. korak: Komponente

1x PT100 (dvožični)

1x Arduino (kateri koli model)

3x 741 operacijski ojačevalniki (LM741 ali UA741)

1x 80 ohmski upor

2x 3,9 kohmski upori

2x 3,3 komskih uporov

2x 8,2 komskih uporov

2x 47kohmski upori

1x 5 -ohmski potenciometer

1x dva priključna napajalnika ali 8x 1,5 V AA baterije

Uporabljam dvožični PT100, tri in štiri žični PT100 bodo imeli različna vezja. Vrednosti uporov za večino teh ne smejo biti popolnoma enake kot zgoraj, če pa obstaja par uporov, tj. 3,9Kohms, če bi jih zamenjali za recimo 5k, bi morali zamenjati oba za 5k morajo biti enaki. Ko dobimo vezje, bom povedal učinek izbire različnih vrednosti. Za operacijske ojačevalnike (op ojačevalnike) lahko uporabite druge ojačevalnike, vendar sem te uporabil jaz.

2. korak: Wheatstoneov most

Wheatstonov most
Wheatstonov most
Wheatstonov most
Wheatstonov most
Wheatstonov most
Wheatstonov most

Najprej moram govoriti o formuli za pridobivanje temperature iz upora za PT100, preden govorim o prvem delu vezja, formula za upor je naslednja:

Slika
Slika

kjer je Rx upor PT100, R0 upor PT100 pri 0 stopinjah C, α je koeficient temperaturne upornosti in T je temperatura.

Slika
Slika

R0 je 100 ohmov, saj je to PT100, če bi bil PT1000, bi bil R0 1000 ohmov. α je 0,00385 ohmov/stopinj C, vzetih iz podatkovnega lista. Obstaja tudi natančnejša formula, ki jo lahko najdete tukaj, vendar zgornja formula ustreza temu projektu. Če prenesemo formulo, lahko izračunamo temperaturo za dani upor:

Slika
Slika

Recimo, da želimo izmeriti nekaj, kar bi imelo temperaturno območje od -51,85 do 130 stopinj C, PT100 pa smo postavili v vezje, prikazano na sliki 1. Z uporabo zgornje enačbe in enačbe za napetost iz delilnika napetosti (prikazano na prvi sliki) lahko izračunamo napetostno območje. Spodnji del območja T = -51,85 (80 ohmov)

Slika
Slika

in pri 130 stopinjah (150 ohmov):

Slika
Slika

To bi dalo razpon 0,1177 V in DC odmik 0,142, ker vemo, da naša temperatura nikoli ne bo padla pod -51,85 stopinj C, to bo zmanjšalo občutljivost v območju, ki nas zanima (80 do 130 ohmov), ko povečamo to napetost. Če se želite znebiti tega DC odmika in povečati svojo občutljivost, lahko uporabimo Wheatstoneov most, ki je prikazan na drugi sliki.

Izhod drugega delilnika napetosti (Vb-) se kasneje z diferencialnim ojačevalnikom odšteje od izhoda prvega delilnika napetosti (Vb+). Formula za izhod mostu sta samo dva delilnika napetosti:

Slika
Slika

Izhodna napetost za PT100 je 80 ohmov in uporablja druge vrednosti na sliki:

Slika
Slika

in za Pt100 150 ohmov:

Slika
Slika

Z uporabo Wheatstona se znebimo enosmernega odmika in povečamo občutljivost po ojačitvi. Zdaj, ko vemo, kako deluje Wheatstonov most, lahko govorimo o tem, zakaj uporabljamo 80 ohmov in 3,3 kohma. 80 ohmov je nekako razloženo iz zgornje formule, izberite to vrednost (temu bomo rekli odmični upor Roff) za spodnje območje vaše temperature ali še bolje, nekoliko pod dnom vašega območja, če se to uporablja za nadzorni sistem za uravnavanje temperature ali kaj podobnega, bi radi vedeli, kako nizka je temperatura pod vašim temperaturnim območjem. Torej, če je -51.85C dno vašega območja, uporabite 74.975 ohmov (-65 stopinj C) za svoj Roff.

Za R1 in R3 sem se odločil za 3.3k iz dveh razlogov, da omejim tok in povečam linearnost izhoda. Ker PT100 zaradi temperature spreminja upor, bo pretok prevelikega toka skozi njega dal napačne odčitke zaradi samogrevanja, zato sem izbral največji tok 5-10mA. Ko je PT100 80 ohmov, je tok 1,775 mA, zato je varno pod največjim območjem. Zmanjšate upor, da povečate občutljivost, vendar bi to lahko negativno vplivalo na linearnost, saj bomo kasneje uporabili enačbo črte (y = mx+c), če bo nelinearni izhod vnesel napake. Na tretji sliki je graf izhoda mostu z različnimi zgornjimi upori, polna črta je dejanski izhod, črtkana črta pa linearni približek. Na temno modrem grafu (R1 & R3 = 200ohms) je prikazano največje napetostno območje, vendar je izhod najmanj linearen. Svetlo modra (R1 in R3 = 3,3 kohms) daje najmanjši razpon napetosti, vendar se črtkana črta in polna črta prekrivata, kar kaže, da je njena linearnost zelo dobra.

Te vrednosti lahko spremenite tako, da ustrezajo vaši aplikaciji, tudi če spremenite napetost, poskrbite, da tok ne bo previsok.

3. korak: Ojačanje

Ojačanje
Ojačanje
Ojačanje
Ojačanje

V zadnjem koraku smo ugotovili, da je izhodno območje dveh odštetih napetostnih delilnikov 0 do 0,1177, vendar se nismo pogovarjali o tem, kako odšteti te napetosti. Za to bomo potrebovali diferencialni ojačevalnik, ki bo odšteval en vhod od drugega in to povečal z ojačitvijo ojačevalnika. Vezje za diferencialni ojačevalnik je prikazano na prvi sliki. Vb+ napajate v invertirajoči vhod in Vb- v neinvertirajoči vhod in izhod bo Vb+- Vb- z ojačitvijo enega, torej brez ojačanja, vendar z dodajanjem uporov, prikazanih na sliki, dodamo dobiček 5,731. Dobiček dobimo z:

Slika
Slika

Ra je R5 & R7 in Rb je R6 & R8, izhodna napetost je podana z:

Slika
Slika

Obstajata dve težavi pri samo priključitvi tega ojačevalnika na izhod mostu, učinek obremenitve in spreminjanje dobička. Če spremenite ojačanje ojačevalnika, morate spremeniti vsaj dva upora, saj morata biti dva para uporov enaka, zato bi imeli dve lončki, ki bi morali imeti enako vrednost, neprijetno, zato bomo uporabili nekaj, kar se imenuje instrumentacijski ojačevalnik o katerem govorim spodaj. Učinek obremenitve so vhodni upori v ojačevalnik, ki vplivajo na padec napetosti na PT100, želimo, da napetost na PT100 ostane nespremenjena, zato lahko za vhodne upore izberemo zelo velike upore, tako da je vzporedni upor PT100 in vhodni upor je zelo blizu odpornosti PT100, vendar lahko to povzroči težave z odmikom hrupa in napetosti, na katere se ne bom spuščal. Izberite samo srednji del v območju Kohms, vendar kot sem rekel, tudi majhni upori so slabi, zato bomo malo spremenili vezje.

Na drugi sliki imamo izhod mostu, povezan z instrumentacijskim ojačevalnikom, ki deluje kot vmesni ojačevalnik, da loči dve polovici tokokrogov (most in ojačevalnik), prav tako pa omogoča uporabo za ojačanje vhoda s spremembo samo enega potenciometra (Rgain). Dobiček instrumentacijskega ojačevalnika dobimo z:

Slika
Slika

kjer je Rc dva upora 3.9k nad in pod loncem.

Z zmanjšanjem Rgain se ojačanje poveča. Potem je v točki Va in Vb (ojačana Vb+ in Vb-) samo diferencialni ojačevalnik kot prej in skupni dobiček vezja je le dobiček, pomnožen skupaj.

Slika
Slika

Če želite izbrati svoj dobiček, ki ga želite narediti tako, kot smo to storili prej pri Roffu, bi morali izbrati upor tik nad vašo maksimalno temperaturo v vašem območju, samo če gre čez. Ker uporabljamo Arduino, ki ima 5V adc, mora biti največja izhodna vezja 5V pri najvišji temperaturi, ki ste jo izbrali. Izberemo 150 ohmov kot največji upor in napetost mosta, ki ni bila ojačana, je bila 0.1187V, potreben dobiček je 42.185 (5/0.1187)

Recimo, da ohranimo Ra, Rb in Rc kot 8,2k, 47k in 3,9k, le najti moramo vrednost za pot Rgain:

Slika
Slika

Torej, da bi dobili 5 voltov iz temperaturnega območja, ki ga uporabljamo, spremenite vrednost Rgain na 1,262 k. Izhodna napetost, ki prihaja iz diferencialnega ojačevalnika, je podana z:

4. korak: Napajanje vezja

Napajanje vezja
Napajanje vezja
Napajanje vezja
Napajanje vezja
Napajanje vezja
Napajanje vezja

To je zadnji korak vezja, morda ste opazili Vcc+ in Vcc- na tokokrogih operacijskega ojačevalnika, ker za pravilno delovanje potrebujejo tako pozitivno kot negativno napetost, lahko dobite enosmerne op-ojačevalnike, vendar sem se odločil uporabiti ta ojačevalnik, saj je to tisto, kar sem imel naokoli. Tako bomo dobavili +6V in -6V, to lahko naredimo na tri načine. Prva je prikazana na prvi sliki, kjer moramo imeti dva napajalnika ali dva izhodna priključka iz enega napajalnika, oba na 6V in imata en pozitivni izhod, povezan z minusom drugega. 6V zgornjega napajanja bo naš +6V, pozitivni del spodnjega napajanja je GND, negativni spodnjega napajanja pa -6V. SAMO TO POVEŽITE TAKO, ČE SO GNDI DVIH OSKRBNIH ZDRAVILOV LOČENI ALI BO TO POŠKODILO VAŠE NAPAJANJE. Vsi komercialni napajalniki bi imeli ločene GND, če pa želite preveriti, uporabite merilnik neprekinjenosti na vašem multimetru, če zazvoni, ne uporabljajte te nastavitve in uporabite naslednjo. Pri domačem zalogi sem pri tem pregorel varovalko.

Na drugi sliki je druga nastavitev, ki jo lahko imamo, vendar zahteva, da ima eno napajanje dvojno napetost drugega, vendar ne bo poškodovalo napajanja, če so priključeni GND. Imamo dve zalogi, eno pri 12V in drugo pri 6V. 12V bo deloval kot naš +6V, 6V iz drugega napajanja bo deloval kot GND, dva dejanska GND iz zalog pa kot -6V.

Ta zadnja nastavitev je za napajalnike z enim samim izhodom, uporablja vmesni ojačevalnik ojačanja 1 za ustvarjanje navideznega ozemljitve s prenosom polovice napajalne napetosti skozi odbojnik. Nato bo 12V deloval kot +6V, dejanski terminal GND pa bo -6V.

Če želite uporabiti baterije, predlagam prvo nastavitev, vendar je težava pri baterijah v tem, da bo napetost padla, ko začnejo umreti, in tudi napetost iz mostu, kar bo povzročilo napačne odčitke temperature. Seveda lahko preberete napetost iz baterij in jih vključite v izračune ali uporabite regulatorje in več baterij. Na koncu je odvisno od vas.

5. korak: Celotno vezje in koda

Celotno vezje in koda
Celotno vezje in koda
Celotno vezje in koda
Celotno vezje in koda
Celotno vezje in koda
Celotno vezje in koda

Celotno vezje je prikazano zgoraj in je bilo narejeno v novem Autodeskovem Circuits.io, ki vam omogoča, da ustvarite vezja na plošči, uredite diagram vezja (prikazano na sliki 2) in diagrame tiskanega vezja, najboljši del pa vam omogoča, da simulirate vezje iz plošče in lahko celo programirate Arduino in ga povežete v načinu mize, spodaj na strani je simulacija in se lahko igrate z dvema lončkoma. Če želite podvojiti vezje in vnesti svoje vrednosti, ga lahko najdete tukaj. Prvi lonec je 70 ohmov in serijsko z uporom 80 ohmov, ki simulira PT100 z razponom 80-150 ohmov, drugi lonec je dobiček instrumentacijskega ojačevalnika. Na žalost sem za svojo kodo uporabil knjižnico, ki sem jo prenesel, zato Arduino ni vključen v spodnje vezje, vendar sta za povezavo potrebni samo dve dodatni žici. Če vam je LTspice bolj všeč, sem v vezje vključil datoteko asc.

Priključite pin A0 na izhod diferencialnega ojačevalnika

Priključite GND Arduina na GND vezja (NE -6V)

In to je vezje, zdaj na kodo. Prej sem omenil, da bomo uporabili formulo y = mx+c, zdaj pa bomo izračunali m (naklon) in c (odmik). V Arduinu bomo brali napetost, vendar mora temperaturna enačba poznati upor PT100, zato lahko to storimo tako, da zamenjamo Serial.println (temp) s Serial.println (V) in zapišemo napetosti in upora pri dveh temperaturah. Pri tem preskusu pustite PT100 pri miru nekaj minut ali dveh in se izogibajte virom toplote (sončni svetlobi, ventilatorju prenosnega računalnika, telesu itd.).

Prva točka, ki jo lahko sprejmemo, je sobna temperatura. Ko imate priklopljeno in delujoče vezje, zabeležite napetost (Vt1), ki jo je prebral Arduino, na serijski monitor in hitro odklopite PT100 ter zabeležite njeno upornost (Rt1). pri odklopu držite sondo, saj se s tem spremeni upor. Za drugo temperaturo lahko sondo postavimo v ledeno ali vročo vodo (bodimo previdni, če uporabljamo vročo vodo) in ponovimo, kar smo naredili, preden smo našli Vt2 in Rt2. Takoj po tem, ko sondo postavite v tekočino, počakajte minuto ali dve, da se upor umiri. Če vas zanima časovni odziv PT100, vsake 2 sekundi zabeležite napetost serijskega monitorja in iz tega lahko narišemo graf, ki ga bom razložil kasneje. Z uporabo dveh napetosti in uporov lahko naklon izračunamo na naslednji način:

Slika
Slika

Rt1 in Rt2 sta upora pri dveh temperaturah in enako velja za napetosti Vt1 in Vt2. Iz naklona in enega od dveh nizov točk, ki ste jih zabeležili, lahko izračunamo odmik:

Slika
Slika

C bi moral biti blizu vašemu pravemu Roffu. Iz moje simulacije sem izračunal te vrednosti:

Slika
Slika

Iz tega upora lahko ugotovimo svojo temperaturo po formuli, ki smo jo imeli na začetku:

Slika
Slika

In to je to, koda za Arduino je spodaj, če imate težave, pustite komentar in poskusil vam bom pomagati.

Ni fotografij vezja, ki sem ga naredil, kot sem ga naredil pred časom in nimam več PT100 za predelavo in testiranje, vendar mi boste morali verjeti, da deluje. PT100 o Instructables, ki sem ga našel, ni veliko, zato sem to naredil.

V naslednjem koraku bom govoril o časovnem odzivu PT100 in če vas matematika ne zanima, ko merite temperaturno spremembo, pustite, da se PT100 ustavi kakšno minuto, preden odčitate.

Če vas zanimajo drugi projekti, ki sem jih naredil, obiščite moj

Blog: Roboroblog

YouTube kanal: Roboro

Ali pa poglejte moje druge Instructables: tukaj

Če se HTML zaplete s spodnjo kodo, je koda priložena

* Ta koda izračuna temperaturo s pomočjo PT100

* Napisal 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

Časovni odziv PT100
Časovni odziv PT100

Zato sem omenil, da ima PT100 počasen odziv, vendar lahko kadar koli dobimo formulo za trenutno temperaturo, ki jo odčita PT100. Odziv PT100 je odziv prvega reda, ki se lahko zapiše z Laplaceovimi izrazi, tj. Prenosno funkcijo, kot:

Slika
Slika

kjer je tau (τ) časovna konstanta, K je dobiček sistema in s je Laplaceov operater, ki ga lahko zapišemo kot jω, kjer je ω frekvenca.

Časovna konstanta vam pove, koliko časa traja sistem prvega reda, da se poravna na svoji novi vrednosti, pravilo ali palec pa je, da 5*tau pomeni, koliko časa bo trajalo, da se poravna v novem stanju dinamičnega ravnovesja. Dobiček K vam pove, koliko bo vhod ojačan. Pri PT100 je dobitek, koliko se upor spremeni, deljen s temperaturno spremembo. Izbira dveh naključnih vrednosti iz tega lista je prinesla dobiček 0,3856 ohma/C.

Preden sem rekel, da lahko zapisujete napetost vsake 2 s, potem ko sondo postavite v tekočino, toplo ali hladno, lahko iz tega izračunamo časovno konstanto sistema. Najprej morate ugotoviti, kje sta začetna in končna točka, začetna točka je napetost, preden sondo postavite v tekočino, končna točka pa, ko se je usedla. Nato jih odštejte in to je sprememba napetosti koraka. Test, ki ste ga izvedli, je bil sprememba koraka, ki je nenadna sprememba vnosa v sistem, korak je temperatura. Zdaj na grafikonu pojdite na 63,2% spremembe napetosti in tokrat je časovna konstanta.

Slika
Slika

Če to vrednost vključite v funkcijo prenosa, imate potem formulo, ki opisuje frekvenčni odziv sistemov, vendar to trenutno ni tisto, kar želimo, dejansko temperaturo v času t za stopnjo temperature, zato gremo izvesti inverzno Laplaceovo transformacijo koraka v sistem. Prenosna funkcija sistema prvega reda z vnosom koraka je naslednja:

Slika
Slika

Ks je velikost koraka, tj. Temperaturna razlika. Recimo, da je sonda poravnana pri 20 stopinjah C, postavljena v vodo pri 30 stopinjah C in ima sonda časovno konstanto 8 s, prenosna funkcija in formula časovne domene sta naslednja:

Slika
Slika

Δ (t) v tem primeru pomeni samo impulz, to je DC odmik 20 stopinj C, pri izračunu lahko v svoje enačbe vnesete le 20. To je standardna enačba za korak v sistem prvega reda:

Slika
Slika

Zgornje izračuna temperaturo v času t, vendar bo to delovalo pri napetosti, saj sta sorazmerni med seboj, potrebujete le začetno in končno vrednost, časovno konstanto in velikost koraka. Spletno mesto, imenovano Symbolab, je odlično za preverjanje, ali je vaša matematika pravilna, lahko naredi Laplace, integracijo, diferenciacijo in veliko drugih stvari ter vam ponuja vse korake na tej poti. Zgornjo inverzno Laplaceovo transformacijo lahko najdete tukaj.

Priporočena: