Opis.
DS18B20 jest to cyfrowy czujnik temperatury wyprodukowany przez firmę Dallas Semiconductor.
Rys. 1.1. Cyfrowy czujnik temperatury DS18B20 - wygląd zewnętrzny
Specyfikacja najważniejszych elementów wygląda następująco:
- Zasilanie od 3 do 5,5 V
- Zakres pomiarowy od - 55 st. C do 125 st. C
- Dokładność +/- 0.5 st. C w zakresie -10 st. C do 85 st. C
- Rozdzielczość: od 9 do 12 bitów
- Obudowa THT TO92
Dokładność temperatury w deklarowanym zakresie temperaturowym, od -10st do +85st, z dokładnością do 0,5 st. Natomiast 2 st. C dla zakresu od -55 st. C do 125 st. C.
Jednym z ważniejszych ustawień termometru jest jego dokładność, którą można ustawić od 9 do 12 bitów. Co powoduje odpowiednio zmianę temperatury o 0,5 st. do 0,0625 st.
Podłączenie
Wyświetlacz LCD 2x16 z konwerterem LCM1602
VCC - 5V
GND - Masa
SCL - A5
SDA - A4
Przykład 1
W tym przykładzie zaprezentuje sposób pomiaru temperatury z wyświetlaniem danych na wyświetlaczu LCD 2x16.
#include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define ONE_WIRE_BUS 2 //Linia danych podpięta jest pod pin 2 Ardiuno OneWire oneWire(ONE_WIRE_BUS); LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Ustawienie adresu ukladu na 0x27 DallasTemperature sensors(&oneWire); //Przekazanie danych dotyczących One Wire do DallasTemperature void setup(void) { lcd.begin(16,2); lcd.backlight(); // Zalaczenie podwietlenia //Serial.begin(9600); sensors.begin(); //Włączenie biblioteki } void loop(void) { sensors.requestTemperatures(); lcd.setCursor(0,0); lcd.print("Temp1:"); lcd.setCursor(6,0); lcd.print(sensors.getTempCByIndex(0)); }
Przykład 2
Drugi przykład działa na takiej samej zasadzie. Jedynym wyjątkiem jest obsługa dwóch czujników temperatury. Linia danych, dzięki zastosowaniu interfeju komunikacyjnego 1-Wire, została podłączona do tego samego pinu.
Aby całość działała poprawie wystarczy dodać następujące linie kodu w pętli loop():
lcd.setCursor(0,1); lcd.print("Temp2:"); lcd.setCursor(6,1); lcd.print(sensors.getTempCByIndex(1)); delay(500);
W pierwszej linijce następuje zmiana pozycji kursora dla wyświetlacza, następnie wyświetlenie tekstu oraz ponowna zmiana położenia. Zostaje wyświetlona temperatura z czujnika o kolejnym indeksie (wcześniej wyświetlało z czujnika 0).