Sadržaj:

Mjerenje temperature sa PT100 pomoću Arduina: 6 koraka (sa slikama)
Mjerenje temperature sa PT100 pomoću Arduina: 6 koraka (sa slikama)

Video: Mjerenje temperature sa PT100 pomoću Arduina: 6 koraka (sa slikama)

Video: Mjerenje temperature sa PT100 pomoću Arduina: 6 koraka (sa slikama)
Video: Как связать промышленные датчики 4–20 мА с ПЛК Raspberry Pi Pico | ПЛК Мицубиси FX1N 2024, Novembar
Anonim
Mjerenje temperature iz PT100 pomoću Arduina
Mjerenje temperature iz PT100 pomoću Arduina

PT100 je detektor temperature otpora (RTD) koji mijenja svoj otpor ovisno o temperaturi okoline, široko se koristi za industrijske procese sa sporom dinamikom i relativno širokim temperaturnim rasponima. Koristi se za spore dinamičke procese jer RTD -ovi imaju sporo vrijeme odziva (o čemu ću kasnije govoriti više), ali su tačni i imaju mali pomak tokom vremena. Ono što ću vam pokazati u ovom Instructable -u ne bi bilo u skladu sa industrijskim standardima, ali će vas izložiti alternativnom načinu mjerenja temperature od korištenja LM35 s kojim bi mnogi hobisti bili upoznati i prikazana teorija kola može se primijeniti na druge senzore.

Korak 1: Komponente

1x PT100 (dvožilni)

1x Arduino (bilo koji model)

3x 741 operativna pojačala (LM741 ili UA741)

1x 80ohm otpornik

2x 3.9kohms otpornici

2x 3,3 komskih otpornika

2x 8,2 komskih otpornika

2x otpornici od 47 koma

1x 5komski potenciometar

1x dva terminala za napajanje ili 8x AA baterije 1.5V

Koristim dvožilni PT100, trožilni i četverožični PT100 će imati različita kola. Vrijednosti otpornika za većinu ovih ne moraju biti potpuno iste kao gore, ali ako postoji par otpornika, tj. 3,9Kohms, ako ste ih zamijenili za recimo 5k, tada biste morali zamijeniti oba za 5k moraju biti isti. Kad dobijemo krug, reći ću učinak odabira različitih vrijednosti. Za radna pojačala (op pojačala) možete koristiti druga op pojačala, ali ja sam ih koristila.

Korak 2: Wheatstoneov most

Wheatstoneov most
Wheatstoneov most
Wheatstoneov most
Wheatstoneov most
Wheatstoneov most
Wheatstoneov most

Prvo moram govoriti o formuli za dobivanje temperature iz otpora za PT100 prije nego što govorim o prvom dijelu kola, formula otpora je sljedeća:

Image
Image

gdje je Rx otpor PT100, R0 otpor PT100 pri 0 stepeni C, α je koeficijent otpora temperature i T je temperatura.

Image
Image

R0 je 100 ohma jer je ovo PT100, da je PT1000, R0 bi bilo 1000 ohma. α je 0,00385 ohma/stepeni C uzeto iz podatkovne tablice. Postoji i tačnija formula koja se može pronaći ovdje, ali gornja formula će poslužiti za ovaj projekt. Ako transponiramo formulu, možemo izračunati temperaturu za dati otpor:

Image
Image

Recimo da želimo izmjeriti nešto što bi imalo temperaturni raspon od -51,85 do 130 stepeni C i postavili smo PT100 u krug prikazan na slici 1. Koristeći gornju jednadžbu i jednadžbu napona iz razdjelnika napona (prikazano na prvoj slici) možemo izračunati raspon napona. Donji dio raspona T = -51.85 (80ohms)

Image
Image

i na 130 stepeni (150ohms):

Image
Image

To bi dalo raspon od 0,1177 V i DC pomak od 0,142 jer znamo da naša temperatura nikada neće pasti ispod -51,85 stepeni C, to će smanjiti osjetljivost u rasponu do kojeg nam je stalo (80 do 130 ohma) kada pojačamo ovaj napon. Da bismo se riješili ovog DC pomaka i povećali našu osjetljivost, možemo upotrijebiti Wheatstoneov most koji je prikazan na drugoj slici.

Izlaz drugog djelitelja napona (Vb-) kasnije će se oduzeti od izlaza prvog djelitelja napona (Vb+) pomoću diferencijalnog pojačala. Formula za izlaz mosta je samo dva razdjelnika napona:

Image
Image

Izlazni napon za PT100 je 80 ohma i koristi ostale vrijednosti na slici:

Image
Image

a za Pt100 od 150 ohma:

Image
Image

Korištenjem Wheatstonea oslobađamo se DC pomaka i povećavamo osjetljivost nakon pojačanja. Sada kada znamo kako funkcionira Wheatstoneov most možemo govoriti o tome zašto koristimo 80ohms i 3.3kohms. 80ohms je nekako objašnjeno iz gornje formule, odaberite ovu vrijednost (to ćemo nazvati offset otpornik Roff) da bude donji raspon vaše temperature ili još bolje, malo ispod dna vašeg raspona, ako se to koristi za kontrolni sistem za regulaciju temperature ili nešto slično, želite znati koliko se niska temperatura spušta ispod vašeg temperaturnog raspona. Dakle, ako je -51.85C dno vašeg raspona, upotrijebite 74.975 ohma (-65 stepeni C) za svoj Roff.

Odabrao sam 3.3k za R1 i R3 iz dva razloga, kako bih ograničio struju i povećao linearnost izlaza. Kako PT100 mijenja otpor zbog temperature, prolazak previše struje kroz njega dat će netočna očitanja zbog samozagrijavanja, pa sam odabrao maksimalnu struju od 5-10mA. Kada je PT100 80ohms, struja je 1.775mA, tako da je sigurno ispod maksimalnog raspona. Smanjujete otpor kako biste povećali osjetljivost, ali to bi moglo imati negativan utjecaj na linearnost, jer ćemo kasnije koristiti jednadžbu linije (y = mx+c) ako nelinearni izlaz unese greške. Treća slika ima grafikon izlaza mosta pomoću različitih gornjih otpornika, puna linija je stvarni izlaz, a isprekidana linija linearna aproksimacija. Možete vidjeti na tamnoplavom grafikonu (R1 & R3 = 200ohms) daje najveći raspon napona, ali izlaz je najmanje linearan. Svijetlo plava (R1 i R3 = 3,3 kohma) daje najmanji raspon napona, ali isprekidana linija i puna linija se preklapaju pokazujući da je njena linearnost vrlo dobra.

Slobodno promijenite ove vrijednosti kako bi odgovarale vašoj primjeni, također ako promijenite napon, pazite da struja ne postane previsoka.

Korak 3: Pojačavanje

Amplification
Amplification
Amplification
Amplification

U posljednjem koraku otkrili smo da je izlazni raspon dva odijeljena napona podijeljen od 0 do 0.1187, ali nismo razgovarali o tome kako oduzeti ove napone. Da bismo to učinili, trebat će nam diferencijalno pojačalo koje će oduzeti jedan ulaz od drugog i pojačati ovo pojačanjem pojačala. Kolo za diferencijalno pojačalo prikazano je na prvoj slici. Ubacujete Vb+ u invertujući ulaz i Vb- u neinvertirajući ulaz, a izlaz će biti Vb+- Vb- s pojačanjem od 1 tj. Bez pojačanja, ali dodavanjem otpornika prikazanih na slici dodajemo dobitak od 5,731. Dobit daje:

Image
Image

Ra je R5 i R7, a Rb je R6 i R8, napon izlaza je dat prema:

Image
Image

Postoje dva problema sa samo povezivanjem ovog pojačala na izlaz mosta, efektom opterećenja i promjenom pojačanja. Promjena pojačanja pojačala zahtijeva promjenu najmanje dva otpornika jer dva para otpornika moraju biti ista, pa bi bilo neugodno imati dva lonca koji moraju imati istu vrijednost pa ćemo upotrijebiti nešto što se zove instrumentalno pojačalo o čemu govorim u nastavku. Učinak opterećenja su ulazni otpornici u pojačalo koji utječu na pad napona na PT100, želimo da napon na PT100 bude nepromijenjen, a za to možemo odabrati vrlo velike otpornike za ulazne otpornike tako da paralelni otpor PT100 i ulazni otpornik je vrlo blizu otpora PT100, ali to može uzrokovati probleme sa šumom i pomakom izlaznog napona u koje neću ulaziti. Odaberite samo srednji raspon u Kohmovom rasponu, ali kao što sam rekao, i mali otpornici su loši pa ćemo malo promijeniti krug.

Na drugoj slici imamo izlaz mosta povezan s instrumentacijskim pojačalom koje djeluje kao međuspremnik za odvajanje dvije polovice krugova (most i pojačanje), a omogućava i pojačavanje ulaza promjenom samo jednog potenciometra (Rgain). Dobit instrumentacijskog pojačala daje:

Image
Image

gdje je Rc dva 3.9k otpornika iznad i ispod lonca.

Smanjivanjem Rgain, pojačanje se povećava. Zatim u tačkama Va i Vb (pojačano Vb+ i Vb-), to je samo diferencijalno pojačalo kao i prije, a ukupni dobitak kola je samo dobitak pomnožen zajedno.

Image
Image

Da bismo odabrali svoj dobitak koji želimo učiniti nešto kao što smo radili prije s Roffom, trebali bismo odabrati otpor tik iznad vaše maksimalne temperature u vašem rasponu, u slučaju da pređe. Budući da koristimo Arduino koji ima 5V adc, maksimalni izlaz kola trebao bi biti 5V na maksimalnoj temperaturi koju ste odabrali. Odaberimo 150 ohma kao maksimalni otpor, a napon mosta bez pojačanja je bio 0.1187V, potrebno nam je pojačanje 42.185 (5/0.1187)

Recimo da držimo Ra, Rb i Rc kao 8.2k, 47k i 3.9k, samo trebamo pronaći vrijednost za pot Rgain:

Image
Image

Dakle, kako biste izvukli punih 5 volti iz temperaturnog raspona koji koristimo, promijenite vrijednost Rgain na 1,262 k. Izlazni napon koji izlazi iz diferencijalnog pojačala daje:

Korak 4: Napajanje kruga

Napajanje strujnog kola
Napajanje strujnog kola
Napajanje strujnog kola
Napajanje strujnog kola
Napajanje strujnog kola
Napajanje strujnog kola

Ovo je posljednji korak u krugu, možda ste primijetili Vcc+ i Vcc- na krugovima op pojačala, to je zato što im je potreban i pozitivni i negativni napon za ispravno funkcioniranje, možete nabaviti jedno-tračna op-pojačala, ali odlučio sam da koristim ovo pojačalo jer je to ono što sam imao okolo. Napajat ćemo +6V i -6V, postoje tri načina na koja to možemo učiniti. Prvi je prikazan na prvoj slici gdje moramo imati dva izvora napajanja ili dva izlazna priključka iz jednog izvora napajanja, imati oba na 6V i imati jedan pozitivni izlaz spojen na negativni drugi. 6V gornjeg napajanja bit će naših +6V, pozitivan donji izvor je GND, a negativan donji izvor je -6V. ISKLJUČITE TAKO OVAKO AKO SU GNDOVI IZ DVA PORUKE ODVOJENI ILI ĆE OŠTEĆITI VAŠE NAPAJANJE. Sva komercijalna napajanja imala bi odvojene GND -ove, ali ako želite provjeriti, upotrijebite ispitivač kontinuiteta na svom multimetru, ako zuji, nemojte koristiti ovu postavku, a koristite sljedeću. Na svom domaćem materijalu izgorio sam osigurač radeći ovo.

Na drugoj slici je druga postavka koju možemo imati, ali zahtijeva da jedno napajanje ima dvostruki napon od drugog, ali neće oštetiti napajanje ako su spojeni GND -ovi. Imamo dva izvora napajanja, jedno na 12V i drugo na 6V. 12V će djelovati kao naš +6V, 6V iz drugog napajanja će djelovati kao GND, a dva stvarna GND iz napajanja će djelovati kao -6V.

Ovo posljednje postavljanje je za napajanja sa samo jednim izlazom, koristi tampon pojačalo pojačanja 1 za stvaranje virtualnog uzemljenja prolaskom polovice napona napajanja kroz međuspremnik. Tada će 12V djelovati kao +6V, a stvarni GND terminal bit će -6V.

Ako želite koristiti baterije, predlažem prvo postavljanje, ali problem s baterijama je u tome što će napon pasti kad počnu opadati, a i napon s mosta će pasti, dajući pogrešna očitanja temperature. Naravno, mogli biste pročitati napon iz baterija i uključiti ih u proračune ili koristiti regulatore i još baterija. Na kraju, na vama je.

Korak 5: Potpuno kolo i kôd

Cijeli krug i kod
Cijeli krug i kod
Cijeli krug i kod
Cijeli krug i kod
Cijeli krug i kod
Cijeli krug i kod

Potpuno kolo prikazano je gore, a napravljeno je u novom Autodeskovom Circuits.io -u koji vam omogućava da kreirate krugove na matičnoj ploči, uređujete dijagram kruga (prikazano na slici 2) i dijagrame PCB -a, a najbolji dio, omogućava vam da simulirate krug sa matične ploče i čak možete programirati Arduino i povezati ga u režimu matične ploče, niže na stranici je simulacija i možete se igrati s dva lonca. Ako želite duplicirati krug i unijeti vlastite vrijednosti, krug možete pronaći ovdje. Prvi pot je 70ohms i serijski sa 80ohm otpornikom koji simulira PT100 u rasponu od 80-150ohms, drugi pot je pojačanje instrumentacijskog pojačala. Nažalost, koristio sam biblioteku koju sam preuzeo za svoj kôd, tako da Arduino nije uključen u donji krug, ali postoje samo dvije dodatne žice koje trebate povezati. Ako vam je ugodnije s LTspiceom, uključio sam asc datoteku sa krugom.

Priključite pin A0 na izlaz diferencijalnog pojačala

Spojite GND Arduina na GND kruga (NE ON -6V)

I to je krug gotov, sada na kod. Ranije sam spomenuo da ćemo koristiti formulu y = mx+c, pa ćemo sada izračunati m (nagib) i c (pomak). U Arduinu ćemo čitati napon, ali jednadžba temperature treba da znamo otpor PT100, pa način na koji to možemo učiniti je zamjenom Serial.println (temp) sa Serial.println (V) i snimiti napona i otpora na dvije temperature. Prilikom izvođenja ovog testa ostavite PT100 na miru, na minutu ili dvije i držite se dalje od bilo kakvih izvora topline (sunčeve svjetlosti, ventilatora za prijenosno računalo, vašeg tijela itd.).

Prva stvar koju možemo uzeti je sobna temperatura, kada ste spojeni i radili krug, zabilježite napon (Vt1) koji čita Arduino na serijskom monitoru i brzo odspojite PT100 i zabilježite njegov otpor (Rt1), nemojte stavljati dajte sondu prilikom odspajanja jer će to promijeniti otpor. Za drugu temperaturu, sondu bismo mogli staviti u ledenu ili toplu vodu (budite oprezni ako koristite toplu vodu) i ponoviti ono što smo radili prije nego što smo pronašli Vt2 i Rt2. Odmah nakon što postavite sondu u tekućinu, pričekajte minutu ili dvije da se otpor smiri. Ako vas zanima vremenski odziv PT100, snimajte napon na serijskom monitoru svake 2 sekunde i tako ćemo izvući grafikon, a ja ću to kasnije objasniti. Koristeći dva napona i otpora, možemo izračunati nagib na sljedeći način:

Image
Image

Rt1 i Rt2 su otpori na dvije temperature, a isto vrijedi i za napone Vt1 i Vt2. Iz nagiba i jedne od dvije grupe tačaka koje ste zabilježili možemo izračunati pomak:

Image
Image

C bi trebao biti blizu vašeg stvarnog Roffa, iz moje simulacije izračunao sam ove vrijednosti:

Image
Image

Iz ovog otpora možemo pronaći našu temperaturu koristeći formulu koju smo imali na početku:

Image
Image

I to je to, kôd za Arduino je ispod, ako imate bilo kakvih problema, ostavite komentar i ja ću vam pomoći.

Nema slika kola koje sam napravio prije nekog vremena i nemam više PT100 za prepravljanje i testiranje, ali morate mi vjerovati da radi. Nema mnogo toga o PT100 na Instructables -u koje sam pronašao pa sam zato ovo učinio sposobnim.

U sljedećem koraku govorit ću o vremenskom odzivu PT100 i ako vas matematika ne zanima, kad mjerite temperaturnu promjenu, pustite PT100 da se slegne minutu prije čitanja.

Ako ste zainteresovani da vidite i druge projekte koje sam napravio, posetite moju

Blog: Roboroblog

YouTube kanal: Roboro

Ili pogledajte moje druge instrukcije: ovdje

Ako se HTML petlja sa donjim kodom, kôd je priložen

* Ovaj kod izračunava temperaturu pomoću PT100

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

Vremenski odziv PT100
Vremenski odziv PT100

Tako sam spomenuo da PT100 ima spor odziv, ali možemo dobiti formulu za trenutnu temperaturu koju očitava PT100 u bilo kojem trenutku t. Odgovor PT100 je odgovor prvog reda koji se može napisati Laplaceovim izrazima, tj. Prijenosnom funkcijom, kao:

Image
Image

gdje je tau (τ) vremenska konstanta, K je dobitak sistema i s je Laplaceov operator koji se može zapisati kao jω gdje je ω frekvencija.

Vremenska konstanta govori vam koliko je potrebno sistemu prvog reda da se smiri na svojoj novoj vrijednosti, a pravilo ili palac je da je 5*tau koliko će trebati da se slegne u novo stabilno stanje. Dobit K vam govori koliko će ulaz biti pojačan. Kod PT100, dobitak je koliko se otpor promijeni podijeljen s promjenom temperature. Odabirom dvije slučajne vrijednosti iz ove tablice dobio sam dobitak od 0,3856 ohma/C.

Prije nego što sam rekao da možete snimati napon svake 2 sekunde nakon što stavite sondu u tekućinu, toplu ili hladnu, iz ovoga možemo izračunati vremensku konstantu sistema. Prvo morate identificirati početnu i završnu točku, početna točka je napon prije nego što stavite sondu u tekućinu, a krajnja tačka kada se taloži. Zatim ih oduzmite i to je promjena napona koraka, test koji ste proveli bio je promjena koraka koja je nagla promjena ulaza u sistem, korak je temperatura. Sada na vašem grafikonu idite na 63,2% promjene napona, a ovaj put je vremenska konstanta.

Image
Image

Ako tu vrijednost uključite u funkciju prijenosa, tada imate formulu koja opisuje frekvencijski odziv sistema, ali to nije ono što trenutno želimo, želimo stvarnu temperaturu u trenutku t za korak u temperaturi pa idemo morati izvršiti inverznu Laplaceovu transformaciju koraka u sistem. Prijenosna funkcija sistema prvog reda s ulazom koraka je sljedeća:

Image
Image

Gdje je Ks veličina koraka, odnosno temperaturna razlika. Recimo da je sonda smještena na 20 stepeni C, stavljena u vodu na 30 stepeni C, a sonda ima vremensku konstantu od 8 s, funkcija prijenosa i formula u vremenskom domenu su sljedeće:

Image
Image

Δ (t) samo znači impuls, tj. Istosmjerni pomak od 20 stupnjeva C u ovom slučaju, možete jednostavno unijeti 20 u svoje jednadžbe pri izračunavanju ovoga. Ovo je standardna jednadžba za korak u sistem prvog reda:

Image
Image

Gore navedeno izračunava temperaturu u trenutku t, ali ovo će raditi za napone jer su oni proporcionalni jedni drugima, potrebna vam je samo početna i završna vrijednost, vremenska konstanta i veličina koraka. Web stranica pod nazivom Symbolab odlična je za provjeru je li vaša matematika ispravna, može učiniti Laplace, integraciju, razlikovanje i mnoge druge stvari te vam daje sve korake na tom putu. Gore inverzna Laplaceova transformacija može se pronaći ovdje.

Preporučuje se: