Sisukord:
- Samm: komponendid
- 2. samm: Wheatstone'i sild
- 3. samm: võimendamine
- Samm: vooluahela toide
- Samm: täielik vooluahel ja kood
- Step 6: Time Response of PT100
Video: Temperatuuri mõõtmine PT100 -st Arduino abil: 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-31 10:19
PT100 on takistustemperatuuri detektor (RTD), mis muudab oma takistust sõltuvalt ümbritsevast temperatuurist, seda kasutatakse laialdaselt aeglase dünaamikaga ja suhteliselt laia temperatuurivahemikuga tööstusprotsessides. Seda kasutatakse aeglaste dünaamiliste protsesside jaoks, kuna RTD -del on aeglane reageerimisaeg (millest ma räägin lähemalt hiljem), kuid need on täpsed ja aja jooksul vähe triivivad. See, mida ma teile selles juhendis näitan, ei vasta tööstusstandarditele, kuid see avab teile alternatiivse viisi temperatuuri mõõtmiseks kui LM35 kasutamine, mida paljud harrastajad tunnevad ja näidatud vooluringi teooria saab rakendada teistele anduritele.
Samm: komponendid
1x PT100 (kaks traati)
1x Arduino (mis tahes mudel)
3x 741 töövõimendit (LM741 või UA741)
1x 80 oomi takisti
2x 3,9kohm takisti
2x 3,3 kΩ takisti
2x 8,2kohm takisti
2x 47kohms takistid
1x 5kohms potentsiomeeter
1x kahe klemmiga toiteallikas või 8x 1,5 V AA patareid
Ma kasutan kahe juhtmega PT100, kolme ja nelja juhtmega PT100 -l on erinevad ahelad. Enamiku nende takisti väärtused ei pea olema täpselt samad, mis eespool, kuid kui on olemas paar takistit, st 3,9 ohmi, siis kui vahetate need näiteks 5k vastu, peate mõlemad vahetama 5k vastu peab olema sama. Kui me saame vooluringi, ütlen erinevate väärtuste valimise mõju. Operatsioonivõimendite (op -võimendite) jaoks saate kasutada muid op -võimendeid, kuid neid kasutasin.
2. samm: Wheatstone'i sild
Kõigepealt pean rääkima valemist, kuidas saada temperatuur PT100 takistusest, enne kui räägin vooluahela esimesest osast, takistuse valem on järgmine:
kus Rx on PT100 takistus, R0 on PT100 takistus 0 ° C juures, α on temperatuuritaluvuse koefitsient ja T on temperatuur.
R0 on 100 oomi, kuna see on PT100, kui see oleks PT1000, oleks R0 1000 oomi. α on andmelehelt võetud 0,00385 oomi/kraadi C. Siin on ka täpsem valem, kuid ülaltoodud valem sobib selle projekti jaoks. Kui me valemi üle võtame, saame arvutada antud takistuse temperatuuri:
Oletame, et tahame mõõta midagi, mille temperatuurivahemik on -51,85 kuni 130 ° C, ja paigutasime PT100 joonisel 1 näidatud vooluahelasse. Kasutades ülaltoodud võrrandit ja pingejaoturi pinge võrrandit (näidatud esimesel pildil) saame arvutada pingevahemiku. Vahemiku alumine osa T = -51,85 (80 oomi)
ja temperatuuril 130 kraadi (150 oomi):
See annaks vahemiku 0,1187 V ja alalisvoolu nihke 0,142, sest me teame, et meie temperatuur ei lange kunagi alla -51,85 kraadi C, see vähendab tundlikkust vahemikus, millest hoolime (80 kuni 130 oomi), kui me seda pinget võimendame. Sellest alalisvoolu nihutusest vabanemiseks ja tundlikkuse suurendamiseks saame kasutada Wheatstone'i silda, mis on näidatud teisel pildil.
Teise pingejaguri (Vb-) väljund lahutatakse esimesest pingejaguri väljundist (Vb+), kasutades hiljem diferentsiaalvõimendit. Silla väljundi valem on vaid kaks pingejaoturit:
PT100 väljundpinge on 80 oomi ja kasutab teisi pildil olevaid väärtusi:
ja kui Pt100 on 150 oomi:
Wheatstone'i kasutades vabaneme alalisvoolu nihkest ja suurendame tundlikkust pärast võimendust. Nüüd, kui me teame, kuidas Wheatstone'i sild töötab, saame rääkida sellest, miks me kasutame 80 oomi ja 3,3 kΩ. 80 oomi on seletatud ülaltoodud valemiga, valige see väärtus (me nimetame seda nihketakistuseks Roff), et see oleks teie temperatuuri alumine vahemik või isegi parem, veidi allapoole oma vahemikku, kui seda kasutatakse Kui soovite reguleerida temperatuuri reguleerimist või midagi sellist, siis soovite teada, kui madal on temperatuur teie temperatuurivahemikust madalamal. Nii et kui teie vahemiku põhjas on -51,85 ° C, kasutage oma Roffi jaoks 74,975 oomi (-65 ° C).
Valisin R1 ja R3 jaoks 3.3k kahel põhjusel, et piirata voolu ja suurendada väljundi lineaarsust. Kuna PT100 muudab temperatuuri tõttu takistust, annab selle liigse voolu läbimine isekuumenemise tõttu vale näidu, nii et valisin maksimaalse voolu 5-10 mA. Kui PT100 on 80 oomi, on vool 1,775 mA, mis on ohutult allapoole maksimaalset vahemikku. Tundlikkuse suurendamiseks vähendate takistust, kuid sellel võib olla lineaarsusele negatiivne mõju, kuna me kasutame hiljem rea joont (y = mx+c), millel on mittelineaarne väljund. Kolmandal pildil on graafik silla väljundist, kasutades erinevaid ülemisi takistusi, pidev joon on tegelik väljund ja punktiirjoon on lineaarne lähendus. Näete tumesinisest graafikust (R1 & R3 = 200 oomi) annab suurima pingevahemiku, kuid väljund on kõige vähem lineaarne. Helesinine (R1 & R3 = 3,3 khm) annab väikseima pingevahemiku, kuid punktiirjoon ja pidev joon kattuvad, mis näitab, et selle lineaarsus on väga hea.
Muutke neid väärtusi julgelt oma rakendusele sobivaks, ka pinge muutmisel veenduge, et vool ei läheks liiga suureks.
3. samm: võimendamine
Viimases etapis leidsime, et kahe lahutatud pingejaguri väljundvahemik oli 0 kuni 0, 1187, kuid me pole rääkinud sellest, kuidas neid pingeid lahutada. Selleks vajame diferentsiaalvõimendit, mis lahutab ühe sisendi teisest ja võimendab seda võimendi võimendusega. Diferentsiaalvõimendi ahel on näidatud esimesel pildil. Te sisestate Vb+ inverteerivasse sisendisse ja Vb- inverteerimata sisendisse ning väljundiks on Vb+- Vb- võimendusega üks, st võimendus puudub, kuid lisades pildil näidatud takistid lisame võimenduse 5,731. Kasu antakse:
Ra on R5 & R7 ja Rb on R6 & R8, pinge väljastatakse:
Selle võimendi ühendamisel silla väljundiga on kaks probleemi, laadimisefekt ja võimenduse muutmine. Võimendi võimenduse muutmine nõuab vähemalt kahe takisti vahetamist, kuna kaks takistipaari peavad olema samad, nii et kahe sama väärtusega poti olemasolu oleks tüütu, nii et kasutame mõõteriistade võimendit millest räägin allpool. Laadimisefektiks on võimendi sisendtakistid, mis mõjutavad pingelangust kogu PT100 -s, soovime, et pinge kogu PT100 -s ei muutuks ja selleks saame valida sisendtakistite jaoks väga suured takistid, nii et PT100 paralleeltakistus ja sisendtakisti on PT100 takistusele väga lähedal, kuid see võib põhjustada probleeme müra ja väljundpinge nihkega, mida ma ei kavatse. Valige lihtsalt Kohmsi vahemiku keskmine vahemik, kuid nagu ma ütlesin, on ka väikeste takistite olemasolu halb, nii et muudame ahelat natuke.
Teisel pildil on silla väljund ühendatud mõõtevõimendiga, mis toimib puhvervõimuna, et eraldada ahelate kaks poolt (sild ja võimendus), samuti võimaldab sisendit võimendada, muutes vaid ühte potentsiomeetrit (Rgain). Seadmevõimendi võimenduse annavad:
kus Rc on kaks 3,9 k takisti poti kohal ja all.
Rgaini vähendamisega suureneb võimendus. Siis punktis Va ja Vb (võimendatud Vb+ ja Vb-) on see lihtsalt diferentsiaalvõimendus nagu varem ja ahela koguvõimendus on vaid võimendused, mis korrutatakse kokku.
Kasumi valimiseks soovite teha midagi sellist, nagu me Roffi puhul varem tegime, peaksime igaks juhuks valima takistuse, mis ületab teie vahemiku maksimaalse temperatuuri. Kuna me kasutame Arduinot, millel on 5 V adc, peaks ahela maksimaalne väljund olema 5 V teie valitud maksimaalsel temperatuuril. Valime maksimaalseks takistuseks 150 oomi ja võimendamata sillapinge oli 0.1187V, vajaminev võimendus on 42.185 (5/0.1187)
Oletame, et hoiame Ra, Rb ja Rc väärtust 8,2k, 47k ja 3,9k, peame lihtsalt leidma poti Rgain väärtuse:
Seega, et saada 5 volti kasutatavast temperatuurivahemikust välja, muutke Rgaini väärtuseks 1,226k. Diferentsiaalvõimendist väljuv väljundpinge on antud:
Samm: vooluahela toide
See on vooluahela viimane etapp, olete võib-olla märganud optiliste vooluahelate Vcc+ ja Vcc-, see on sellepärast, et nad vajavad korralikult toimimiseks nii positiivset kui ka negatiivset pinget, saate ühe rööpaga võimendeid, kuid otsustasin kasutada neid võimendeid, sest see oli mul lamades. Seega tarnime +6V ja -6V, seda saab teha kolmel viisil. Esimene on näidatud esimesel pildil, kus meil on ühest toiteallikast kaks toiteallikat või kaks väljundklemmi, mõlemad on 6 V pingega ja üks positiivne väljund on ühendatud teise negatiiviga. Ülemise toite 6V on meie +6V, alumise toite positiivne on GND ja alumise toite negatiivne on -6V. Ühendage see AINULT SELLEGA, KUI KAHE TARNE GND ON Eraldatud või see kahjustab teie toiteallikat. Kõik kaubanduslikud toiteallikad oleksid eraldanud GND -d, kuid kui soovite seda kontrollida, kasutage oma multimeetri järjepidevuse testerit, kui see sumiseb, ärge kasutage seda seadistust ja kasutage järgmist. Koduse varustuse korral põlesin seda tehes kaitsme läbi.
Teisel pildil on teine seadistus, mis meil võib olla, see eeldab, et ühel toitel on kahekordne pinge teisel, kuid see ei kahjusta toiteallikat, kui GND -d on ühendatud. Meil on kaks toite, üks 12V ja teine 6V. 12 V toimib meie +6 V, 6 V teisest toiteallikast toimib GND -na ja kaks tegelikku GND -d toiteallikast -6 V.
See viimane seadistus on mõeldud ainult ühe väljundiga toiteallikatele, see kasutab võimenduse 1 puhvervõimendit, et luua virtuaalne maandus, suunates poole toitepingest läbi puhvervõimendi. Siis toimib 12V +6V ja tegelik GND -terminal on -6V.
Kui soovite kasutada patareisid, soovitaksin esimest seadistust, kuid patareide probleem on see, et pinge langeb, kui nad hakkavad surema, ja ka sillast väljuv pinge langeb, andes valed temperatuurinäidud. Loomulikult võite lugeda patareide pinget ja lisada need arvutustesse või kasutada regulaatoreid ja rohkem patareisid. Lõpuks on see teie otsustada.
Samm: täielik vooluahel ja kood
Kogu vooluahel on näidatud ülalpool ja see tehti Autodeski uues Circuits.io -s, mis võimaldab teil luua ahelaid leivaplaadil, redigeerida vooluahelat (näidatud joonisel 2) ja PCB diagramme ning parim osa võimaldab simuleerida vooluahelat leivaplaadilt ja saab isegi programmeerida Arduino ja ühendada selle leivarežiimis, lehel on simulatsioon ja saate kahe potiga ringi mängida. Kui soovite vooluringi dubleerida ja oma väärtusi sisestada, leiate vooluringi siit. Esimene pott on 70 oomi ja jadamisi 80 oomi takistiga, mis simuleerib PT100 vahemikus 80–150 oomi, teine pott on mõõtevõimendi võimendus. Kahjuks kasutasin oma koodi jaoks alla laaditud raamatukogu, nii et Arduino ei kuulu allolevasse ahelasse, kuid ühendamiseks on vaja ainult kahte lisatraati. Kui teile LTspice on mugavam, lisasin vooluringiga asc -faili.
Ühendage A0 tihvt diferentsiaalvõimendi väljundiga
Ühendage Arduino GND vooluahela GND -ga (MITTE -6V)
Ja see on ahel tehtud, nüüd koodi peale. Varem mainisin, et kasutame valemit y = mx+c, nüüd arvutame m (kalle) ja c (nihe). Arduinos loeme pinget, kuid temperatuuri võrrand peab teadma PT100 takistust, nii et saame seda teha, asendades Serial.println (temp) serial.println (V) ja salvestades pinge ja takistus kahel temperatuuril. Selle testi tegemisel jätke PT100 mõneks ajaks, näiteks minutiks või kaheks, üksi ja hoidke eemal soojusallikatest (päikesevalgus, sülearvuti ventilaator, keha jne).
Esimene punkt, mille saame võtta, on toatemperatuur, kui vooluring on ühendatud ja töötab, salvestage Arduino poolt loetav pinge (Vt1) jadamonitorile ja ühendage PT100 kiiresti lahti ning registreerige selle takistus (Rt1). lahtiühendamisel pange sondi käed külge, kuna see muudab takistust. Teise temperatuuri puhul võiksime sondi asetada jäävette või kuuma vette (olge kuuma vee kasutamisel ettevaatlik) ja korrata seda, mida tegime enne Vt2 ja Rt2 leidmist. Vahetult pärast sondi vedelikku asetamist oodake minut või kaks, kuni takistus laheneb. Kui olete huvitatud PT100 ajareaktsioonist, salvestage jadamonitori pinge umbes iga 2 sekundi tagant ja me saame sellest graafiku joonistada ja ma selgitan seda hiljem. Kahe pinge ja takistuse abil saame kalde arvutada järgmiselt:
Rt1 ja Rt2 on takistused kahel temperatuuril ja sama kehtib ka pingete Vt1 ja Vt2 kohta. Kallaku ja ühe kahest salvestatud punktikomplekti põhjal saame arvutada nihke:
C peaks olema teie tegeliku Roffi lähedal, oma simulatsiooni põhjal arvutasin need väärtused:
Sellest takistusest leiame oma temperatuuri, kasutades valemit, mis meil oli alguses:
Ja see on kõik, Arduino kood on allpool, kui teil on probleeme, jätke lihtsalt kommentaar ja proovin aidata.
Puuduvad minu tehtud vooluringi pildid, nagu tegin seda mõni aeg tagasi ja mul pole PT100 enam ümber teha ja katsetada, kuid peate lihtsalt uskuma, et see töötab. Instructabeli PT100 kohta pole palju leitud, nii et tegin selle ibleks.
Järgmises etapis räägin PT100 ajareaktsioonist ja kui teid matemaatika ei huvita, laske temperatuurimuutuse mõõtmisel PT100 -l enne lugemist minut aega settida.
Kui soovite näha teisi minu tehtud projekte, külastage minu
Blogi: Roboroblog
YouTube'i kanal: Roboro
Või vaadake minu teisi juhiseid: siin
Kui HTML segab allolevat koodi, lisatakse kood
* See kood arvutab temperatuuri PT100 abil
* Kirjutas Roboro * Github: <a href = "https://github.com/RonanB96/Read-Temp-From-PT100-… <a href =" https://github.com/RonanB96/Read-Temp- Alates-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
Nii et ma mainisin, et PT100 reageerib aeglaselt, kuid me saame valemi PT100 poolt loetud temperatuuri kohta igal ajal t. PT100 vastus on esimese järgu vastus, mille saab kirjutada Laplace'i terminites, st ülekandefunktsioonina järgmiselt:
kus tau (τ) on ajakonstant, K on süsteemi võimendus ja s on Laplace'i operaator, mida saab kirjutada kui jω, kus ω on sagedus.
Ajakonstant ütleb teile, kui kaua kulub esmakordse süsteemi uue väärtuse saavutamiseks, ja reegel või pöial on see, et 5*tau on see, kui kaua uues püsiseisundis settimine võtab. Võimendus K näitab, kui palju sisendit võimendatakse. PT100 puhul on võimendus see, kui palju takistuse muutused jagatakse temperatuurimuutustega. Sellelt andmelehelt kahe juhusliku väärtuse valimisel sain võimenduseks 0,3856 oomi/C.
Enne kui ma ütlesin, et saate pinge registreerida iga 2 sekundi järel pärast seda, kui olete sondi vedelikku pannud, kuum või külm, selle põhjal saame arvutada süsteemi ajakonstanti. Kõigepealt peate kindlaks määrama algus- ja lõpp -punkti, kusjuures alguspunktiks on pinge enne sondi vedelikku panemist ja lõpp -punkt selle settimisel. Seejärel lahutage need ja see on astme pinge muutus, teie tehtud test oli sammumuutus, mis on süsteemi sisendi järsk muutus, mille samm on temperatuur. Nüüd minge oma graafikul 63,2% pinge muutusest ja see aeg on ajakonstant.
Kui ühendate selle väärtuse ülekandefunktsiooni, on teil süsteemide sagedusreaktsiooni kirjeldav valem, kuid see pole see, mida me praegu tahame, vaid soovime tegelikku temperatuuri ajahetkel t temperatuuri astme kohta, nii et me läheme peab tegema sammu süsteemis pöördvõrdelise Laplace'i teisenduse. Esimese järgu süsteemi ülekandefunktsioon koos sammu sisendiga on järgmine:
Kus Ks on astme suurus, st temperatuuri erinevus. Oletame, et sond on 20 ° C juures, 30 ° C vees ja sondi ajakonstant on 8s, ülekandefunktsioon ja ajadomeeni valem on järgmine:
Δ (t) tähendab lihtsalt impulssi, st sel juhul alalisvoolu nihet 20 ° C, saate selle arvutamisel lihtsalt oma võrranditesse kirjutada 20. See on standardvõrrand esimese astme süsteemi astumiseks:
Ülaltoodud arvutab temperatuuri ajal t, kuid see töötab pinge korral, kuna need on üksteisega proportsionaalsed, vajate ainult alg- ja lõppväärtust, ajakonstanti ja sammu suurust. Veebisait nimega Symbolab on suurepärane kontrollimiseks, kas teie matemaatika on õige, see võib teha Laplace'i, integratsiooni, eristamist ja palju muud ning annab teile kõik sammud. Ülaltoodud vastupidine Laplace'i teisendus on leitav siit.
Soovitan:
Temperatuuri mõõtmine STS21 ja Arduino Nano abil: 4 sammu
Temperatuuri mõõtmine STS21 ja Arduino Nano abil: STS21 digitaalne temperatuuriandur pakub suurepärast jõudlust ja ruumi säästvat jalajälge. See pakub kalibreeritud, lineariseeritud signaale digitaalses I2C -vormingus. Selle anduri valmistamine põhineb CMOSens tehnoloogial, mis omistab suurepärase
Temperatuuri ja niiskuse mõõtmine DHT11 / DHT22 ja Arduino abil: 4 sammu
Temperatuuri ja niiskuse mõõtmine DHT11 / DHT22 ja Arduino abil
Temperatuuri mõõtmine ADT75 ja Arduino Nano abil: 4 sammu
Temperatuuri mõõtmine ADT75 ja Arduino Nano abil: ADT75 on ülitäpne digitaalne temperatuuriandur. See koosneb ribalaiuse temperatuuriandurist ja 12-bitisest analoog-digitaalmuundurist temperatuuri jälgimiseks ja digiteerimiseks. Selle ülitundlik andur muudab selle minu jaoks piisavalt pädevaks
Niiskuse ja temperatuuri mõõtmine HIH6130 ja Arduino Nano abil: 4 sammu
Niiskuse ja temperatuuri mõõtmine HIH6130 ja Arduino Nano abil: HIH6130 on digitaalse väljundiga niiskus- ja temperatuuriandur. Need andurid tagavad täpsuse taseme ± 4% RH. Tööstusharu juhtiva pikaajalise stabiilsusega, tõelise temperatuuriga kompenseeritud digitaalse I2C-ga, tööstusharu juhtiva töökindlusega, energiatõhususega
Temperatuuri mõõtmine PT100 ja Arduino abil: 16 sammu
Temperatuuri mõõtmine PT100 ja Arduino abil: Selle projekti eesmärk on kavandada, ehitada ja katsetada temperatuuri andvat süsteemi. Süsteem on mõeldud temperatuurivahemiku 0 kuni 100 ° C mõõtmiseks. Temperatuuri mõõtmiseks kasutati PT100 ja see on takistustemperatuuri detektor (RTD)