Spisu treści:

Kalibracja czujnika DS18B20 z Arduino UNO: 3 kroki (ze zdjęciami)
Kalibracja czujnika DS18B20 z Arduino UNO: 3 kroki (ze zdjęciami)

Wideo: Kalibracja czujnika DS18B20 z Arduino UNO: 3 kroki (ze zdjęciami)

Wideo: Kalibracja czujnika DS18B20 z Arduino UNO: 3 kroki (ze zdjęciami)
Wideo: Kurs Arduino odc 22 1-Wire i Czujnik temperatury DS18B20 2024, Listopad
Anonim
Kalibracja czujnika DS18B20 z Arduino UNO
Kalibracja czujnika DS18B20 z Arduino UNO
Kalibracja czujnika DS18B20 z Arduino UNO
Kalibracja czujnika DS18B20 z Arduino UNO
Kalibracja czujnika DS18B20 z Arduino UNO
Kalibracja czujnika DS18B20 z Arduino UNO

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

Przygotuj swoje urządzenie
Przygotuj swoje urządzenie

Oto lista tego, czego potrzebujesz:

  1. Arduino UNO (lub MEGA)
  2. Czujnik(i) DS18B20
  3. 4kOhm - rezystancja 5kOhm (użyłem 5k1Ohm)
  4. Ekran LCD do odczytu wartości (można też użyć laptopa i po prostu odczytać je na monitorze szeregowym)
  5. 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

Kalibracja dwupunktowa
Kalibracja dwupunktowa
Kalibracja dwupunktowa
Kalibracja dwupunktowa
Kalibracja dwupunktowa
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: