Quantcast
Channel: Tutoriály – Bastlírna HWKITCHEN
Viewing all articles
Browse latest Browse all 133

TinyLab: Teploměr

$
0
0

V posledním dílu seriálu o desce TinyLab jsme si představili, jak se dá používat fotorezistor. Dnes se podíváme, jak číst teplotu z dostupného teploměru.

Měření teploty

K elektronickému měření teploty můžeme použít různé typy součástek. Tou asi nejjednodušší je termistor. Termistor je součástka, která se změnou teploty mění svůj vnitřní odpor (podobně jako fotorezistor mění vnitřní odpor při změně intenzity osvětlení). Nevýhodou termistorů je jejich nelinearita. Vysvětleme si ji na příkladu:

Když při

  • 0°C naměříme odpor 1000Ω
  • při 1°C naměříme 2000Ω,

jaký odpor byste čekali při 2°C? 3000Ω? Právě že ne! Termistory mají nelineární průběh, což znesnadňuje přepočet jejich odporu na teplotu.

Z tohoto důvodu vznikly teploměry s lineárním průběhem, u nichž je přepočet na teplotu daleko jednodušší (vystačíme si s operacemi plus, mínus, krát a děleno).

Elektronické teploměry můžeme dále dělit na analogové a digitální. Z analogových teploměrů získáváme analogovou hodnotu, kterou jednoduše přepočteme na stupně. Digitální teploměry nám často posílají už hodnotu vyjádřenou ve stupních. Na desce TinyLab nalezneme analogový teploměr LM35.

Teploměr LM35

LM35 je na TinyLabu připojený na pin A3 Arduina. Fyzicky teploměr nalezneme v levém dolním rohu.

Jelikož je jeho výstupem analogová hodnota, musíme ji měřit pomocí funkce analogRead, podobně, jako jsme to dělali ve článku o potenciometru. V dokumentaci k teploměru uvidíme následující:

Teploměr LM35

Teploměr LM35

Znamená to tedy, že teploměr musíme napájet napětím mezi 4 a 20V (což Arduino s 5V splňuje). Dále také vyčteme, že na výstupu měříme napětí, které se se změnou teploty o jeden stupeň Celsia změní o deset milivoltů (1V = 1000mV). Pro 0°C naměříme 0V, 1°C 10mV, atd.

Arduino a LM35

Jak měřit napětí v Arduinu? Pomocí funkce analogRead!

Funkce analogRead nám vrací hodnoty mezi 0 a 1023. Tato hodnota je přímo úměrná napětí, které na měřený pin přivedeme. Toto napětí se může pohybovat v rozsahu od 0V do napájecího napětí – v našem případě 5V. Když si spojíme tyto dvě informace (rozsah 0-1023, napětí 0-5V), můžeme vyvodit následujícími kroky vzorec pro výpočet teploty ve °C.

Začneme tím, že si rozsah 0-1024 převedeme na rozsah 0 až 1. (Zápis 1024.0 je použit proto, aby nedošlo k zaokrouhlení výsledku na celá čísla – zde potřebujeme desetinná)

analogRead(pin) / 1024.0

Dále tento výsledek přepočteme na milivolty v rozsahu 0-5000mV (5V = 5000mV).

analogRead(pin) / 1024.0 * 5000

Z dokumentace LM35 víme, že 10mV odpovídá 1°C, tedy výslednou teplotu ve stupních celsia získáme následovně:

analogRead(pin) / 1024.0 * 5000 / 10

Výsledný vzoreček může po zkrácení vypadat například takto:

int celsius = analogRead(A3)/ 1024.0 * 500;

Měříme teplotu

S těmito vědomostmi už se můžeme pustit do programování. Začneme tím, že si vypíšeme změřenou teplotu po sériové lince. Nezapomeňte si zapnout přepínač u analogového pinu A3.

void setup() {
  Serial.begin(9600);
}

void loop() {
  int celsius = analogRead(A3) / 1024.0 * 500;

  Serial.println(celsius);

  delay(1000);
}

Hlídač teploty

V druhém příkladu si ukážeme, jak hlídat teplotu a v případě jejího překročení spustit bzučák.

int hranice = 26;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int celsius = analogRead(A3) / 1024.0 * 500;
  Serial.println(celsius);

  if(celsius >= hranice){
    tone(A1, 440, 500);
    delay(500);
    tone(A1, 600, 500);
    delay(500);  
  }
}

Napadá vás nějaké další zajímavé použití teploměru? Třeba pro jednoduchou meteostanici? Nebo pro spouštění větráku při překročení určité teploty? Podělte se s námi v komentářích.


Viewing all articles
Browse latest Browse all 133

Trending Articles


Re: Prosím o určení autora - google nepomáhá


Nelze se přihlásit na Facebook přes PC


Prodám Flexi pass - 3 200


Markéta Reinischová: Chceme s Filipem Jankovičem dítě!


Od: Martina


Podzemlje - epizoda 62


Defender


Plynový kotel DAKON DS 22G - 2 500


Gymnastické řemínky na hrazdu zn. Reisport, vel. č. 2: 590


P: NooK Soundelirium THE 12.6


Qube SP26 ( XTA DP226 ) signal processor - 12 000


Narovnání,vylisování bankovek


Javorina Holubyho chata


Tinylab: Tlačítka


Levasan Maxx není gel na klouby, nýbrž hnus


RNS315 couvací kamera


Kde najdu GameInput Service ve win 10?


Redmi Note 11 Pro+ 5G (PISSARO)


MV3 Vermona, Klingenthal, NDR


Hradcany 30h fialova razena 11 1/2 11 3/4



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>