INHOUDSOPGAWE:

Meet temperatuur vanaf PT100 met behulp van Arduino: 6 stappe (met foto's)
Meet temperatuur vanaf PT100 met behulp van Arduino: 6 stappe (met foto's)

Video: Meet temperatuur vanaf PT100 met behulp van Arduino: 6 stappe (met foto's)

Video: Meet temperatuur vanaf PT100 met behulp van Arduino: 6 stappe (met foto's)
Video: Van Sensor tot Embedded Systeem 2024, Julie
Anonim
Meet temperatuur vanaf PT100 met behulp van Arduino
Meet temperatuur vanaf PT100 met behulp van Arduino

Die PT100 is 'n weerstandstemperatuurdetektor (RTD) wat sy weerstand verander na gelang van die omringende temperatuur; dit word wyd gebruik vir industriële prosesse met stadige dinamika en relatief wye temperatuurreekse. Dit word gebruik vir stadige dinamiese prosesse omdat RTD's 'n stadige reaksietyd het (waaroor ek later meer praat), maar akkuraat is en 'n lae drywing oor tyd het. Wat ek u in hierdie instruksies gaan wys, voldoen nie aan die industriële standaard nie, maar dit stel u bloot aan 'n alternatiewe manier om temperatuur te meet as om die LM35 te gebruik, wat baie stokperdjies sal ken en die teorie van die kring sal wys kan op ander sensors toegepas word.

Stap 1: Komponente

1x PT100 (twee drade)

1x Arduino (enige model)

3x 741 bedieningsversterkers (LM741 of UA741)

1 x 80ohm weerstand

2x 3,9 kohms weerstande

2x weerstand van 3,3 kOhms

2x weerstand van 8,2 kOhms

2x weerstand van 47 kOhms

1x 5 khm potensiaalmeter

1x Twee terminale kragtoevoer of 8x 1.5V AA -batterye

Ek gebruik 'n tweedraad PT100, drie en vierdraad PT100's sal verskillende stroombane hê. Die weerstandswaardes vir die meeste hiervan hoef nie presies dieselfde te wees as hierbo nie, maar as daar 'n paar weerstande is, dws die 3.9Kohms, as u dit verruil het vir laat ons sê 5k, moet u beide vir 5k ruil soos dan moet dieselfde wees. As ons die kring kry, sê ek die effek van die keuse van verskillende waardes. Vir die operasie versterkers (op versterkers) kan u ander op versterkers gebruik, maar dit is die wat ek gebruik het.

Stap 2: Wheatstone Bridge

Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge
Wheatstone Bridge

Ek moet eers praat oor die formule om die temperatuur van die weerstand vir die PT100 te haal, voordat ek praat oor die eerste deel van die stroombaan, die formule vir die weerstand is soos volg:

Beeld
Beeld

waar Rx die PT100 -weerstand is, R0 die PT100 -weerstand by 0 grade C is, α die temperatuurweerstandskoëffisiënt is en T die temperatuur.

Beeld
Beeld

R0 is 100 ohm, aangesien dit 'n PT100 is, as dit 'n PT1000 was, sou R0 1000 ohm wees. α is 0,00385 ohm/grade C geneem uit die datablad. Daar is ook 'n meer akkurate formule wat hier gevind kan word, maar die formule hierbo is van toepassing op hierdie projek. As ons die formule omskakel, kan ons die temperatuur vir 'n gegewe weerstand bereken:

Beeld
Beeld

Gestel ons wil iets meet met 'n temperatuurbereik van -51,85 tot 130 grade C en ons plaas die PT100 in die stroombaan soos in prentjie 1. Gebruik die vergelyking hierbo en die vergelyking vir die spanning uit 'n spanningsverdeler (getoon in die eerste prentjie) kan ons die spanningsbereik bereken. Onder in die reeks T = -51,85 (80 ohm)

Beeld
Beeld

en by 130 grade (150 ohm):

Beeld
Beeld

Dit gee 'n reikwydte van 0.1187V en 'n GS -offset van 0.142, omdat ons weet dat ons temperatuur nooit onder -51.85 grade C sal val nie; dit sal die sensitiwiteit in die reeks waaroor ons omgee (80 tot 130 ohm) verminder as ons hierdie spanning versterk. Om van hierdie DC -offset ontslae te raak en ons sensitiwiteit te verhoog, kan ons 'n Wheatstone -brug gebruik wat in die tweede prentjie getoon word.

Die uitset van die tweede spanningsverdeler (Vb-) word van die eerste spanningsverdeler-uitset (Vb+) afgetrek met 'n differensiële versterker later. Die formule vir die uitset van die brug is slegs twee spanningsverdelers:

Beeld
Beeld

Die spanning vir die PT100 is 80 ohm en gebruik die ander waardes in die prent:

Beeld
Beeld

en vir Pt100 wat 150 ohm is:

Beeld
Beeld

Deur die Wheatstone te gebruik, word ons van die DC -offset ontslae en verhoog die sensitiwiteit na versterking. Noudat ons weet hoe die Wheatstone -brug werk, kan ons praat oor waarom ons 80ohms en 3.3kohms gebruik. Die 80ohms word op 'n manier verduidelik uit die formule hierbo, kies hierdie waarde (ons noem dit die offsetweerstand Roff) as die onderste bereik van u temperatuur of selfs beter, effens onder die onderkant van u reeks, as dit gebruik word vir 'n beheerstelsel vir temperatuurregulering of iets dergeliks, wil u weet hoe laag die temperatuur onder u temperatuur bereik word. As -51,85C die onderste van u reeks is, gebruik 74,975 ohm (-65 grade C) vir u Roff.

Ek het 3.3k vir R1 en R3 gekies om twee redes, om die stroom te beperk en die lineariteit van die uitset te verhoog. Aangesien die PT100 temperatuurweerstand verander, sal te veel stroom daardeur lei as gevolg van selfverhitting, sodat ek 'n maksimum stroom van 5-10mA gekies het. As die PT100 80ohms is, is die stroom 1,775mA so veilig onder die maksimum bereik. U verminder die weerstand om die sensitiwiteit te verhoog, maar dit kan 'n negatiewe uitwerking op die lineariteit hê, aangesien ons later die vergelyking van 'n lyn sal gebruik (y = mx+c) met 'n nie-lineêre uitset, sal foute veroorsaak. Die derde prentjie het 'n grafiek van die bruguitset met behulp van verskillende boonste weerstande, die soliede lyn is die werklike uitset en die stippellyn is die lineêre benadering. U kan sien in die donkerblou grafiek (R1 en R3 = 200 ohm) gee die grootste spanningsbereik, maar die uitset is die minste lineêr. Die ligblou (R1 & R3 = 3.3kohms) gee die kleinste spanningsbereik, maar die stippellyn en die soliede lyn word oorvleuel, wat wys dat die lineariteit baie goed is.

Verander hierdie waardes volgens u toepassing, en as u die spanning verander, moet u seker maak dat die stroom nie te hoog word nie.

Stap 3: Amplifikasie

Versterking
Versterking
Versterking
Versterking

In die laaste stap het ons gevind dat die uitsetbereik van die twee spanningsverdelers wat afgetrek is 0 tot 0,1187 was, maar ons het nie gepraat oor hoe om hierdie spannings af te trek nie. Hiervoor benodig ons 'n differensiële versterker wat die een invoer van die ander aftrek en dit versterk deur die versterking van die versterker. Die stroombaan vir 'n differensiële versterker word in die eerste prentjie getoon. U voer die Vb+ in die inverterende ingang en Vb- in die nie-inverterende ingang en die uitset is die Vb+- Vb- met 'n versterking van een, dws geen versterking nie, maar deur die weerstande in die prentjie by te voeg, voeg ons 'n wins van 5,731 by. Die wins word gegee deur:

Beeld
Beeld

Ra is R5 & R7 en Rb is R6 & R8, die spanning uit word gegee deur:

Beeld
Beeld

Daar is twee probleme met die aansluiting van hierdie versterker op die uitvoer van die brug, die laai -effek en die versterking. Om die versterking van die versterker te verander, moet u ten minste twee weerstande verander, aangesien die twee pare weerstande dieselfde moet wees, dus om twee potte met dieselfde waarde te hê, sal irriterend wees, daarom gebruik ons iets wat 'n instrumentasieversterker genoem word. waarvan ek hieronder praat. Die laai -effek is die insetweerstands in die versterker wat die spanningsval oor die PT100 beïnvloed, ons wil hê dat die spanning oor die PT100 onveranderd moet wees en om dit te kan doen, kan ons baie groot weerstande kies vir die insetweerstande, sodat die parallelle weerstand van die PT100 en die ingangsweerstand is baie naby aan die PT100 -weerstand, maar dit kan probleme veroorsaak met geraas en spanningsuitset wat ek nie gaan ingaan nie. Kies net die middelbereik in die Kohms -reeks, maar soos ek gesê het, is dit ook sleg om klein weerstande te hê, so ons verander die kring 'n bietjie.

In die tweede prentjie het ons die uitset van die brug wat gekoppel is aan 'n instrumentasie versterker wat 'n bufferversterker dien om die twee helftes van die stroombane (die brug en versterking) te skei, en dit kan ook die inset versterk deur slegs een potensiometer te verander (Rgain). Die wins van die instrumentasie versterker word gegee deur:

Beeld
Beeld

waar Rc die twee 3.9k weerstand bo en onder die pot is.

Deur Rgain te verminder, neem die versterking toe. Dan, by punt Va en Vb (versterkte Vb+ en Vb-), is dit net 'n differensiële versterker soos voorheen, en die totale wins van die stroombaan is net die winste saam vermenigvuldig.

Beeld
Beeld

Om u wins te kies, wil u iets doen soos ons voorheen met die Roff gedoen het; ons moet 'n weerstand kies net bo u maksimum temperatuur in u bereik, net as dit oorskry. Omdat ons die Arduino met 'n 5V adc gebruik, moet die maksimum uitset van die kring 5V wees by die maksimum temperatuur wat u gekies het. Kom ons kies die 150 ohm as die maksimum weerstand en die on-versterkte brugspanning was 0.1187V, die wins wat ons benodig, is 42.185 (5/0.1187)

Kom ons sê ons hou Ra, Rb en Rc as 8.2k, 47k en 3.9k, ons moet net die waarde vir die pot Rgain vind:

Beeld
Beeld

Om die volle 5 volt uit die temperatuurbereik wat ons gebruik te kry, verander die waarde van Rgain na 1,226k. Die uitgangsspanning wat uit die differensiaalversterker kom, word gegee deur:

Stap 4: Skakel die stroombaan aan

Skakel die stroombaan aan
Skakel die stroombaan aan
Skakel die stroombaan aan
Skakel die stroombaan aan
Skakel die stroombaan aan
Skakel die stroombaan aan

Dit is die laaste stap van die stroombaan; u het moontlik die Vcc+ en die Vcc- op die op-amp-stroombane opgemerk; dit is omdat hulle beide positiewe en negatiewe spanning nodig het om behoorlik te funksioneer. U kan enkelspoor-versterkers kry, maar ek het besluit om hierdie versterker te gebruik, want dit is wat ek rondgelê het. Dus sal ons +6V en -6V lewer; daar is drie maniere waarop ons dit kan doen. Die eerste word in die eerste prentjie getoon, waar ons twee kragbronne of twee uitgangsklemme van 'n enkele kragtoevoer het, beide by 6V het en 'n positiewe uitset verbind met die negatiewe van die ander. Die 6V van die boonste aanbod sal ons +6V wees, die positiewe van die onderste toevoer is die GND en die negatiewe van die onderste toevoer is die -6V. KONTAK DIT SLEGS AS DIT AS DIE BRENGSTE VAN DIE TWEE VERSKAFFERS GESKEID IS OF DIT JOU KRAGTOEVOER BESKADIG. Alle kommersiële kragtoevoer sou GND's geskei het, maar as u wil kontroleer, gebruik die kontinuïteitstoetser op u multimeter, as dit gons, moet u nie hierdie opstelling gebruik nie en die volgende een gebruik. Op my tuisgemaakte voorraad het ek die lont geblaas.

In die tweede prentjie is die tweede opstelling wat ons kan hê; dit vereis wel dat een toevoer dubbel die spanning van die ander het, maar dit beskadig nie die toevoer as die GND's gekoppel is nie. Ons het twee voorrade, een by 12V en 'n ander op 6V. Die 12V sal optree as ons +6V, die 6V uit die tweede toevoer sal dien as die GND en die twee werklike GND's uit die voorraad sal optree as -6V.

Hierdie laaste opstelling is vir die kragtoevoer met slegs een uitset; dit gebruik 'n bufferversterker van versterking 1 om 'n virtuele grond te skep deur die helfte van die voedingsspanning deur die bufferversterker te plaas. Dan werk die 12V as die +6V en die werklike GND -terminale sal -6V wees.

As u batterye wil gebruik, stel ek die eerste opstelling voor, maar 'n probleem met batterye is dat die spanning daal namate hulle begin sterf en die spanning uit die brug ook daal, wat verkeerde temperatuurmetings gee. U kan natuurlik die spanning van die batterye lees en dit in die berekeninge insluit, of gebruik reguleerders en meer batterye. Uiteindelik is dit aan u.

Stap 5: Volledige stroombaan en kode

Volledige kring en kode
Volledige kring en kode
Volledige kring en kode
Volledige kring en kode
Volledige kring en kode
Volledige kring en kode

Die volledige stroombaan word hierbo getoon en dit is gemaak in Autodesk se nuwe Circuits.io waarmee u stroombane op 'n broodbord kan skep, 'n stroombaan -diagram kan wysig (getoon in foto 2) en PCB -diagramme, en die beste deel, waarmee u die stroombaan vanaf die broodbord kan simuleer en kan selfs 'n Arduino programmeer en in die broodbordmodus koppel, verder op die bladsy is die simulasie en u kan met twee potte rondspeel. As u die kring wil dupliseer en u eie waardes wil invoer, kan u die stroombaan hier vind. Die eerste pot is 70 ohm en in serie met 'n 80ohm-weerstand wat die PT100 met 'n reikwydte van 80-150 ohm simuleer, is die tweede pot die versterking van die instrumentversterker. Ongelukkig het ek 'n biblioteek wat ek afgelaai het vir my kode gebruik, sodat die Arduino nie in die onderstaande kring ingesluit is nie, maar daar is slegs twee ekstra drade wat u moet aansluit. As u gemakliker is met LTspice, het ek 'n asc -lêer by die kring ingesluit.

Koppel die A0 -pen aan die uitgang van die differensiële versterker

Koppel die GND van die Arduino aan die GND van die stroombaan (NIE DIE -6V)

En dit is die kring, klaar met die kode. Ek het vroeër genoem dat ons die formule y = mx+c sal gebruik, nou gaan ons m (die helling) en c (die offset) bereken. In die Arduino sal ons spanning lees, maar die temperatuurvergelyking het ons nodig om die weerstand van die PT100 te ken, dus kan ons dit doen deur Serial.println (temp) te vervang met Serial.println (V) en die spanning en weerstand by twee temperature. As u hierdie toets doen, laat die PT100 'n rukkie alleen, 'n minuut of twee, en bly weg van enige hittebronne (sonlig, skootrekenaarwaaier, u liggaam, ens.).

Die eerste punt wat ons kan neem, is kamertemperatuur, as u die stroombaan verbind en werk, teken dan die spanning (Vt1) wat deur die Arduino gelees is op die seriële monitor aan en ontkoppel die PT100 vinnig en teken die weerstand daarvan aan (Rt1). hande op die sonde wanneer u die verbinding ontkoppel, aangesien dit die weerstand sal verander. Vir die tweede temperatuur kan ons die sonde in yswater of warm water plaas (wees versigtig as u warm water gebruik) en herhaal wat ons gedoen het voordat ons Vt2 en Rt2 gevind het. Net nadat u die sonde in die vloeistof geplaas het, wag 'n minuut of twee totdat die weerstand verdik. As u belangstel in die tydrespons van die PT100, teken die spanning van die seriële monitor elke 2 sekondes aan, dan kan ons 'n grafiek hieruit teken, en ek sal dit later verduidelik. Deur die twee spannings en weerstande te gebruik, kan ons die helling soos volg bereken:

Beeld
Beeld

Rt1 en Rt2 is die weerstande by die twee temperature en dieselfde geld vir die spannings Vt1 en Vt2. Uit die helling en een van die twee stelle punte wat u aangeteken het, kan ons die offset bereken:

Beeld
Beeld

C moet naby u werklike Roff wees, uit my simulasie het ek hierdie waardes bereken:

Beeld
Beeld

Uit hierdie weerstand kan ons ons temperatuur bepaal met behulp van die formule wat ons aan die begin gehad het:

Beeld
Beeld

En dit is dit, die kode vir die Arduino is hieronder. As u probleme ondervind, los 'n opmerking en ek sal probeer om te help.

Daar is geen foto's van die kring wat ek gemaak het soos ek 'n rukkie gelede gemaak het nie, en ek hoef nie meer die PT100 te herskep en te toets nie, maar u moet my net glo dat dit werk. Daar is nie veel oor die PT100 op Instructables wat ek gevind het nie, daarom het ek hierdie ible gemaak.

In die volgende stap praat ek oor die tydsreaksie van die PT100, en as u nie in die wiskunde belangstel nie, laat die PT100 'n minuut of wat rus voordat u die lesing neem.

As u belangstel om ander projekte wat ek gemaak het, te besoek, besoek my

Blog: Roboroblog

YouTube -kanaal: Roboro

Of kyk na my ander instruksies: hier

As die HTML met die onderstaande kode deurmekaar is, word die kode aangeheg

* Hierdie kode bereken die temperatuur met behulp van 'n PT100

* Geskryf deur Roboro * Github: <a href = "https://github.com/RonanB96/Read-Temp-From-PT100-… <a href =" https://github.com/RonanB96/Read-Temp- Van-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

Tydsreaksie van PT100
Tydsreaksie van PT100

Dus het ek genoem dat die PT100 'n stadige reaksie het, maar ons kan te eniger tyd 'n formule kry vir die huidige temperatuur wat deur die PT100 gelees word. Die reaksie van die PT100 is 'n eerste orde reaksie wat in Laplace -terme geskryf kan word, dit wil sê oordragfunksie, soos:

Beeld
Beeld

waar tau (τ) die tydskonstante is, is K die wins van die stelsel en s is die Laplace -operateur wat geskryf kan word as jω waar ω frekwensie is.

Die tydkonstante vertel jou hoe lank dit neem om 'n eerste -orde stelsel te vestig op sy nuwe waarde, en 'n reël of duim is dat 5*tau is hoe lank dit sal neem om in die nuwe bestendige toestand te vestig. Die versterking K vertel jou hoeveel die insette versterk sal word. Met die PT100 is die toename hoeveel weerstandsveranderinge gedeel deur die temperatuurverandering, as ek twee ewekansige waardes uit hierdie datablad kies, kry ek 'n toename van 0,3856 ohm/C.

Voordat ek gesê het dat u die spanning elke 2 sekondes kan opneem nadat u die sonde in die vloeistof warm of koud gesit het, kan ons die tydkonstante van die stelsel bereken. Eerstens moet u identifiseer waar die beginpunt en eindpunt is, die beginpunt is die spanning voordat u die sonde in die vloeistof plaas en die eindpunt wanneer dit gaan lê. Trek hulle dan af, en dit is die spanningsverandering van die stap; die toets wat u uitgevoer het, was 'n stapverandering, wat 'n skielike verandering in die inset van 'n stelsel is, die temperatuur is temperatuur. Gaan nou na u grafiek na 63,2% van die spanningsverandering, en hierdie tyd is die tydkonstante.

Beeld
Beeld

As u die waarde in die oordragfunksie aansluit, het u die formule om die frekwensierespons van die stelsels te beskryf, maar dit is nie wat ons nou wil hê nie; ons wil die werklike temperatuur op 'n tydstip t vir 'n stap in temperatuur hê, so ons gaan 'n omgekeerde Laplace -transformasie van 'n stap in die stelsel moet uitvoer. Die oordragfunksie van 'n eerste-orde stelsel met 'n invoer van 'n stap is soos volg:

Beeld
Beeld

Waar Ks die stapgrootte is, dit wil sê die temperatuurverskil. Kom ons sê dat die sonde op 20 grade C gevestig is, in water by 30 grade C geplaas word en die sonde 'n tydskonstante van 8s het, die oordragfunksie en tyddomeinformule is soos volg:

Beeld
Beeld

Die δ (t) beteken in hierdie geval net 'n impuls, dws 'n DC -offset van 20 grade C; u kan net 20 in u vergelykings neerskryf wanneer u dit bereken. Dit is die standaardvergelyking vir die stap na 'n eerste -orde stelsel:

Beeld
Beeld

Bogenoemde bereken die temperatuur op tydstip t, maar dit werk vir die spanning, aangesien dit eweredig is aan mekaar; u benodig net die begin- en eindwaarde, tydkonstante en trapprootte. 'N Webwerf genaamd Symbolab is 'n uitstekende manier om na te gaan of u wiskunde reg is, dit kan Laplace, integrasie, differensiasie en vele ander dinge doen, en dit gee u al die stappe op die pad. Die omgekeerde Laplace -transformasie van bogenoemde kan hier gevind word.

Aanbeveel: