Hőmérő termisztorral

Szerettem volna egy analóg kinézetű hőmérőt készíteni, a lehető legegyszerűbb módon. Egyúttal bemutatom a termisztor (hőre változó ellenállás) használatát Arduinoval. Egy miniatűr olcsó szervomotor mutatja az értékeket a skálán. A most bemutatott amolyan prototípus, idővel készül egy másik félméteres vagy nagyobb skála mérettel. (sokkal komolyabb motorral)

Mivel a legolvasottabb bejegyzés az oldalon a feszültségmérő készítése, remélem ez is olyan népszerű lesz.

Alkatrészek:

R1: 10K ellenállás

R2: 10K termisztor (NTCM-10K-B3380) egyéb típus is megfelel

Szervo 180 ° egy SG90 használtam, nem a pontosság csúcsa de a célnak megfelel.

Arduino Uno

Áramkör:

Program:

Mielőtt ismertetném a programot, amelyet fel kell tölteni az Arduinoba beszéljünk egy kicsit a működésről.

A termisztor, mint ahogy a neve is mondja, nem más mint egy hőre változó ellenállás. Nő vagy csökken az ellenállása a környezeti hőtől függően. Több típusa is létezik de ebbe most nem megyek bele, akit bővebben érdekel, olvassa el ezt a cikket itt.

A fenti képen látható R1-R2 ellenállás nem más mint egy feszültség osztó, és az A0 bemeneten feszültséget mérünk az Arduinoval. (analog-digitál átalakító egyik bemenete)

Mivel az R2 termisztor, ezért a mért feszültség változik a hőmérséklet arányában.

R1 értékét tudjuk, a mért feszültséget tudjuk, így visszaszámoljuk R2 értékét ohmban a terheletlen feszültségosztók képletével. Képletet át kell rendezni.

Ezt a mért ellenállást számoljuk vissza C° -ra a Steinhat-Hart képlet segítségével. (Mivel ők megcsinálták nekünk már könnyű dolgunk van. Tehát “óriások vállán állunk”. 😀 )

Aki részletesen szeretne ismerkedni vele megteheti itt.

Steinhart-Hart képlet

T- hőmérséklet Kelvinben

A,B,C – Steinhart-Hart féle együtthatók

R- kiszámolt ellenállás

Kapott T értéket át kell váltanunk Celsiusba.

Jelen esetben egy szervót használok a hőmérséklet kijelzésére, egy analóg skálán. Fontosnak tartom megjegyezni hogy map() funkciót használok, ami csak fokos pontosságot fog adni, mert a kimenete egész szám, a bemenettől függetlenül. Tehát ha valaki nagyobb pontosságot szeretne, ne így váltsa át a Celsius fokot szervó szögre. 😀

Egyébként ezen a ponton használhatsz egy kijelzőt is, csak illesztened kell és hozzáadni a programhoz. Pl.: https://www.hirehamva.hu/wpblog/archivum/827

És akkor jöjjön a program.

#include <Servo.h>
int Lab = A0; //A/D átalakító A0 bemenete
float Homerseklet; //mért hőmérséklet
Servo szervo_ho; 
int szervoSzog = 0;    
boolean szervo_teszt = true;
const int szervoLab = 9; //szervo kimenet 9 láb
const float kalibracio = 1.00; //kalibráció a skálához képest Celsiusban
void setup() {

Serial.begin(9600); //soros kimenet inicializál
szervo_ho.attach(szervoLab); //szervo kimenet inicializál
}

void loop() {
  //csak egy szervo teszt induláskor, jól jön skála rajzolásnál
  if(szervo_teszt == true){
    szervo_teszt = false;
  for(int i=-10;i<=42;i++){
     // Serial.println(i);
 szervoSzog = map(i, -10, 42, 25, 180);
  // Serial.println(szervoSzog);
  szervo_ho.write(szervoSzog);
    delay(100); // növeld 5000-re skála rajzoláshoz
  }
  }else{
  
  Homerseklet=ho(Lab);
  Serial.println(Homerseklet);
  Homerseklet = Homerseklet + kalibracio;
 szervoSzog = map(Homerseklet, -10, 42, 25, 180);
  // Serial.println(szervoSzog);
  szervo_ho.write(szervoSzog);
  delay(2000);
  }
}
  //hőmérő funkció 
float ho(int x){
int dc;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
 dc = analogRead(x);

  R2 = R1 * (1023.0 / (float)dc - 1.0); //terheletlen feszültségosztók képlete
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); //Steinhart-Hart képlet
  Tc = T - 273.15;//Kelvin átváltása Celsiusba

return Tc;
}

Képek:
Megosztás:

Ez a weboldal sütiket használ. Az Uniós törvények értelmében kérem, engedélyezze a sütik használatát, vagy zárja be az oldalt. További információ

Az Uniós törvények értelmében fel kell hívnunk a figyelmét arra, hogy ez a weboldal ún. "cookie"-kat vagy "sütiket" használ. A sütik kicsik, teljesen veszélytelen fájlok, amelyeket a weboldal azért helyez el az Ön számítógépén, hogy minél egyszerűbbé tegye Ön számára a böngészést. A sütiket letilthatja a böngészője beállításaiban. Amennyiben ezt nem teszi meg, illetve ha az "Elfogadom" feliratú gombra kattint, azzal elfogadja a sütik használatát.

Bezárás