DS18B20 Senzor teploty

Page

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

DS18B20 je digitální senzor teploty s rozlišením 9-12 bitů. Komunikuje pomocí rozhraní One Wire. Datasheet s podrobnostmi je na stránce výrobce. Obvod je nutností pro každého amatérského experimentátora a dříve nebo později skončíte při pokusu poskládat pomocí něho nějakou malou meteorologickou stanici.

Popis obvodu

Běžný uživatel si tento obvod koupí v pouzdře TO-92.

  • Pin1 - Sem se připojí GND.
  • Pin2 - Datový přenos. Na tomto konektoru je třeba připojit pull-up rezistor s hodnotou 4,7 k (toto není třeba dodržet naprosto přesně, lze klidně použít i přibližnou hodnotu). Pull-up rezistor udržuje napětí na PIN2 na logické jedničce (když se nic neděje) a samotná komunikace probíhá tak, že Arduino, nebo senzor ji podle dohodnutého protokolu shazují na nulu.
  • Pin3 - Napájení. Napájení je v rozsahu 3V - 5,5V, takže ho připojíme na 5V z Arduina.

Obvod lze připojit dvěma způsoby:

  • Externí napájení - Jsou připojeny všechny tři konektory. Takto budeme senzor připojovat v tomto příkladu.
  • Parazitické napájení - Tomuto se nebudeme věnovat, podrobnosti je možné dohledat v datasheetu. Na informaci stačí vědět, že lze takto ušetřit jeden vodič a DS18B20 si bere energii přes Pin2 a uskladňuje si ji interně v kondenzátoru.

Instalace knihoven

Pro použití je třeba nainstalovat dvě knihovny:

  • OneWire - Samotný One Wire protokol. Knihovnu je možné si stáhnout přímo ze stránky jejího správce, Paula Stoffregena. Nebo si ji nainstalujete přímo ve správci knihoven. V adresáři libraries po instalaci přibude adresář OneWire. V něm je adresář examples, kde se nachází několik příkladů a jeden z nich je použitelný i na senzor DS18B20.
  • Dallas Temperature - Toto není nezbytná knihovna, ale pokud si ji nainstalujete, tak se vám bude se senzorem pracovat pohodlněji. Knihovnu si lze stáhnout ze stránky Dallas Temperature Control Library. V adresáři libraries přibude adresář DallasTemperature.
Po instalaci nezapomeňte restartovat vývojové prostředí, pokud by se knihovny v něm neobjevily. V dalším textu budeme využívat obě knihovny.

Připojení k Arduinu

Připojení je jednoduché. Přesně podle popisu zapojení. Je třeba si jen vybrat, který digitální vstup bude číst údaje ze senzoru. V tomto případě je to digitální pin 2.

Jaké je rozlišení měření

Rozlišení měření je nepřímo úměrné času, který potřebuje senzor na A/D převod.

Rozlišení v bitech Doba měření  Rozlišení měření
 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

Samozřejmě, že každý bude chtít měřit v nejvyšším rozlišení a co nejčastěji, ale je třeba počítat s více problémy:

  • Spotřebuje to dost času.
  • Příliš časté měření způsobuje mírné zahřívání senzoru.

Přesnost senzoru je:

  • 0,5 °C v intervalu -10 až 85 °C. Křivku přesnosti měření naleznete v datasheetu na obrázku (Typical Performance Curve).
  • 2 °C v intervalu -55 až 125 °C.

V datasheetu se ještě můžete dočíst, že senzor obsahuje interní paměť 8 bajtů, a z toho 3 bajty se zálohují do EEPROM. Jsou to dva bajty pro alarm, což je funkce, kterou v amatérských podmínka asi nebudete potřebovat. Poslední bajt je konfigurační registr, v němž je uloženo rozlišení měření.

Během měření a během zápisu do EEPROM senzor potřebuje proud 1,5 mA.

Víc senzorů

Bez problémů můžeme připojit i více senzorů na jednu sběrnici One Wire. Každý senzor má své jedinečné číslo (adresu), pomocí kterého s nim komunikujeme.

První připojení senzoru

Před pokusy se senzorem je vhodné si otestovat, zda je senzor správně připojen. Na to je použitelný příklad, který je dodáván přímo s knihovnou OneWire. Jmenuje se DS18x20_Temperature.ino. Vůči přiloženému obrázku se liší pinem, na kterém je připojen senzor. V příkladu je použit pin 10.

Po spuštění vypíše na sériový port všechny nalezené senzory. Například v tomto případě vypsal informace o dvou připojených senzorech.

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žnost je příklad z DallasTemperature, který se jmenuje Tester.ino. Ten vypisuje údaje v následující podobě.

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

Seznam článků, kde se pracuje s tímto senzorem teploty:



Download
  • DS18B20 - Programmable Resolution 1-Wire Digital Thermometer

07.09.2019


Menu