DS18B20 Senzor teploty

Page

Stránky / Súčiastky ku Arduinu / Meranie teploty /

DS18B20 je digitálny senzor teploty s rozlíšením 9-12 bitov. Komunikuje pomocou rozhrania One Wire. Datasheet s podrobnosťami je na stránke výrobcu. Obvod je nutnosťou pre každého amatérskeho experimentátora a skôr alebo neskôr skončíte pri pokuse poskladať pomocou neho nejakú malú meteorologickú stanicu.

Popis obvodu

Bežný užívateľ si tento obvod kúpi v púzdre TO-92.

  • Pin1 - Sem sa pripojí GND.
  • Pin2 - Dátový prenos. Na tomto konektore je potrebné pripojiť pull-up rezistor s hodnotou 4,7 k (toto nie je potrebné dodržať úplne presne, možno pokojne použiť aj približnú hodnotu). Pull-up rezistor udržuje napätie na Pin2 na logickej jednotke (keď sa nič nedeje) a samotná komunikácia prebieha tak, že Arduino, alebo senzor ju podľa dohodnutého protokolu zhadzujú na nulu.
  • Pin3 - Napájanie. Napájanie je v rozsahu 3V - 5,5V, takže ho pripojíme na 5V z Arduina.

Obvod je možné pripojiť dvomi spôsobmi:

  • Externé napájanie - Sú pripojené všetky tri konektory. Takto budeme senzor pripájať v tomto príklade.
  • Parazitické napájanie - Tomuto sa nebudeme venovať, podrobnosti je možné dohľadať v datasheete. Na informáciu stačí vedieť, že sa dá takto ušetriť jeden vodič a DS18B20 si berie energiu cez Pin2 a uskladňuje si ju interne v kondenzátore.

Inštalovanie knižníc

Na použitie je potrebné nainštalovať dve knižnice:

  • OneWire - Samotný One Wire protokol. Knižnicu je možné si stiahnuť priamo zo stránky jej správcu, Paula Stoffregena. Alebo si ju nainštalujete priamo v správcovi knižníc. V adresári libraries po inštalácii pribudne adresár OneWire. V ňom je adresár examples, kde sa nachádza niekoľko príkladov a jeden z nich je použiteľný aj na senzor DS18B20.
  • Dallas Temperature - Toto nie je nevyhnutná knižnica, ale ak si ju nainštalujete, tak sa vám bude so senzorom pracovať pohodlnejšie. Knižnicu si možno stiahnuť zo stránky Dallas Temperature Control Library. V adresári libraries pribudne adresár DallasTemperature.
Po inštalácii nezabudnite reštartovať vývojové prostredie, ak by sa knižnice v ňom neobjavili. V ďalšom texte budeme využívať obe knižnice.

Pripojenie k Arduinu

Pripojenie je jednoduché. Presne podľa popisu zapojenia. Treba si len vybrať, ktorý digitálny vstup bude čítať údaje zo senzora. V tomto prípade je to digitálny pin 2.

Aké je rozlíšenie merania

Rozlíšenie merania je nepriamo úmerné času, ktorý potrebuje senzor na A/D prevod.

Rozlíšenie v bitoch Čas merania  Rozlíšenie merania
 9 93,75 ms  0,5 °C
 10 187,5 ms  0,25 °C
 11 375 ms  0,125 °C
 12 750 ms  0,0625 °C

Samozrejme, že každý bude chcieť merať v najvyššom rozlíšení a čo najčastejšie, ale treba rátať s viacerými problémami:

  • Spotrebuje to dosť času.
  • Príliš časté meranie spôsobuje mierne zahrievanie senzora.

Presnosť senzora je:

  • 0,5 °C v intervale -10 až 85 °C. Krivku presnosti merania nájdete v datasheete na obrázku (Typical Performance Curve).
  • 2 °C v intervale -55 až 125 °C.

V datasheete sa ešte môžete dočítať, že senzor obsahuje internú pamäť 8 bajtov, a z toho 3 bajty sa zálohujú do EEPROM. Sú to dva bajty pre alarm, čo je funkcia, ktorú v amatérskych podmienka asi nebudete potrebovať. Posledný bajt je konfiguračný register, v ktorom je uložené rozlíšenie merania.

Počas merania a počas zápisu do EEPROM senzor potrebuje prúd 1,5 mA.

Viac senzorov

Bez problémov môžeme pripojiť aj viac senzorov na jednu zbernicu One Wire. Každý senzor má svoje jedinečné číslo (adresu), pomocou ktorého s nim komunikujeme.

Prvé pripojenie senzora

Pred pokusmi so senzorom je vhodné si otestovať, ći je senzor správne pripojený. Na to je použiteľný príklad, ktorý je dodávaný priamo s knižnicou OneWire. Volá sa DS18x20_Temperature.ino. Voči priloženému obrázku sa líši pinom, na ktorom je pripojený senzor. V príklade je použitý pin 10.

Po spustení vypíše na sériový port všetky nájdené senzory. Napríklad  v tomto prípade vypísal informácie o dvoch pripojených senzoroch.

ROM = 28 8C 6E 45 6 0 0 8A
  Chip = DS18B20
  Data = 1 A3 1 4B 46 7F FF D 10 CE  CRC=CE
  Temperature = 26.19 Celsius, 79.14 Fahrenheit
ROM = 28 49 BD 44 6 0 0 61
  Chip = DS18B20
  Data = 1 A2 1 4B 46 7F FF E 10 D8  CRC=D8
  Temperature = 26.12 Celsius, 79.02 Fahrenheit
No more addresses.

Druhá možnosť je príklad z DallasTemperature, ktorý sa volá Tester.ino. Ten vypisuje údaje v nasledovnej podobe.

Dallas Temperature IC Control Library Demo
Locating devices...Found 2 devices.
Parasite power is: OFF
Found device 0 with address: 288C6E450600008A
Setting resolution to 9
Resolution actually set to: 9
Found device 1 with address: 2849BD4406000061
Setting resolution to 9
Resolution actually set to: 9
Requesting temperatures...DONE
Temperature for device: 0
Temp C: 24.50 Temp F: 76.10
Temperature for device: 1
Temp C: 24.50 Temp F: 76.10

Blog

Zoznam článkov, kde sa pracuje s týmto senzorom teploty:



Download
  • DS18B20 - Programmable Resolution 1-Wire Digital Thermometer

05.07.2016


Menu