Obsah:

Meranie teploty z PT100 pomocou Arduina: 6 krokov (s obrázkami)
Meranie teploty z PT100 pomocou Arduina: 6 krokov (s obrázkami)

Video: Meranie teploty z PT100 pomocou Arduina: 6 krokov (s obrázkami)

Video: Meranie teploty z PT100 pomocou Arduina: 6 krokov (s obrázkami)
Video: Как связать промышленные датчики 4–20 мА с ПЛК Raspberry Pi Pico | ПЛК Мицубиси FX1N 2024, November
Anonim
Meranie teploty z PT100 pomocou Arduina
Meranie teploty z PT100 pomocou Arduina

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

Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge
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:

Obrázok
Obrázok

kde Rx je odpor PT100, R0 je odpor PT100 pri 0 ° C, α je koeficient teplotnej odolnosti a T je teplota.

Obrázok
Obrázok

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:

Obrázok
Obrázok

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)

Obrázok
Obrázok

a pri 130 stupňoch (150 ohmov):

Obrázok
Obrázok

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:

Obrázok
Obrázok

Výstupné napätie pre PT100 je 80 ohmov a používa ostatné hodnoty na obrázku:

Obrázok
Obrázok

a pre Pt100 je 150 ohmov:

Obrázok
Obrázok

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

Zosilnenie
Zosilnenie
Zosilnenie
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ý:

Obrázok
Obrázok

Ra je R5 a R7 a Rb je R6 a R8, výstupné napätie je dané:

Obrázok
Obrázok

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ý:

Obrázok
Obrázok

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.

Obrázok
Obrázok

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:

Obrázok
Obrázok

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

Napájanie obvodu
Napájanie obvodu
Napájanie obvodu
Napájanie obvodu
Napájanie obvodu
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

Úplný obvod a kód
Úplný obvod a kód
Úplný obvod a kód
Úplný obvod a kód
Úplný obvod a kód
Ú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:

Obrázok
Obrázok

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:

Obrázok
Obrázok

C by malo byť blízke vášmu skutočnému Roffovi, z mojej simulácie som vypočítal tieto hodnoty:

Obrázok
Obrázok

Z tohto odporu môžeme nájsť svoju teplotu podľa vzorca, ktorý sme mali na začiatku:

Obrázok
Obrázok

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

Časová odozva PT100
Časová odozva 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:

Obrázok
Obrázok

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.

Obrázok
Obrázok

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á:

Obrázok
Obrázok

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:

Obrázok
Obrázok

Δ (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:

Obrázok
Obrázok

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: