Sadržaj:
- Korak 1: Komponente
- Korak 2: Wheatstoneov most
- Korak 3: Pojačavanje
- Korak 4: Napajanje kruga
- Korak 5: Cijeli krug i kôd
- Step 6: Time Response of PT100
Video: Mjerenje temperature s PT100 pomoću Arduina: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-31 10:20
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 -i imaju sporo vrijeme odziva (o čemu ću kasnije govoriti više), ali su točni i s vremenom imaju mali pomak. Ono što ću vam pokazati u ovom Instructable -u ne bi bilo u skladu s industrijskim standardima, ali izložit će vas alternativnom načinu mjerenja temperature od korištenja LM35 s kojim bi mnogi hobisti bili upoznati i prikazanom teorijom kruga može se primijeniti na druge senzore.
Korak 1: Komponente
1x PT100 (dvožični)
1x Arduino (bilo koji model)
3x 741 radna pojačala (LM741 ili UA741)
1x 80ohm otpornik
2x otpornici od 3,9 kohma
2x 3,3 komskih otpornika
2x 8,2 komskih otpornika
2x 47kohmski otpornici
1x potenciometar od 5 koms
1x dva terminala za napajanje ili 8x 1,5V AA baterije
Koristim dvožilni PT100, trožilni i četverožični PT100 će imati različite sklopove. 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, morat ćete zamijeniti oba za 5k trebaju 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 ovo sam ja koristila.
Korak 2: Wheatstoneov most
Prvo moram govoriti o formuli za dobivanje temperature iz otpora za PT100 prije nego što govorim o prvom dijelu kruga, formula otpora je sljedeća:
gdje je Rx otpor PT100, R0 otpor PT100 pri 0 stupnjeva 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. α iznosi 0,00385 ohma/stupnjeva C uzeto iz podatkovne tablice. Postoji i toč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 stupnjeva C i postavili smo PT100 u krug prikazan na slici 1. Koristeći gornju jednadžbu i jednadžbu za napon iz razdjelnika napona (prikazano na prvoj slici) možemo izračunati raspon napona. Dno raspona T = -51.85 (80ohms)
i pri 130 stupnjeva (150ohms):
To bi dalo raspon od 0,1177 V i istosmjerni pomak od 0,142 jer znamo da naša temperatura nikada neće pasti ispod -51,85 stupnjeva 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 iznosi 80 ohma i koristi ostale vrijednosti na slici:
a za Pt100 od 150 ohma:
Korištenjem Wheatstonea rješavamo 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 80 ohma i 3,3 koha. 80 ohma 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 upravljački sustav za regulaciju temperature ili nešto slično, želite znati koliko niska temperatura pada ispod vašeg temperaturnog raspona. Dakle, ako je -51.85C dno vašeg raspona, upotrijebite 74.975 ohma (-65 stupnjeva 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. Kad je PT100 80ohms, struja je 1.775mA tako 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 crte (y = mx+c) jer će nelinearni izlaz unijeti pogreške. Treća slika ima grafikon izlaza mosta pomoću različitih gornjih otpornika, puna linija je stvarni izlaz, a točkasta linija linearna aproksimacija. Možete vidjeti na tamnoplavom grafikonu (R1 & R3 = 200ohms) daje najveći raspon napona, ali izlaz je najmanje linearan. Svijetloplava (R1 i R3 = 3,3 kohma) daje najmanji raspon napona, ali isprekidana linija i puna linija preklapaju se što pokazuje da je njezina 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 to pojačanjem pojačala. Krug za diferencijalno pojačalo prikazan je na prvoj slici. Unosite Vb+ u invertirajuć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 dobivaju:
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 jednaka, 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 s pomakom šuma i izlaznim naponom 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 izlaz mosta povezan je s instrumentalnim pojačalom koje djeluje kao međuspremnik za odvajanje dvije polovice krugova (most i pojačanje), a omogućuje i pojačavanje ulaza promjenom samo jednog potenciometra (Povratak). Dobit pojačala instrumentacije daje:
gdje je Rc dva 3,9 k otpornika iznad i ispod lonca.
Smanjivanjem Rgain, pojačanje se povećava. Zatim u točki Va i Vb (pojačani Vb+ i Vb-), to je samo diferencijalno pojačalo kao i prije, a ukupni dobitak kruga je samo dobitak pomnožen.
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, samo u slučaju da pređe. Budući da koristimo Arduino koji ima 5V adc, maksimalni izlaz kruga trebao bi biti 5V pri 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 moramo 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 se prema:
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 da koristim ovo pojačalo jer je to ono što sam imao okolo. Pa ćemo isporučiti +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 negativ drugog. 6V gornjeg napajanja bit će naših +6V, pozitivan donji dovod je GND, a negativan donji dovod je -6V. SAMO POVEZITE TAKO OVAKO AKO SU GNDOVI DVA PORUKE ODVOJENI ILI ĆE OŠTEĆITI VAŠU OPSKRBU. 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 sam domaćem zalihu pregorio osigurač.
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 tla prolaskom polovice opskrbnog napona 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 odumirati, a i napon s mosta će pasti, dajući pogrešna očitanja temperature. Naravno, mogli ste pročitati napon iz baterija i uključiti ih u izračune ili koristiti regulatore i više baterija. Na kraju, na vama je.
Korak 5: Cijeli krug i kôd
Cijeli krug prikazan je gore, a izrađen je u novom Autodeskovom novom Circuits.io koji vam omogućuje da kreirate sklopove na matičnoj ploči, uređujete dijagram kruga (prikazan na slici 2) i dijagrame PCB -a, a najbolji dio omogućuje vam da simulirate krug s matične ploče i čak možete programirati Arduino i povezati ga u načinu rada za matičnu ploču, 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 s 80ohm otpornikom koji simulira PT100 u rasponu od 80-150ohms, drugi pot je dobitak instrumentalnog pojačala. Nažalost, za svoj sam kôd koristio biblioteku koju sam preuzeo, pa Arduino nije uključen u donji krug, ali postoje samo dvije dodatne žice koje trebate spojiti. Ako vam je ugodnije s LTspiceom, uključio sam asc datoteku sa krugom.
Spojite pin A0 na izlaz diferencijalnog pojačala
Spojite GND Arduina na GND kruga (NE NA -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 provođenja ovog testa ostavite PT100 na miru, minutu ili dvije i držite se dalje od 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, mogli bismo sondu staviti u ledenu ili vruću vodu (budite oprezni ako koristite vruću vodu) i ponoviti ono što smo učinili prije nego što smo pronašli Vt2 i Rt2. Neposredno nakon što postavite sondu u tekućinu, pričekajte minutu ili dvije da se otpor smiri. Ako vas zanima vremenski odziv PT100, snimite napon na serijskom monitoru svake 2 sekunde i tako ćemo izvući grafikon, a ja ću to kasnije objasniti. Pomoću 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 skupine toč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 pokušat ć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. O PT100 na Instructables nema puno toga što sam otkrio pa sam zato ovo učinio sposobnim.
U sljedećem koraku govorit ću o vremenskom odzivu PT100, a ako vas matematika ne zanima, kad mjerite temperaturnu promjenu, pustite da se PT100 smiri minutu prije čitanja.
Ako ste zainteresirani za vidjeti druge projekte koje sam napravio, posjetite moju
Blog: Roboroblog
YouTube kanal: Roboro
Ili pogledajte moje druge Instructables: ovdje
Ako se HTML petlja s donjim kodom, kôd je priložen
* Ovaj kôd 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 sustava i s je Laplaceov operator koji se može zapisati kao jω gdje je ω frekvencija.
Vremenska konstanta govori vam koliko je potrebno sustavu prvog reda da se smiri na svojoj novoj vrijednosti, a pravilo ili palac je da je 5*tau koliko će vremena trebati da se slegne u novo stabilno stanje. Dobit K vam govori koliko će se ulaz pojačati. S 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 sustava. Prvo morate identificirati mjesto početka i završne točke, početna točka je napon prije nego što stavite sondu u tekućinu, a krajnja točka kada se taloži. Zatim ih oduzmite i to je promjena napona koraka, test koji ste proveli bio je promjena koraka koja je iznenadna promjena ulaza u sustav, 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 sustava, ali to trenutno ne želimo, želimo stvarnu temperaturu u trenutku t za korak temperature pa idemo morati izvršiti inverznu Laplaceovu transformaciju koraka u sustav. Prijenosna funkcija sustava prvog reda s ulazom koraka je sljedeća:
Gdje je Ks veličina koraka, tj. Temperaturna razlika. Recimo da je sonda smještena na 20 stupnjeva C, stavljena u vodu na 30 stupnjeva C, a sonda ima vremensku konstantu od 8 s, prijenosna funkcija i formula vremenske domene 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 kada to izračunate. Ovo je standardna jednadžba za korak u sustav prvog reda:
Gore navedeno izračunava temperaturu u trenutku t, ali to će raditi za napone jer su međusobno proporcionalni, samo su vam potrebna početna i završna vrijednost, vremenska konstanta i veličina koraka. Web stranica pod nazivom Symbolab izvrsna je za provjeru je li vaša matematika ispravna, može učiniti Laplace, integraciju, razlikovanje i puno drugih stvari te vam daje sve korake na tom putu. Gore inverzna Laplaceova transformacija može se pronaći ovdje.
Preporučeni:
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 s četiri jednokanalna analogno-digitalna pretvarača i ugrađenim osjetnikom 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: digitalni temperaturni senzor STS21 nudi vrhunske performanse i otisak koji štedi prostor. Pruža kalibrirane, linearizirane signale u digitalnom, I2C formatu. Izrada ovog senzora temelji se na CMOSens tehnologiji, što pripisuje vrhunskom
Mjerenje temperature pomoću ADT75 i Arduino Nano: 4 koraka
Mjerenje temperature pomoću ADT75 i Arduino Nano: ADT75 je vrlo precizan, digitalni senzor temperature. Sastoji se od osjetnika temperature pojasa 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 sustav osjetljivog na temperaturu. Sustav je dizajniran za mjerenje temperaturnog raspona od 0 do 100 ° C. Za mjerenje temperature korišten je PT100, a radi se o detektoru otporne temperature (RTD)