Měření teploty s termistorem

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.

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

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žší.

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);
}

Další podobné články

Saimon říká:

Hra „Simon říká“ realizovaná pomocí Arduina je skvělým projektem, jehož cílem je spojit zábavu s učením a rozvojem technických dovedností. Hráč se snaží zapamatovat a správně zopakovat sekvenci světelných nebo zvukových signálů, čímž si trénuje paměť, koncentraci a rychlé reakce.

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy.