Witam wszystkich, w dzisiejszym poście przyjrzymy się jak połączyć czujnik temperatury Dallas 18B20 z Arduino.
Na rynku dostępnych jest wiele czujników temperatury takich jak LM35, DHT11 itp. ale osobiście najbardziej lubię Dallas 18B20, ponieważ daje on najdokładniejszy wynik do czterech miejsc po przecinku. Działa on na pojedynczym przewodzie i przesyła wszystkie dane przez ten przewód. Kolejną zaletą tego przewodu jest możliwość podłączenia wielu czujników za pomocą jednej linii danych. Powinieneś również spojrzeć na tekst jak używać 18B20 w Proteus ISIS.
W dzisiejszym poście pobierzemy wartość z tego czujnika, a następnie wyświetlamy ją na terminalu szeregowym oraz na wyświetlaczu ciekłokrystalicznym (LCD). Otrzymamy wartości w stopniach Celsjusza. Połączenie 18B20 z Arduino nie jest trudne. Dostępne są również biblioteki Arduino, przy użyciu których można dość łatwo połączyć 18B20 z Arduino. Zacznijmy od połączenia 18B20 z Arduino.
Współpraca czujnika temperatury 18B20 z Arduino
Jak wyjaśniłem wcześniej, działa on na pojedynczym przewodzie i stąd będziemy potrzebować biblioteki 1-wire dla Arduino wraz z biblioteką 18B20.
Po pobraniu biblioteki (linki na końcu artykułu), umieść ją w folderze libraries swojego oprogramowania Arduino.
Teraz uruchom ponownie oprogramowanie Arduino, a w sekcji Examples znajdziesz folder Arduino.
Następnie musimy połączyć nasz czujnik 18B20 z Arduino, więc zaprojektuj swój układ jak pokazano na poniższym rysunku:
Podłączamy więc czujnik 18B20 do Arduino jak pokazano na powyższym rysunku. Połączenia są dość proste i wyglądają następująco:
- Pin 1 z 18B20 z GND
- Pin 2 układu 18B20 z Pin 2 układu Arduino.
- Pin 3 z 18B20 z GND Arduino.
- Dodaj rezystor podciągający 4,7 kΩ na styku 2 układu 18B20.
Oto zdjęcia sprzętu, który zaprojektowaliśmy dla tego projektu, oto LCD 20×4, którego użyliśmy:
Poniższe zdjęcie pokazuje mały czujnik 18B20, użyty w tym projekcie. Wygląda na drobny, ale jest bardzo wydajny.
Oto zdjęcie przedstawiający kompletny projekt:
Teraz skopiuj poniższy kod i załaduj go na swoją płytkę Arduino, a następnie otwórz terminal szeregowy.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
void setup(void)
{
Serial.begin(9600);
Serial.println(“Welcome to TEP !!!”);
Serial.println(“www.TheEngineeringProjects.com”);
Serial.println();
sensors.begin();
lcd.begin(20, 4);
lcd.setCursor(5,0);
lcd.print(“Welcome to:”);
lcd.setCursor(1,2);
lcd.print(“www.TheEngineering”);
lcd.setCursor(4,3);
lcd.print(“Projects.com”);
delay(5000);
}
void loop(void)
{
sensors.requestTemperatures();
Serial.print(“Temperature : “);
Serial.println(sensors.getTempCByIndex(0));
//lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Temperature: “);
lcd.print(sensors.getTempCByIndex(0));
lcd.print(“C”);
delay(1000);
}
Po wgraniu kodu, gdy uruchomiłem projekt, zaczął on pokazywać wartości temperatury jak pokazano poniżej:
Jak widać, podaje on temperaturę mojego pokoju, która wynosi 23,56°C.
Stworzyłem również wideo dla dokładniejszej demonstracji, która jest podana poniżej.
Jest to dość prosty kod i nie wymaga wyjaśnień, ale jeśli potrzebujesz pomocy, zapytaj w komentarzach, a ja chętnie pomogę.