Měření teploty je jeden z nejběžnějších úkolů. Teplota se měří pomocí tzv. termistorů. Jedná se o rezistory, které v závislosti na teplotě svůj odpor mění podle přesně definované charakteristiky. Termistory mohou mít buď pozitivní, nebo negativní teplotní koeficient. Pozitivní teplotní koeficient (PTC) znamená, že se zvyšující se teplotou odpor termistoru roste. U negativního teplotního koeficientu (NTC) naopak odpor se zvyšující se teplotou klesá.

Závislost odporu na teplotě není ani u jednoho typu lineární (přímková), ale v případě PTC je výrazně lineárnější než u NTC. Naopak NTC mají mnohem větší citlivost.

Měření teploty s termistorem PT100

Jednotlivé varianty jak u PTC tak u NTC termistorů se rozlišují podle odporu při teplotě 25°C. Velmi oblíbeným PTC termistorem je platinová PT100 s odporem 100Ω při 25°C. U NTC jsou nejčastější hodnoty odporu 10kΩ a 100kΩ při 25°C.

Výpočet

Vztahy pro měření teploty s termistorem PT100

Zapojení

Termistor připojíme jako spodní část napěťového děliče, zatím co do horní části vložíme odpor o stejné hodnotě jako referenční odpor u termistoru. Rezistor můžeme zapojit jak na 5V tak i na 3.3V. Konkrétní hodnota napětí nemá na měření podstatný vliv, avšak pouze v případě, že je tato hodnota současně referenčním napětím A/D převodníku. Při volbě 3.3V bude přes NTC protékat menší proud a samovolné ohřívání termistoru měřícím proudem bude tak nižší.

Schéma zapojení měření teploty s termistorem PT100

int termPin = 0;      // Analogový pin, ke kterému je termistor připojen
int termNom = 10000;  // Referenční odpor termistoru
int refTep = 25;      // Teplota pro referenční odpor
int beta = 3977;      // Beta faktor
int rezistor = 10000; // hodnota odporu v sérii

void setup(void) {
  Serial.begin(9600);
  //použití externího pinu AREF jako referenčního napětí pro A/D převodník
  analogReference(EXTERNAL);
}

void loop(void) {
  float napeti;
  //změření napětí na termistoru
  napeti = analogRead(termPin);

  // Konverze změřené hodnoty na odpor termistoru
  napeti = 1023 / napeti - 1;
  napeti = rezistor / napeti;

  //Výpočet teploty podle vztahu pro beta faktor
  float teplota;
  teplota = napeti / termNom;         // (R/Ro)
  teplota = log(teplota);             // ln(R/Ro)
  teplota /= beta;                    // 1/B * ln(R/Ro)
  teplota += 1.0 / (refTep + 273.15); // + (1/To)
  teplota = 1.0 / teplota;            // Převrácená hodnota
  teplota -= 273.15;                  // Převod z Kelvinů na stupně Celsia

  Serial.print("Teplota je: ");
  Serial.print(teplota);
  Serial.println(" *C");

  delay(1000);
}
FB tw

Další podobné články