Sadržaj:
- Korak 1: Komponente
- Korak 2: Wheatstoneov most
- Korak 3: Pojačavanje
- Korak 4: Napajanje kruga
- Korak 5: Potpuno kolo i kôd
- Step 6: Time Response of PT100
Video: Mjerenje temperature sa PT100 pomoću Arduina: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-31 10:17
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
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:
gdje je Rx otpor PT100, R0 otpor PT100 pri 0 stepeni C, α je koeficijent otpora temperature i T je temperatura.
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:
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)
i na 130 stepeni (150ohms):
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:
Izlazni napon za PT100 je 80 ohma i koristi ostale vrijednosti na slici:
a za Pt100 od 150 ohma:
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
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:
Ra je R5 i R7, a Rb je R6 i R8, napon izlaza je dat prema:
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:
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.
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:
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
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
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:
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:
C bi trebao biti blizu vašeg stvarnog Roffa, iz moje simulacije izračunao sam ove vrijednosti:
Iz ovog otpora možemo pronaći našu temperaturu koristeći formulu koju smo imali na početku:
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
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:
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.
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:
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:
Δ (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:
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:
Mjerenje temperature pomoću XinaBox -a i termistora: 8 koraka
Mjerenje temperature pomoću XinaBox -a i termistora: Izmjerite temperaturu tekućine pomoću analognog ulaza xChip iz XinaBox -a i termistorske sonde
Mjerenje temperature pomoću AD7416ARZ i Raspberry Pi: 4 koraka
Mjerenje temperature pomoću AD7416ARZ i Raspberry Pi: AD7416ARZ je 10-bitni temperaturni senzor sa četiri jednokanalna analogno-digitalna pretvarača i ugrađenim senzorom temperature. Senzoru temperature na dijelovima može se pristupiti putem kanala multipleksera. Ova temperatura visoke preciznosti
Mjerenje temperature pomoću STS21 i Arduino Nano: 4 koraka
Mjerenje temperature pomoću STS21 i Arduino Nano: STS21 digitalni temperaturni senzor nudi vrhunske performanse i otisak koji štedi prostor. Pruža kalibrirane, linearizirane signale u digitalnom, I2C formatu. Izrada ovog senzora zasnovana je na CMOSens tehnologiji, koja pripisuje vrhunske
Mjerenje temperature pomoću ADT75 i Arduino Nano: 4 koraka
Mjerenje temperature pomoću ADT75 i Arduino Nano: ADT75 je visoko precizan, digitalni senzor temperature. Sastoji se od osjetnika temperature u pojasu i 12-bitnog analogno-digitalnog pretvarača za praćenje i digitalizaciju temperature. Njegov izuzetno osjetljiv senzor čini me dovoljno kompetentnim
Mjerenje temperature pomoću PT100 i Arduina: 16 koraka
Mjerenje temperature pomoću PT100 i Arduina: Cilj ovog projekta je dizajnirati, izgraditi i testirati sistem osjetljivog na temperaturu. Sistem je dizajniran za mjerenje temperaturnog raspona od 0 do 100 ° C. Za mjerenje temperature korišten je PT100, a radi se o otporniku temperaturnog detektora (RTD)