20

Arduino s teploměrem DALLAS DS18B20

Pomocí Arduina budeme měřit teplotu okolí, budeme potřebovat DALLAS DS18B20. 

Zapojte podle schémata na obrázku. Teploměr je schopen měřit v rozsahu -55 až +125 stupňů Celsia.

DS18S20-hookup-400x2371

 

Potřebujete

Knihovna OneWire.h

  1. Stáhněte si OneWire
  2. Rozbalte a vložte do C:\Program Files (x86)\Arduino\libraries (záleží na adresáři nainstalování Arduino SW)
  3. Nyní restartujte program Arduino, poté by vám měl program fungovat

Zdrojový kód

 


#include <OneWire.h>
int DS18S20_Pin = 3; //čidlo je připojeno na pinu 3

OneWire ds(DS18S20_Pin); 

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

void loop(void) {
float temperature = getTemp();
Serial.println(temperature);

delay(100); //pomalejší zobrazování teplot pro lepší čitelnost

}
float getTemp(){

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1);
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++) { // potřebujeme 9 bytů
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB);
float TemperatureSum = tempRead / 16;

return TemperatureSum;

}

Program zobrazuje teplotu na sériové lince ve stupních Celsia.

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

ArduinoTeam

Vytvářím návody pro Arduino, skvěle se orientuji v IT a označuji se za geeka. Miluji nové technologie, protože jsou úžasné. Budu rád, když můj malý magazín o Arduinu podpoříte! Děkuji moc, jste skvělí

  1. This is a single-piece, barrier-free shower. The model has a 3/4″ beveled threshold, center drain and eight-inch tile pattern finish.
    Caretakers have an easier time helping patients in and out of the tub.

    https://walk-tubs.com

  2. Super, určitě se najde plno lidí, kteří budou takový návod potřebovat.
    Komentáře se musí schvalovat, tak tu není zobrazen ihned. :-)

  3. zajímalo by me jak připojim několik těchto teplomeru na jednu sbernici, jak to adresovat

  4. Jak přesně spolu nekamarádí? Otevřel jsem ukázkový příklad k BH1750 (knihovny BH1750.h a Wire.h) a připojil k tomu knihovnu OneWire.h a zkusil to zkompilovat. Dopadlo to bez chyb.

  5. Nevím, nepřijde mi to nutně špatně. Pokud program vyčítá teplotu čidla příliš často, začne měření ovlivňovat proud 1 mA čidlem v aktivním stavu. Ale kde je limit četnosti měření, to je otázkou na pokus…

  6. Zdravím. Neporadili byste mi prosím nějaký nápad, jak průměrovat tato měření? Je na to nějaká knihovna?

  7. 7,5 mW je v pouzdře TO-92 zanedbatelné.Osobně mi Dsko nehřaje vůbec,ani v 92ce ani v soic8.Něco musí být špatně.

  8. Nechají se koupit již vodotěsně zalité v kovové trubičce s kusem kabelu. Ty jsou pro praktické použití lepší. Já ale používám samostatná čidla v pouzdře TO-92 a ta se zahřívají vždy znatelně. Když nebudeme uvažovat parazitní napájení, ale použití 3 drátů, tak v datasheetu je uveden standby proud 750 až 1000 nA a active proud 1 až 1.5 mA, což při 5V napájení už dá nezanedbatelný tepelný výkon se kterým je nutné počítat.

  9. Mi se to nezahřívalo vůbec. Asi záleží na obvodu a teplotě okolo. Díky za komentář! Určitě mnoho lidem pomůže. Pokud bys chtěl, pošli mi fotky tvých projektů a nějaký popis, rád jej zveřejním :-) info @ arduinonavody.eu

  10. Jenom praktická zkušenost – tyto čidla mají při měření dost velkou spotřebu a tím se zahřívají. Při opakovaném měření ve smyčce to v pohodě udělá při pokojové teplotě i plus 3 °C. Takže doporučuji připevnit na kus hliníku (např. starý chladič) a měřit v delších intervalech (např. 1 minuta)

  11. Teoreticky by to mohlo fungovat, když upravíte knihovnu OneWire, musíte ale najít řádky, které se nesnesou s BH1750FVI a upravit to. Nebo zkuste najít návod, jak to připojit bez knihovny – mělo by to jít Taky si můžete koupit ten mikrokontroler z Arduina a připojit k němu DALLAS. Z mikrokontroleru budete posílat hodnotu do arduino, tam už nebude potřeba knihovny.
    Mikrokontroler by mohl stát okolo 60 Kč
    Zkuste to prostudovat, třeba to vyřešíte i jinak. Také se můžete zeptat na zahraničním fóru, protože se tam pohybuje více lidí, kteří tomu rozumí.
    http://www.itnetwork.cz/arduino-samostatny-cip-atmega328p

  12. Zdravím. Jak připojit DS18B20 k arduinu spoječně s BH1750FVI když knihovny pro BH1750FVI a OneWire spolu „nekamarádí“ ? Nedá se DS18B20 připojit napřímo bez OneWire?

Napsat komentář

Vaše emailová adresa nebude zveřejněna.