Spisu treści:
- Krok 1: Przygotuj urządzenie
- Krok 2: Kalibracja dwupunktowa
- Krok 3: Używaj wartości, które otrzymujesz we właściwy sposób
Wideo: Kalibracja czujnika DS18B20 z Arduino UNO: 3 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
ZASTRZEŻENIE:
Urządzenie, które widzisz na zdjęciach, jest używane w innym projekcie jako Termostat do procesu wywoływania folii. Możesz znaleźć ten projekt tutaj. Aby skalibrować czujnik lub więcej niż jeden, potrzebujesz tylko tego, co znajdziesz w tym projekcie, nic więcej, a to też jest całkiem proste! Chodźmy!
Krok 1: Przygotuj urządzenie
Oto lista tego, czego potrzebujesz:
- Arduino UNO (lub MEGA)
- Czujnik(i) DS18B20
- 4kOhm - rezystancja 5kOhm (użyłem 5k1Ohm)
- Ekran LCD do odczytu wartości (można też użyć laptopa i po prostu odczytać je na monitorze szeregowym)
- Szkic, który użyje czujnika i pokaże jakoś wartości
Przede wszystkim musisz podłączyć moduły i czujnik do kontrolera. Skomplikowaną część LCD zostawiam do przeszukania w sieci, a podpowiem tylko jak podłączyć czujnik.
Zazwyczaj te czujniki są dostarczane z trzema kolorowymi przewodami: czarnym, czerwonym, żółtym. Pierwsze dwa dotyczą energii, a trzecie danych. Podłącz czarny do GNN, czerwony do Vcc (5V), a żółty do wejścia analogowego, powiedzmy A0.
Teraz połącz rezystancję między żółtym a czerwonym, aby zakończyć połączenia.
Podłącz również wyświetlacz LCD (sugeruję prosty wyświetlacz LCD 16x2 z połączeniem i2c, aby użyć tylko 4 przewodów) i gotowe przewody i kable.
Teraz szkic, który jest bardzo prosty:
#include "OneWire.h"
#include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire naszPrzewód1(ONE_WIRE_BUS_1); DallasCzujnik temperatury1(&ourWire1); #include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd (0x27, 16, 2); float RawValue =0;
void setup(){ lcd.init(); podświetlenie LCD(); czujnik1.początek(); sensor1.setResolution(11); } void loop(){ sensor1.requestTemperatures(); float RawValue = sensor1.getTempCByIndex(0); lcd.setCursor(0, 0); lcd.print("Czuj.1"); lcd.print(RawValue, 1); }
Jak widać korzystamy z biblioteki Dallas Temperature oraz ekranu LCD z połączeniem i2c.
W konfiguracji inicjujemy LCD i czujnik, aw pętli po prostu żądamy temperatury i przechowujemy wartość wewnątrz zmiennej RawValue, aby pokazać ją na LCD.
Jeśli chcesz, aby było to prostsze, po prostu użyj monitora szeregowego z następującym szkicem
#include "Wire.h"#include "OneWire.h" #include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1(ONE_WIRE_BUS_1); DallasCzujnik temperatury1(&ourWire1);
float RawValue =0;
pusta konfiguracja (){
opóźnienie (1000); Serial.początek(9600); czujnik1.początek(); sensor1.setResolution(11);
}
void loop(){ sensor1.requestTemperatures(); float RawValue = sensor1.getTempCByIndex(0); Serial.print("Czuj.1"); Serial.println(RawValue, 1); }
Teraz chodź za mną w rdzeniu projektu, aby skalibrować czujnik.
Krok 2: Kalibracja dwupunktowa
Coś, co trzeba najpierw wiedzieć
Aby skalibrować czujnik temperatury, musisz zmierzyć coś, o czym znasz temperaturę. Najprostszym sposobem na zrobienie tego w domu jest użycie wrzącej wody i kąpieli z topniejącego lodu, zwanej również kąpielą „trójpunktową”. W takich przypadkach wiemy, że na poziomie morza woda wrze w temperaturze 100°C. Pamiętaj, że aby dokonać dokładnego pomiaru, powinieneś znać swoją wysokość i obliczyć tam odpowiednią temperaturę wrzenia.
Możesz to sprawdzić tutaj!
Szczerze mówiąc należy sprawdzać ciśnienie atmosferyczne, a nie wysokość. Ale ten sposób jest wystarczająco dokładny.
Łaźnia trójpunktowa lub łaźnia lodowa to temperatura, w której woda występuje w trzech stanach: stałym, ciekłym i gazowym, która to temperatura wynosi 0,01°C. Dla uproszczenia użyjemy 0°C.
Znając wartość odczytaną przez czujnik i wartość, która powinna być, możemy zmienić surową wartość DS18B20 na coś bardziej poprawnego.
UWAGA: możesz również użyć większej temperatury, aby skalibrować czujnik, po prostu umieszczając go w innej substancji, której temperaturę wrzenia znasz, np. Eter (35°C), Pentan (36, 1°C), Aceton (56°C) lub Etanol (78, 37°C), ale te wrzące substancje wytwarzają wysoce łatwopalne gazy! Więc nie rób tego!
Gotująca się woda:
Wlej trochę wody do garnka i podgrzej, aż się zagotuje (powstają bąbelki gazu i woda sama się porusza). Zanurz czujnik w miejscu, w którym nie dotyka on niczego poza wodą. Poczekaj kilka minut i odczytaj wyświetlacz LCD lub monitor szeregowy
Temperatura powinna pozostać taka sama przez co najmniej jedną minutę. Jeśli tak, zapisz tę wartość. To jest twoja: wartość RawHigh.
Wanna trzypunktowa:
Teraz weź dużą szklankę (nie potrzebujesz niczego wielkiego ani garnka) i napełnij ją po brzegi kostkami lodu. Staraj się używać małych kostek lodu. Teraz napełnij 80% szklanki zimną wodą. Uzupełnij lodem, jeśli dźwignia spróbuje opuścić.
Teraz umieść czujnik w pojemniku z wodą/lodem i odczekaj półtorej minuty. Odczytaj temperaturę, która powinna pozostać taka sama przez co najmniej 30 sekund. Jeśli tak, zapisz to, że jest to twoja wartość RawLow.
Krok 3: Używaj wartości, które otrzymujesz we właściwy sposób
Więc teraz masz kilka ważnych wartości:
- SurowyWysoki
- RawLow
- OdniesienieWysoki
- OdniesienieNiski
Wartości referencyjne to oczywiście 99,9°C dla wrzącej wody (na mojej wysokości 22m) i 0°C dla topiącej się łaźni lodowej. Teraz oblicz zakresy dla tych wartości:
- RawRange = RawHigh - RawLow
- Zakres Referencyjny = Referencyjny Wysoki - Referencyjny Niski
Teraz możesz już używać tego czujnika w każdym innym projekcie, mając pewność, że zapewni on właściwy pomiar. Jak? Korzystając z wartości, którą otrzymałeś w projekcie, który utworzysz za pomocą tego czujnika.
W swoim przyszłym projekcie będziesz musiał użyć wartości, które przeczytałeś w tym i proponuję zrobić to używając tych samych nazw, których użyłem tutaj.
Zadeklaruj zmienne przed sekcją void setup(), tak jak poniżej:
float RawHigh = 99.6;float RawLow = 0.5;float ReferenceHigh = 99.9;float ReferenceLow = 0;float RawRange = RawHigh - RawLow;float ReferenceRange = ReferenceHigh - ReferenceLow;
Następnie za każdym razem, gdy użyjesz czujnika, możesz użyć następującego wzoru do obliczenia CorrectedValue:
float CorrectedValue = (((RawValue - RawLow) * ReferenceRange) / RawRange) + ReferenceLow;
RawValue to oczywiście odczyt czujnika.
Otóż to!
Teraz już wiesz, jak skalibrować czujnik DS18B20 lub dowolny inny czujnik, którego będziesz używać! Baw się dobrze!
Zalecana:
KALIBRACJA CZUJNIKA PH ARDUINO: 7 kroków
KALIBRACJA CZUJNIKA PH ARDUINO: W tym samouczku będziemy kalibrować czujnik pH EZO firmy Atlas Scientific za pomocą Arduino Uno. TEORIA KALIBRACJI Najważniejszą częścią kalibracji jest obserwowanie odczytów podczas procesu kalibracji. Urządzenie najłatwiej skalibrować w
Kalibracja czujnika wilgotności gleby: 5 kroków
Kalibracja czujnika wilgotności gleby: Na rynku dostępnych jest wiele mierników wilgotności gleby, które pomagają ogrodnikom zdecydować, kiedy podlewać rośliny. Niestety, złapanie garści ziemi i sprawdzenie koloru i tekstury jest tak samo niezawodne, jak wiele z tych gadżetów! Niektóre sondy nawet rejestrują
KALIBRACJA CZUJNIKA ORP ARDUINO: 3 kroki
KALIBRACJA CZUJNIKA ORP ARDUINO: W tym samouczku będziemy kalibrować czujnik EZO ORP (potencjał oksydacyjno-redukcyjny) firmy Atlas Scientific za pomocą Arduino Uno. TEORIA KALIBRACJI Najważniejszą częścią kalibracji jest obserwowanie odczytów podczas procesu kalibracji. To jest łatwe
KALIBRACJA CZUJNIKA TLENU ROZPUSZCZONEGO ARDUINO: 4 kroki
KALIBRACJA CZUJNIKA ROZPUSZCZONEGO TLENU ARDUINO: W tym samouczku kalibrujemy czujnik EZO rozpuszczonego tlenu (D.O) firmy Atlas Scientific za pomocą Arduino Uno. TEORIA KALIBRACJI Najważniejszą częścią kalibracji jest obserwowanie odczytów podczas procesu kalibracji. Najłatwiej jest skalibrować
KALIBRACJA CZUJNIKA Zasolenia ARDUINO: 9 kroków
KALIBRACJA CZUJNIKA ZAsolenia ARDUINO: W tym samouczku będziemy kalibrować czujnik zasolenia/przewodności K1.0 firmy Atlas Scientific za pomocą Arduino Uno. TEORIA KALIBRACJI Najważniejszą częścią kalibracji jest obserwowanie odczytów podczas procesu kalibracji. Najłatwiej