Obsah:
- Krok 1: Komponenty
- Krok 2: Wheatstone Bridge
- Krok 3: Zosilnenie
- Krok 4: Napájanie obvodu
- Krok 5: Úplný obvod a kód
- Step 6: Time Response of PT100
Video: Meranie teploty z PT100 pomocou Arduina: 6 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-31 10:24
PT100 je odporový teplotný detektor (RTD), ktorý mení svoj odpor v závislosti od teploty okolia, je široko používaný v priemyselných procesoch s pomalou dynamikou a relatívne širokými teplotnými rozsahmi. Používa sa na pomalé dynamické procesy, pretože RTD majú pomalé časy odozvy (o ktorých budem hovoriť viac neskôr), ale sú presné a majú nízky posun v čase. To, čo vám ukážem v tomto návode, by nevyhovovalo priemyselným štandardom, ale vystaví vás alternatívnemu spôsobu merania teploty ako pomocou LM35, s ktorým by bolo oboznámených veľa nadšencov a ukázala teóriu obvodov. je možné použiť aj na iné senzory.
Krok 1: Komponenty
1x PT100 (dvojvodičový)
1x Arduino (akýkoľvek model)
3x 741 prevádzkových zosilňovačov (LM741 alebo UA741)
1x odpor 80 ohmov
Rezistory 2x 3,9 kohmov
Rezistory 2x 3,3 kohm
Rezistory 2x 8,2 kohm
2x 47 kohmové odpory
1x 5kohms potenciometer
1x Dva koncový napájací zdroj alebo 8 x 1,5 V batérie AA
Používam dvojvodičový PT100, troj a štvorvodičový PT100 budú mať rôzne obvody. Hodnoty odporu pre väčšinu z nich nemusia byť úplne rovnaké ako vyššie, ale ak existuje pár rezistorov, tj. 3,9 kohmov, ak ste ich vymenili za povedzme 5 k, budete musieť vymeniť oba za 5 k ako vtedy musí byť rovnaký. Keď dostaneme obvod, poviem efekt výberu rôznych hodnôt. Na operačné zosilňovače (operačné zosilňovače) môžete použiť iné operačné zosilňovače, ale tieto som použil.
Krok 2: Wheatstone Bridge
Najprv musím hovoriť o vzorci na získanie teploty z odporu pre PT100, než budem hovoriť o prvej časti obvodu, vzorec pre odpor je nasledujúci:
kde Rx je odpor PT100, R0 je odpor PT100 pri 0 ° C, α je koeficient teplotnej odolnosti a T je teplota.
R0 je 100 ohmov, pretože toto je PT100, ak by to bol PT1000, R0 by bol 1 000 ohmov. α je 0,00385 ohmov/stupňov C prevzatých z technického listu. Nájdete tu aj presnejší vzorec, ale vyššie uvedený vzorec bude pre tento projekt stačiť. Ak transponujeme vzorec, môžeme vypočítať teplotu pre daný odpor:
Povedzme, že chceme merať niečo, čo by malo teplotný rozsah -51,85 až 130 stupňov C, a PT100 sme umiestnili do obvodu zobrazeného na obrázku 1. Pomocou vyššie uvedenej rovnice a rovnice pre napätie mimo deliča napätia (znázornené na obrázku) na prvom obrázku) môžeme vypočítať rozsah napätia. Spodok rozsahu T = -51,85 (80 ohmov)
a pri 130 stupňoch (150 ohmov):
To by poskytlo rozsah 0,1187 V a DC offset 0,142, pretože vieme, že naša teplota sa nikdy nedostane pod -51,85 ° C, čo zníži citlivosť v rozsahu, na ktorom nám záleží (80 až 130 ohmov), keď zosilníme toto napätie. Aby sme sa zbavili tohto DC offsetu a zvýšili našu citlivosť, môžeme použiť Wheatstoneov most, ktorý je znázornený na druhom obrázku.
Výstup druhého deliča napätia (Vb-) bude neskôr odčítaný od výstupu prvého deliča napätia (Vb+) pomocou diferenciálneho zosilňovača. Vzorec pre výstup mosta sú len dva rozdeľovače napätia:
Výstupné napätie pre PT100 je 80 ohmov a používa ostatné hodnoty na obrázku:
a pre Pt100 je 150 ohmov:
Použitím Wheatstone sa zbavíme DC ofsetu a zvýšime citlivosť po zosilnení. Teraz, keď vieme, ako Wheatstoneov most funguje, môžeme si povedať, prečo používame 80 ohmov a 3,3 kohmov. 80 ohmov je trochu vysvetlených z vyššie uvedeného vzorca, zvoľte túto hodnotu (budeme to nazývať offsetový odpor Roff) tak, aby bola dolným rozsahom vašej teploty alebo ešte lepšie, mierne pod spodkom vášho rozsahu, ak sa používa na riadiaci systém na reguláciu teploty alebo niečo podobné, chceli by ste vedieť, ako nízko sa teplota dostáva pod váš teplotný rozsah. Ak je teda -51,85 ° C najnižšia hodnota, použite pre svoj Roff 74,975 ohmov (-65 stupňov C).
3.3k pre R1 a R3 som vybral z dvoch dôvodov, aby som obmedzil prúd a zvýšil lineárnosť výstupu. Pretože PT100 mení odpor v dôsledku teploty, príliš veľký prúd cez neho poskytne nesprávne hodnoty v dôsledku vlastného zahrievania, takže som zvolil maximálny prúd 5-10 mA. Keď je PT100 80 ohmov, prúd je 1,775 mA, takže je bezpečne pod maximálnym rozsahom. Znížením odporu zvýšite citlivosť, čo však môže mať negatívny vplyv na linearitu, pretože neskôr použijeme rovnicu riadka (y = mx+c) s nelineárnym výstupom, čo spôsobí chyby. Na treťom obrázku je graf výstupu mosta pomocou rôznych horných odporov, plná čiara je skutočný výstup a bodkovaná čiara je lineárnou aproximáciou. Na tmavomodrom grafe (R1 a R3 = 200 ohmov) môžete vidieť, že poskytuje najväčší rozsah napätia, ale výstup je najmenej lineárny. Svetlomodrá (R1 a R3 = 3,3 kohms) poskytuje najmenší rozsah napätia, ale bodkovaná čiara a plná čiara sa prekrývajú, čo ukazuje, že jej linearita je veľmi dobrá.
Nebojte sa zmeniť tieto hodnoty tak, aby vyhovovali vašej aplikácii, aj keď zmeníte napätie, uistite sa, že prúd nebude príliš vysoký.
Krok 3: Zosilnenie
V poslednom kroku sme zistili, že výstupný rozsah dvoch odpočítaných deličov napätia je 0 až 0,1187, ale nehovorili sme o tom, ako tieto napätia odčítať. Na to budeme potrebovať diferenciálny zosilňovač, ktorý bude odpočítavať jeden vstup od druhého a zosilňovať to zosilnením zosilňovača. Obvod pre diferenciálny zosilňovač je zobrazený na prvom obrázku. Napájate Vb+ do invertujúceho vstupu a Vb- v neinvertujúcom vstupe a výstupom bude Vb+- Vb- so ziskom jeden, tj bez zosilnenia, ale pridaním odporov zobrazených na obrázku pridáme zisk 5,731. Zisk je daný:
Ra je R5 a R7 a Rb je R6 a R8, výstupné napätie je dané:
Existujú len dva problémy s pripojením tohto zosilňovača k výstupu mosta, efektom načítania a zmenou zosilnenia. Zmena zisku zosilňovača vyžaduje, aby ste zmenili aspoň dva rezistory, pretože dva páry rezistorov musia byť rovnaké, takže mať dva hrnce, ktoré musia mať rovnakú hodnotu, by bolo nepríjemné, takže použijeme niečo, čo sa nazýva prístrojový zosilňovač. o ktorom hovorím nižšie. Efekt zaťaženia je, že vstupné odpory do zosilňovača ovplyvňujú pokles napätia na PT100, chceme, aby napätie na PT100 bolo nezmenené, a aby sme to urobili, môžeme pre vstupné odpory zvoliť veľmi veľké rezistory tak, aby paralelný odpor PT100 a vstupný odpor je veľmi blízky odporu PT100, ale to môže spôsobiť problémy s posunom šumu a výstupného napätia, do ktorého sa nechystám ísť. Vyberte si stredný rozsah v rade Kohms, ale ako som hovoril, mať malé odpory je tiež zlé, takže trochu zmeníme obvod.
Na druhom obrázku máme výstup mosta pripojený k prístrojovému zosilňovaču, ktorý slúži ako vyrovnávací zosilňovač na oddelenie dvoch polovíc obvodov (most a zosilnenie) a tiež umožňuje použitie na zosilnenie vstupu zmenou iba jedného potenciometra (Rgain). Zisk prístrojového zosilňovača je daný:
kde Rc sú dva 3,9k rezistory nad a pod potníkom.
Znížením Rgain sa zosilnenie zvyšuje. Potom v bode Va a Vb (zosilnené Vb+ a Vb-) je to len diferenciálny zosilňovač ako predtým a celkový zisk obvodu je len zisky znásobené dohromady.
Aby ste si vybrali svoj zisk, ktorý chcete urobiť tak, ako sme to urobili predtým s Roffom, mali by sme zvoliť odpor tesne nad vašou maximálnou teplotou vo vašom rozsahu pre prípad, že by došlo k jeho prekročeniu. Pretože používame Arduino, ktoré má 5V adc, maximálny výstup obvodu by mal byť 5V pri maximálnej teplote, ktorú ste si vybrali. Vyberme 150 ohmov, pretože maximálny odpor a napätie mostíka bez zosilnenia bolo 0,1187 V, potrebujeme zisk 42,185 (5/0,1187)
Povedzme, že ponecháme Ra, Rb a Rc ako 8,2k, 47k a 3,9k, stačí nájsť hodnotu pre pot Rgain:
Aby ste dostali plných 5 voltov z používaného teplotného rozsahu, zmeňte hodnotu Rgain na 1,226 k. Výstupné napätie vychádzajúce z diferenciálneho zosilňovača je dané:
Krok 4: Napájanie obvodu
Toto je posledný krok obvodu, možno ste si všimli Vcc+ a Vcc- na obvodoch operačného zosilňovača, pretože pretože na správnu funkciu potrebujú kladné aj záporné napätie, môžete získať jednokoľajové zosilňovače, ale rozhodol som sa používať tieto zosilňovače, pretože som tam ležal. Dodáme teda +6V a -6V, existujú tri spôsoby, ako to urobiť. Prvý je zobrazený na prvom obrázku, kde musíme mať dva zdroje napájania alebo dva výstupné terminály z jedného zdroja napájania, obidva majú napätie 6 V a jeden pozitívny výstup je spojený s negatívom druhého. 6 V horného zdroja bude našich +6 V, plus dolného napájania je GND a negatívny spodný zdroj je -6 V. PRIPOJTE IBA TAKTO, AK SÚ ODDELENÉ GNDY DVOCH SPOTREBITEĽOV ALEBO POŠKODIA VAŠU NAPÁJANIE. Všetky komerčné zdroje by mali oddelené GND, ale ak to chcete skontrolovať, použite na multimetri tester kontinuity, ak bzučí, toto nastavenie nepoužívajte a použite ďalšie. Na svojej domácej dodávke som odpálil poistku.
Na druhom obrázku je druhé nastavenie, ktoré môžeme mať. Vyžaduje, aby jedno napájanie malo dvojnásobné napätie ako ostatné, ale nepoškodí napájanie, ak sú pripojené GND. Máme dva zdroje, jeden na 12V a druhý na 6V. 12V bude fungovať ako našich +6V, 6V z druhého zdroja bude fungovať ako GND a dva skutočné GND z napájania budú fungovať ako -6V.
Toto posledné nastavenie je pre napájacie zdroje s iba jedným výstupom a používa vyrovnávací zosilňovač so ziskom 1 na vytvorenie virtuálnej zeme prechodom polovice napájacieho napätia cez vyrovnávací zosilňovač. Potom bude 12V fungovať ako +6V a skutočný terminál GND bude -6V.
Ak chcete používať batérie, navrhoval by som prvé nastavenie, ale problémom s batériami je, že napätie začne klesať, keď začnú odumierať, a napätie z mosta tiež klesne, čo spôsobí nesprávne hodnoty teploty. Napätie z batérií môžete samozrejme prečítať a zahrnúť ich do výpočtov alebo použiť regulátory a ďalšie batérie. Nakoniec je to na vás.
Krok 5: Úplný obvod a kód
Celý obvod je zobrazený vyššie a bol vytvorený v novom obvode Autodesk Circuits.io, ktorý vám umožňuje vytvárať obvody na doske, upravovať schémy zapojenia (znázornené na obrázku 2) a diagramy plošných spojov a v najlepšej časti vám umožňuje simulovať obvod z dosky a môžete dokonca naprogramovať Arduino a pripojiť ho v režime breadboard, ďalej na stránke je simulácia a môžete sa hrať s dvoma hrncami. Ak chcete duplikovať obvod a zadať svoje vlastné hodnoty, obvod nájdete tu. Prvý potenciometer je 70 ohmov a v sérii s odporom 80 ohmov, ktorý simuluje PT100 s rozsahom 80-150 ohmov, druhý hrniec je zosilnenie prístrojového zosilňovača. Je smutné, že som pre svoj kód použil knižnicu, ktorú som si stiahol, takže Arduino nie je zahrnutý v nižšie uvedenom obvode, ale musíte pripojiť iba dva ďalšie káble. Ak vám viac vyhovuje LTspice, priložil som k obvodu asc súbor.
Pripojte pin A0 k výstupu diferenciálneho zosilňovača
Pripojte GND Arduina k GND obvodu (NIE JE -6V)
A tým je okruh hotový, teraz ku kódu. Predtým som spomenul, že použijeme vzorec y = mx+c, teraz teda budeme počítať m (sklon) a c (offset). V Arduine budeme čítať napätie, ale teplotná rovnica potrebuje, aby sme poznali odpor PT100, takže spôsob, akým to môžeme urobiť, je nahradiť Serial.println (temp) za Serial.println (V) a zaznamenať napätie a odpor pri dvoch teplotách. Pri tomto teste ponechajte PT100 na chvíľu, jednu alebo dve minúty, mimo dosahu zdrojov tepla (slnečné svetlo, ventilátor prenosného počítača, vaše telo atď.).
Prvý bod, ktorý môžeme vziať, je izbová teplota, keď máte zapojený a fungujúci obvod, zaznamenajte napätie (Vt1) načítané Arduinom na sériový monitor a rýchlo odpojte PT100 a zaznamenajte jeho odpor (Rt1), nedávajte ruky pri odpojení, pretože to zmení odpor. Pri druhej teplote by sme mohli sondu umiestniť do ľadovej vody alebo horúcej vody (pri použití horúcej vody buďte opatrní) a zopakujte to, čo sme urobili pred nájdením Vt2 a Rt2. Hneď po vložení sondy do kvapaliny počkajte minútu alebo dve, kým sa odpor ustáli. Ak vás zaujíma časová odozva PT100, zaznamenajte napätie na sériovom monitore približne každé 2 sekundy a môžeme z toho nakresliť graf a vysvetlím to neskôr. Pomocou dvoch napätí a odporov môžeme vypočítať sklon nasledovne:
Rt1 a Rt2 sú odpory pri týchto dvoch teplotách a to isté platí pre napätia Vt1 a Vt2. Zo sklonu a jednej z dvoch množín bodov, ktoré ste zaznamenali, môžeme vypočítať posun:
C by malo byť blízke vášmu skutočnému Roffovi, z mojej simulácie som vypočítal tieto hodnoty:
Z tohto odporu môžeme nájsť svoju teplotu podľa vzorca, ktorý sme mali na začiatku:
A je to, kód pre Arduino je uvedený nižšie, ak máte nejaké problémy, zanechajte komentár a pokúsim sa pomôcť.
Neexistujú žiadne obrázky obvodu, ktorý som urobil, ako som ho pred chvíľou vyrobil, a už nemám PT100 na prerobenie a testovanie, ale budete mi musieť veriť, že funguje. Nenašiel som veľa o PT100 na Instructables, takže som to urobil preto nemožným.
V ďalšom kroku budem hovoriť o časovej odozve PT100 a ak vás nezaujíma matematika, keď meriate zmenu teploty, nechajte PT100 približne minútu sedieť, než odčítate údaje.
Ak máte záujem vidieť ďalšie projekty, ktoré som urobil, navštívte moje
Blog: Roboroblog
Kanál YouTube: Roboro
Alebo sa pozrite na moje ďalšie pokyny: tu
Ak sa HTML zmýli s kódom nižšie, kód je priložený
* Tento kód vypočítava teplotu pomocou PT100
* Napísal 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
Preto som spomenul, že PT100 má pomalú odozvu, ale môžeme získať vzorec pre aktuálnu teplotu odčítaný PT100 kedykoľvek t. Odozva PT100 je odpoveďou prvého poriadku, ktorú je možné zapísať Laplaceovým výrazom, tj. Prenosovou funkciou, ako:
kde tau (τ) je časová konštanta, K je zisk systému a s je Laplaceov operátor, ktorý je možné zapísať ako jω, kde ω je frekvencia.
Časová konštanta vám hovorí, ako dlho trvá systému prvého rádu, aby sa usadil na svojej novej hodnote, a pravidlo alebo pravidlo hovorí, že 5*tau je to, ako dlho trvá, kým sa ustáli v novom ustálenom stave. Zisk K vám povie, ako veľmi bude vstup zosilnený. Pri PT100 je zisk to, koľko sa zmení odpor vydelený zmenou teploty. Po vybratí dvoch náhodných hodnôt z tohto technického listu som získal zisk 0,3856 ohm/C.
Predtým, ako som povedal, môžete zaznamenávať napätie každé 2 s po vložení sondy do kvapaliny, horúcej alebo studenej, z toho môžeme vypočítať časovú konštantu systému. Najprv musíte identifikovať, kde je počiatočný bod a koncový bod, pričom počiatočným bodom je napätie predtým, ako vložíte sondu do kvapaliny, a koncový bod, keď sa usadí. Potom ich odčítajte a to je zmena napätia v kroku. Test, ktorý ste vykonali, bol skokovou zmenou, ktorá je náhlou zmenou vstupu do systému, pričom krokom je teplota. Teraz vo svojom grafe prejdite na 63,2% zmeny napätia a tento čas je časová konštanta.
Ak zapojíte túto hodnotu do prenosovej funkcie, potom máte vzorec na opis frekvenčnej odozvy systémov, ale to nie je to, čo chceme teraz, chceme skutočnú teplotu v čase t na krok v teplote, takže ideme musieť vykonať inverznú Laplaceovu transformáciu kroku do systému. Prenosová funkcia systému prvého rádu so zadaním kroku je nasledovná:
Kde Ks je veľkosť kroku, tj teplotný rozdiel. Povedzme, že sonda je usadená pri 20 ° C, umiestnená do vody pri 30 ° C a sonda má časovú konštantu 8 s, prenosová funkcia a vzorec časovej domény je nasledujúci:
Δ (t) v tomto prípade znamená impulz, tj. Posun DC o 20 stupňov C, pri výpočte môžete do svojich rovníc napísať iba 20. Toto je štandardná rovnica pre krok do systému prvého poriadku:
Vyššie uvedené vypočítava teplotu v čase t, ale bude to fungovať pre napätie, pretože sú navzájom úmerné, potrebujete iba počiatočnú a koncovú hodnotu, časovú konštantu a veľkosť kroku. Webová stránka s názvom Symbolab je skvelá na kontrolu, či je vaša matematika správna, dokáže Laplaceovo, integráciu, diferenciáciu a mnoho ďalších vecí a ponúka všetky kroky na ceste. Inverznú Laplaceovu transformáciu vyššie uvedeného nájdete tu.
Odporúča:
Meranie času (hodiny na meranie pásky): 5 krokov (s obrázkami)
Meranie času (hodiny na meranie pásky): Pre tento projekt sme (Alex Fiel a Anna Lynton) vzali každodenný merací nástroj a urobili z neho hodiny! Pôvodný plán bol motorizovať existujúci zvinovací meter. Pri tom sme sa rozhodli, že bude jednoduchšie vytvoriť si vlastnú škrupinu,
Meranie teploty pomocou XinaBoxu a termistora: 8 krokov
Meranie teploty pomocou XinaBoxu a termistora: Zmerajte teplotu kvapaliny pomocou analógového vstupu xChip od XinaBoxu a sondy termistora
Zostavte zariadenie na meranie teploty Apple HomeKit pomocou ESP8266 a BME280: 10 krokov
Zostavte zariadenie s teplotným senzorom Apple HomeKit pomocou ESP8266 a BME280: V dnešnom návode vyrobíme cenovo dostupný snímač teploty, vlhkosti a vlhkosti buď na základe snímača teploty/vlhkosti AOSONG AM2302/DHT22 alebo BME280, senzora vlhkosti YL-69 a platformu ESP8266/Nodemcu. A na zobrazenie
Meranie teploty pomocou PT100 a Arduina: 16 krokov
Meranie teploty pomocou PT100 a Arduina: Cieľom tohto projektu je navrhnúť, postaviť a otestovať systém snímania teploty. Systém bol navrhnutý tak, aby meral teplotný rozsah 0 až 100 ° C. Na meranie teploty bol použitý PT100 a je to odporový teplotný detektor (RTD)
Meranie teploty pomocou snímača teploty LM35 s Arduino Uno: 4 kroky
Čítanie teploty pomocou snímača teploty LM35 s Arduino Uno: Ahoj chlapci, v tomto návode sa naučíme používať LM35 s Arduino. Lm35 je teplotný senzor, ktorý dokáže čítať hodnoty teploty od -55 ° C do 150 ° C. Jedná sa o 3-terminálne zariadenie, ktoré poskytuje analógové napätie úmerné teplote. Hig