Termisztorokról általánosságban
A termisztor egy olyan két kivezetésű áramköri elem, amely hő hatására számottevően megváltoztatja elektromos ellenállását – az ellenállás-változás nagysága milliószorosa a fémeknél tapasztalt változásnak. Minden termisztor a termorezisztivitás jelenségén, azaz az elektromos ellenállás hőmérséklet-függőségének felhasználásán alapszik. Az ellenállás változás kétirányú lehet, ha a termisztor ellenállása
• csökken a hőmérséklet emelésével akkor negatív, ha (Negative Temperature Coefficient or NTC)
• ha nő a hőmérséklet emelésével akkor pozitív karakterisztikájú termisztorról beszelünk (Positive Temperature Coefficient or PTC).
Hőmérséklet mérés
Ezt egy Arduino modulal fogjuk megoldani. Ellenállást nem, feszültséget viszont tudunk mérni Arduinoval. Két ellenállással feszültségosztót hozunk létre, aminek az egyik ellenállása fix (10K) a másik a termisztor aminek ellenállása a hőmérséklet függvényében változik. A feszültségosztó egy olyan négypólus, amelyet legegyszerűbb esetben két sorba kapcsolt ellenállás alkot. Ha az osztóra feszültséget kapcsolunk, akkor az ellenállásokon átfolyó áram azokon feszültségesést hoz létre. A két feszültség összege megegyezik a bemenő feszültséggel.
Us = I(R + Rt)
A feszültség esés a fix ellenálláson pedig
U0 = I⋅R
A fenti két egyenletet megoldva Rt-re a következőt kapjuk (részletek itt)
Rt = R((Us/U0) -1)
A továbbiakban ezt az egyenletet használjuk majd a termisztor ellenállásának a kiszámítására.
Kapcsolás
A Temperature Measurement with a Thermistor and an Arduino cikkből
U0 mérése és a Rt kiszámítása
// File: ThermistorVoltageResistance.pde // // Use a voltage divider to indicate electrical resistance of a thermistor. // -- setup() is executed once when sketch is downloaded or Arduino is reset void setup() { Serial.begin(9600); // open serial port and set data rate to 9600 bps Serial.println("Thermistor voltage and resistance measurement:"); Serial.println("\n Vo Rt"); } // -- loop() is repeated indefinitely void loop() { int ThermistorPin = 1; // Analog input pin for thermistor voltage int Vo; // Integer value of voltage reading float R = 9870.0; // Fixed resistance in the voltage divider float Rt; // Computed resistance of the thermistor Vo = analogRead(ThermistorPin); Rt = R*( 1023.0 / float(Vo) - 1.0 ); Serial.print(" "); Serial.print(Vo); Serial.print(" "); Serial.println(Rt); delay(200); }
Vo = analogRead(ThermistorPin); eredménye egy egész szám (integer) 0-1023 között, tehát ha az eredmény 1023, akkor az 5V-nak felel meg.
Az Rt = R*( 1023.0 / float(Vo) – 1.0 ); kiszámításánál lebegőpontos számot (float) használunk, hogy százados jegy pontossággal kapjuk meg az ellenállás értéket.
A kimeneti értékek így néznek ki
U0 | Rt |
487 | 10863.08 |
488 | 10820.59 |
488 | 10820.59 |
487 | 10863.08 |
488 | 10820.59 |
489 | 10778.28 |
A hőmérséklet számítása Rt-ből
Steinhart-Hart egyenlet
A c1, c2, c3 a termisztorra jellemző értékek, amit az egyes termisztorok adatlapja tartalmaz, ezt majd egyszerűen csak be kell helyettesíteni az egyenletbe.
folyt. köv….
31-05-2016
Néhány tesztelésre váró termisztor
NTC modstand – 1 Kohm 500mW Ø5mm
For temperatur compensation, temperatur measurement og control.
Egenskaber:
• Materiale: epoxy-coated
Tekniske detaljer:
• Nominel modstand: 1 kohm (ved 25°C)
• B-constant (±7%): 3700°K
• Maks. permissible strøm: 80mA
• thermal dissipation constant: 6mW/°C
• thermal time constant: 17sec.
• Størrelse: Ø5mm
• EAN Barcode: 5410329270308
NTC modstand – 10 Kohm 500mW Ø5mm
For temperatur compensation, temperatur measurement og control.
Egenskaber:
• Materiale: epoxy-coated
Tekniske detaljer:
• Nominel modstand: 10 kohm (ved 25°C)
• B-constant (±7%): 4100°K
• Maks. permissible strøm: 30mA
• thermal dissipation constant: 6mW/°C
• thermal dissipation constant: 15sec.
• Størrelse: Ø5mm
• EAN Barcode: 5410329270285
NTC modstand – 100 Ohm 500mW Ø5mm
For temperatur compensation, temperatur measurement og control.
Egenskaber:
• Materiale: epoxy-coated
Tekniske detaljer:
• Nominel modstand: 100 ohm (ved 25°C)
• B-constant (±7%): 3100°K
• Maks. permissible strøm: 200mA
• thermal dissipation constant: 6mW/°C
• thermal dissipation constant: 19sec.
• Størrelse: Ø5mm
• EAN Barcode: 5410329270261
NTC modstand – 100 Kohm 500mW Ø5mm
For temperatur compensation, temperatur measurement og control.
Egenskaber:
• Materiale: epoxy-coated
Tekniske detaljer:
• Nominel modstand: 100 kohm (ved 25°C)
• B-constant (±7%): 4400°K
• Maks. permissible strøm: 15mA
• thermal dissipation constant: 6mW/°C
• thermal dissipation constant: 16sec.
• Størrelse: Ø5mm
• EAN Barcode: 5410329270278
folyt. köv….
05-06-2016
10 Kohm 500mW Ø5mm teszt. A kapcsolás a cikk elején, csak itt A0-t használunk A1 helyett. A c1, c2, c3 értékeket természetesen a használt termisztortól függően változtatni kell.
#include <math.h> //loads the more advanced math functions void setup() { //This function gets called when the Arduino starts Serial.begin(115200); //This code sets up the Serial port at 115200 baud rate } double Thermister(int RawADC) { //Function to perform the fancy math of the Steinhart-Hart equation double Temp; Temp = log(((10240000/RawADC) - 10000)); Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp ); Temp = Temp - 273.15; // Convert Kelvin to Celsius //Temp = (Temp * 9.0)/ 5.0 + 32.0; // Celsius to Fahrenheit - comment out this line if you need Celsius return Temp; } void loop() { //This function loops while the arduino is powered int val; //Create an integer variable double temp; //Variable to hold a temperature value val=analogRead(0); //Read the analog port 0 and store the value in val temp=Thermister(val); //Runs the fancy math on the raw analog value Serial.println(temp); //Print the value to the serial port Serial.println(val); delay(1000); //Wait one second before we do it again }
forrás: http://computers.tutsplus.com/tutorials/how-to-read-temperatures-with-arduino–mac-53714
Arduino 1.6.8 soros plotterével felvett grafikon, ez maximum szemléltetésre jó, mivel nincs idő tengely, és a hőmérséklet létpék sem túl részletes.
Az első csúcs, amikor megdörzsöltem a termisztort, azonnal reagált, majd kb. 2 perc alatt visszaállt az eredeti hőmérsékletre. A második esetben jégkockát érintettem hozzá, itt a víz rövidre zárta az áramkört, gyorsan letöröltem. A harmadik esetben szintén jégkockát érintettem hozzá, kicsit körültekintőbben.
Már csak a megfelelő ház kiválasztása maradt hátra.
folyt. köv…
2016-07-02
Szenzorkalibrálás
Így első körben ez inkább csak egy összehasonlítás egy megbízható pontosságú referencia szenzorral. Végre lehetőségem nyílt méréseket végezni egy precíz 0,1 oC pontosságú szenzorral. A kapott eredmények igen biztatóak.
Egyelőre a szenzort még az acéltokozás nélkül teszteltem, így válaszideje, és hőmérséklet értékei, a fűtés, hűtés után eléggé különbözőek voltak. Stabilizálódás után 0,1oC eltérést mutattak, ami a céljainknak tökéletesen megfelel, a korrekciót majd egy megfelelő faktorral való szorzással korrigálom. Természetesen majd, ha a tokozás elkészül, akkor egy kétpontos kalibrációval fogjuk tökéletesíteni.
A referencia szenzor egy 15cm-es acéltokozású szenzor, amihez hozzáragasztottam a termisztort, ami csak a natúr epoxi réteggel volt borítva, így érthető, hogy másképp reagáltak, az eltérő hővezetési, hőátadási tulajdonságaik miatt.
Néhány érték a hőmérséklet stabilizálódása után:
t(h) | Termisztor T(oC) | Referencia T(oC) |
2,400556 | 25,71 | 25,6 |
2,403333 | 25,71 | 25,6 |
2,406111 | 25,71 | 25,6 |
2,408889 | 25,71 | 25,6 |
2,411667 | 25,71 | 25,6 |
2,414444 | 25,71 | 25,6 |
2,417222 | 25,71 | 25,6 |
2,42 | 25,71 | 25,6 |
2,422778 | 25,8 | 25,6 |
2,425556 | 25,71 | 25,6 |
Még ami fontos, hogy a kábelhossz 76cm, ami a két láb miatt 152cm, ennek szintén van ellenállása, így ezt is figyelembe kell venni.
Felhasznált irodalom
Temperature Measurement with a Thermistor and an Arduino
Class Notes for EAS 199B Gerald Recktenwald ∗ May 25, 2013
http://www.mikeelektronika.hu/elektrotechnika/eltech/12_a_feszltsgoszt.html
problémák a kapcsolással és a kóddal:
* a kapcsolás folyamatosan fogyaszt még akkor is amikor nem akarok mérétst végetni (termisztor egy eálláson keretszul foldre van kötve)
* mivel állandóan áram folyik a kapcsoláson a termisztor fűti magát igy meghamisítja a mérést
* a mérés végtelen ciklusban van, akkor is konverziót csinál amikor éppen nem is akarok mérni (megszakításban kéne működnie)
* fermentorhoz nekünk i2c kell
* delay 1000 miatt ha pl közvetlen a delay 1000után megszólítom akkor várni kell
ntc 10k termisztor ok, ezek alapján én bármilyen termisztort választhatok (több gyártó is készít 10ks ntc termisztort) csak az a lényeg, hogy ntc 10k-s legyen?
bármilyet választok az megfelelően beilleszhető majd a fermentorba?
Az enyém ilyen: https://www.elextra.dk/main.aspx?page=article&artno=H13417
Azonosítója alapján egy holland cég gyártja. A típus nem igazán fontos, az adatlapja alapján majd át kell írni a c1, c2, c3 értékeket és akkor jó lesz. Az tok átmérője 0,62cm, a termisztoré pont 0,5cm, nem gondolom, hogy ennél nagyobbat gyártanának. Szóval ha a termisztor átmérője max. 0,5cm akkor ok. Jaja a 10K az a lényeg
De majd ha lesz időm akkor tesztelek majd smd termisztort is.
Szigetelt kabelt hasznalva azert mar nem annyira zajos a jel. A nagy szakadas akkor volt, amikor csereltem a szenzort.
