Czujnik temperatury DS18B20 – cyfrowy 1-wire THT – Szczegóły na temat produktu i przykłady zastosowań

Czas czytania: 3 min.


DS18B20
jest cyfrowym czujnikiem temperatury umieszczonym w obudowie TO92 z trzema wyprowadzeniami do montażu przewlekanego (THT). Czujnik umożliwia precyzyjne wykonywanie pomiarów temperatury z rozdzielczością od 9 do 12 bitów. 

Czujnik posiada wbudowaną funkcję wyzwalania alarmu w przypadku, gdy pomiar temperatury przekroczy jej dolną lub górną wartość progową. Dzieje się to w zależności od ustawień wprowadzonych przez użytkownika. Nastawione wartości progowe są przechowywane w pamięci nieulotnej, tj. po odłączeniu napięcia zasilania i jego ponownym podłączeniu nawet po dłuższym czasie przestoju ustawienia wartości progowych temperatury będą zachowane. 

Czujnik DS18B20 komunikuje się z osprzętem zewnętrznym za pomocą interfejsu 1-Wire. Do funkcjonowania wymaga on pojedynczego pinu cyfrowego mikrokontrolera (zaprogramowanego w tryb wejścia) oraz masy. Ponadto zasilanie czujnika można doprowadzić bezpośrednio z linii danych, dzięki czemu nie ma potrzeby podłączania zewnętrznego zasilacza. Każdy z czujników DS18B20 ma zaimplementowany, 64-bitowy kod adresujący. Z jego pomocą mikrokontroler może łatwo rozpoznać, z którego czujnika pochodzi sygnał w przypadku, gdy więcej niż jeden czujnik jest podłączony do szyny komunikacyjnej 1-Wire. Czujnik sprawdzi się w różnych aplikacjach wymagających precyzyjnego pomiaru temperatury, takich jak np. termostaty, układy pomiarowe i diagnostyczne w automatyce przemysłowej, termometry medyczne, systemy klimatyzacji i ogrzewania i w wielu innych.

Specyfikacja techniczna cyfrowego czujnika temperatury

  • Obudowa: TO92
  • Napięcie zasilania: 3,0 – 5,5 V
  • Możliwość zasilania przez szynę danych (DQ)
  • Zakres pomiaru: -55°C – +125°C, z dokładnością ±0.5°C
  • Rozdzielczość pomiaru: 9-bit – 12-bit (od 512 do 4096 wartości)
  • Wbudowana pamięć EEPROM
  • Programowalne wartości progowe temperatury niezbędne do wyzwalania alarmu

Przykładowy kod programu w środowisku Arduino IDE

Aby podłączyć czujnik DS18B20 do Arduino, należy wyprowadzenie “VDD” podłączyć do szyny zasilania “5V” w Arduino, a wyprowadzenie “GND” do masy. Następnie wyprowadzenie “DQ” podłączamy do pinu cyfrowego nr 3 w sekcji “DIGITAL” na płytce Arduino. Aby zapewnić stabilność przesyłu danych, dodamy rezystor podciągający o wartości 3,3 kΩ podłączając go między wyprowadzeniami “VDD” i “DQ”. 

Następnie, po uruchomieniu środowiska Arduino IDE, musimy zainstalować niezbędne biblioteki. Dla obsługi protokołu 1-Wire została utworzona dedykowana biblioteka DallasTemperature.h. W celu instalacji biblioteki idziemy do menu głównego, klikając po kolei: Szkic -> Dołącz bibliotekę – > Zarządzaj bibliotekami… – po pojawieniu się okna “Menedżer bibliotek”, należy wyszukać frazę “DS18B20” i zainstalować bibliotekę. Do prawidłowego funkcjonowania biblioteki DallasTemperature.h potrzebna jest także instalacja biblioteki OneWire.h, którą również należy wyszukać i zainstalować. 

W kodzie programu musimy na początku zainicjować obie biblioteki, a następnie przypisać wyprowadzenie sygnału pomiarowego z czujnika do pinu cyfrowego nr 3 na płytce Arduino. Za pomocą funkcji begin() wyszukujemy wszystkie czujniki podłączone do magistrali 1-Wire i ustawiamy ich rozdzielczość na 12 bitów – w tym wypadku używamy pojedynczego czujnika. Funkcja requestTemperatures() wysyła do czujnika sygnał rozkazu przekształcenia zmierzonej temperatury na wartość bitową. Natomiast funkcja getTempCByIndex(deviceIndex) wykonuje odczyt wartości bitowej, która jest przekształcana na wartość liczbową temperatury w celu jej wyświetlenia na monitorze portu szeregowego. Podfunkcja (deviceIndex) określa adres czujnika na szynie danych. Gdy podłączyliśmy tylko jeden czujnik, wówczas należy w nawias wpisać wartość 0.

Kod przykładowego programu z użyciem czujnika DS18B20:

/*

Przykładowy program do obsługi cyfrowego czujnika temperatury DS18B20

*/

#include <OneWire.h> // inicjalizacja biblioteki OneWire.h

#include <DallasTemperature.h> // inicjalizacja biblioteki DallasTemperature.h

// Wyprowadzenie DQ czujnika jest podłączone do pinu dwustanowego nr 3 w płytce Arduino

#define ONE_WIRE_BUS 3

// Przyporządkowanie interfejsu OneWire do komunikacji z urządzeniem zewnętrznym

OneWire oneWire(ONE_WIRE_BUS);

// Przyporządkowanie biblioteki oneWire do biblioteki DallasTemperature

DallasTemperature sensors(&oneWire);

void setup(void)

{

sensors.begin(); // Uruchomienie bibliotek niezbędnych do obsługi czujnika

Serial.begin(9600); // Uruchomienie transmisji danych przez interfejs UART; Prędkość transmisji: 9600 bodów na sekundę

}

void loop(void)

{

// Wysłanie rozkazu pobrania pomiaru temperatury

sensors.requestTemperatures();

// Wyświetlanie pomiaru temperatury w stopniach Celsjusza

Serial.print("TEMPERATURA: "); //Wyświetlanie wyrazu "TEMPERATURA: " określającego rodzaj mierzonej wielkości

Serial.print(sensors.getTempCByIndex(0));

Serial.print((char)176);//Wyświetlenie znaku stopni temperatury według kodowania Unicode / UTF-8

Serial.print("C | ");//




// Wyświetlanie pomiaru temperatury w stopniach Fahrenheita

Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);

Serial.print((char)176); // Wyświetlenie znaku stopni temperatury według kodowania Unicode / UTF-8

Serial.println("F");




delay(400); //opóźnienie przed wykonaniem kolejnego pomiaru

}

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 5 / 5. Liczba głosów: 1

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Podziel się:

Picture of Grzegorz Galuba

Grzegorz Galuba

GG nie ma czasu na gadu-gadu - jest zawsze na bieżąco z nowościami z oferty, wybiera tylko najlepsze i dba, aby pojawiały się na czas. Jego rozległa wiedza o specyfikacjach technicznych produktów to nieocenione wsparcie dla całej ekipy. Do pracy przyjeżdża rowerem i już najwyższa pora, aby wszyscy zaczęli brać z niego przykład. Oaza spokoju.

Zobacz więcej:

Rafał Bartoszak

Problem Europejskich technologii

Nie sposób zaprzeczyć, że innowacyjność odgrywa kluczową rolę w długoterminowym rozwoju gospodarczym. Europa jednak napotyka pewne wyzwania w tym obszarze. W tym artykule przyjrzymy się im bliżej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ze względów bezpieczeństwa wymagane jest korzystanie z usługi Google reCAPTCHA, która podlega Polityce prywatności i Warunkom użytkowania.