Blog převážně jednočipový

Arduino a čidlo teploty DS18B20

Pokud chceme měřit teplotu můžeme požít čidlo DHT22, toto čidlo dokáže měřit teplotu a vlhkost. Pokud chceme ale měřit jen teplotu můžeme použít malinké čidlo DS18B20. Toto čidlo měří s v rozsahu -55 až 125 stupňů.

Samotný DS18B20 na www.aliexpress.com stojí 20,-Kč pokud ho budeme chtít zapouzdřený i s kabelem pak 27,-Kč.

Propojení čidla s arduinem je na následujícím obrázku. Rezistor by měl mít hodnotu 4.7 KΩ.

Program pro čtení hodnot z čidla:

#include <OneWire.h>
#include <DallasTemperature.h>

OneWire jednoDrat(7);
DallasTemperature teplomer(&jednoDrat);

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

void loop()
{
  teplomer.requestTemperatures();
  float teplota = teplomer.getTempCByIndex(0);
  char s[20];
  byte tDes=(teplota-(int)teplota)*10;
  sprintf(s,"Teplota: %d.%d C",(int)teplota,tDes);
  Serial.println(s);
  delay(1000);
}

Knihovnu DallasTemperature naleznete zde https://github.com/milesburton...ol-Library popřípadě zde DallasTemperature.zip.

Pro zobrazení hodnoty teploty na jedno desetinné místo jsem použil způsob ve kterém nejdříve zobrazím celou část hodnoty a pak zbytek vynásobený číslem 10.

Vytvořeno: 2016-02-11 20:33:27
Změněno: 2016-02-14 20:16:38
Autor
2020-10-20 18:31:16
Proc Vam meri DS vetsi teplotu nevim, mozna ho mate ve stejnem miste jako arduino a to Vam topi (pokud to mate v krabicce). Ale pokud vite ze to premeruje treba konstantne o 4 stupne tak samozrejmne muzete upravit program. Napriklad hned po zmereni upravit hodnotu teploty
(teplota=teplota -4.0) .
Jiří Binar
2020-10-19 11:16:34
Dobrý den, měl bych na Vás dotaz. Zkoušel jsem připojit DS18B20 z aliexpesu na desku NODEMCU, ale deklarovaná teplota se mi zdá o 3-5 st.C vyšší. Připojil jsem na DS na desku D1 mini - stejný výsledek. Zkoušel jsem připojení odporu proti 5V i 3V3, beze změny. Vyměnil jsem DS za nový (zakoupený v GMelektronic), ale výsledek stejný. Netušíte prosím, kde by mohl být problém? Případně mohu někde SW upravit teplotu (tzn. odečíst od naměřené teploty 3 st. a následně Serial.print??? Děkuji za ochotu!

Napsat komentář