Obsah:
Video: Kalibrace senzoru DS18B20 s Arduino UNO: 3 kroky (s obrázky)
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
ODMÍTNUTÍ:
Zařízení, které vidíte na obrázcích, se používá v jiném projektu jako termostat pro proces vývoje filmu. Tento projekt najdete zde. Abyste mohli kalibrovat senzor nebo více než jeden, budete potřebovat právě to, co najdete v tomto projektu, nic víc a je to také docela základní! Pojďme!
Krok 1: Připravte své zařízení
Zde je seznam toho, co potřebujete:
- Arduino UNO (nebo MEGA)
- Snímače DS18B20
- 4kOhm - 5kOhm odpor (použil jsem 5k1Ohm)
- LCD obrazovka pro čtení hodnot (můžete také použít notebook a přečíst je na sériovém monitoru)
- Náčrt, který používá senzor a nějak ukazuje hodnoty
Nejprve musíte své moduly a senzor připojit k ovladači. Složitou část LCD nechám na vyhledávání na webu a řeknu vám jen, jak připojit senzor.
Obvykle jsou tyto senzory dodávány se třemi barevnými vodiči: černý, červený, žlutý. První dva jsou pro energii a třetí jsou pro data. Připojte černý k GNN, červený k Vcc (5V) a žlutý na analogový vstup, řekněme A0.
Nyní připojte odpor mezi žlutou a červenou a dokončete připojení.
Zapojte také LCD (doporučuji jednoduchý 16x2 LCD s i2c připojením k použití pouze 4 vodičů) a máte hotovo s kabely a kabely.
Nyní náčrt, který je super jednoduchý:
#include "OneWire.h"
#include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); Senzor teploty Dallas1 (& ourWire1); #include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd (0x27, 16, 2); float RawValue = 0;
neplatné nastavení () {lcd.init (); lcd.backlight (); sensor1.begin (); sensor1.setResolution (11); } void loop () {sensor1.requestTemperatures (); float RawValue = sensor1.getTempCByIndex (0); lcd.setCursor (0, 0); lcd.print ("Sens. 1"); lcd.print (RawValue, 1); }
Jak vidíte, používáme teplotní knihovnu Dallas a LCD obrazovku s připojením i2c.
V nastavení aktivujeme LCD a senzor a ve smyčce jednoduše požadujeme teplotu a uložíme hodnotu do proměnné RawValue, abychom ji mohli zobrazit na LCD.
Pokud to chcete mít jednodušší, použijte sériový monitor s následujícím náčrtem
#include "Wire.h" #include "OneWire.h" #include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); Senzor teploty Dallas1 (& ourWire1);
float RawValue = 0;
neplatné nastavení () {
zpoždění (1000); Serial.begin (9600); sensor1.begin (); sensor1.setResolution (11);
}
void loop () {sensor1.requestTemperatures (); float RawValue = sensor1.getTempCByIndex (0); Serial.print ("Sens. 1"); Serial.println (RawValue, 1); }
Nyní mě následujte v jádru projektu kalibrovat senzor.
Krok 2: Dvoubodová kalibrace
Nejprve něco vědět
Ke kalibraci termosenzoru musíte změřit něco, o čem znáte teplotu. Jednoduchý způsob, jak to udělat doma, je použít vroucí vodu a lázeň tajícího ledu, nazývanou také „lázeň s třemi body“. V takových případech víme, že voda vře při teplotě 100 ° C na hladině moře. Mějte na paměti, že k přesnému měření byste měli znát svou nadmořskou výšku a vypočítat tam správnou teplotu varu.
Můžete to zkontrolovat zde!
Abych byl upřímný, měli byste zkontrolovat atmosférický tlak a ne nadmořskou výšku. Ale ten způsob je dostatečně přesný.
Tříbodová lázeň neboli ledová lázeň je teplota, při které voda existuje ve třech stavech pevné látky, kapaliny a plynu, přičemž tato teplota je 0, 01 ° C. Pro zjednodušení použijeme 0 ° C.
S vědomím hodnoty, kterou snímač přečetl, a hodnoty, která by měla být, můžeme upravit základní hodnotu DS18B20 na něco správnějšího.
POZNÁMKA: Můžete také použít více teploty ke kalibraci senzoru, pouze vložením do jiné látky, o které znáte bod varu, jako je ether (35 ° C), Pentan (36, 1 ° C), aceton (56 ° C) nebo Ethanol (78, 37 ° C), ale tyto vroucí látky produkují vysoce hořlavé plyny! Tak to nedělej!
Vařící voda:
Nalijte trochu vody do hrnce a zahřívejte, dokud se nevaří (vyvíjejí se bubliny plynu a voda se sama míchá). Ponořte senzor tak, aby se nedotýkal ničeho jiného než vody. Počkejte několik minut a přečtěte si LCD nebo sériový monitor
Teplota by měla zůstat stejná po dobu nejméně jedné minuty. Pokud ano, zapište si tuto hodnotu. To je vaše: RawHigh hodnota.
Tříbodová koupel:
Nyní vezměte velkou sklenici (nepotřebujete nic obrovského ani hrnec) a naplňte ji až k hranici kostkami ledu. Zkuste použít malé kostky ledu. Nyní naplňte 80% sklenice studenou vodou. Pokud se páčka pokusí jít dolů, doplňte led.
Nyní vložte senzor do vody/ledu a počkejte jednu a půl minuty. Odečtěte teplotu, která by měla zůstat stejná po dobu nejméně 30 sekund. Pokud ano, zapište si, že je to vaše hodnota RawLow.
Krok 3: Použijte hodnoty, které získáte správným způsobem
Takže teď máte několik důležitých hodnot:
- RawHigh
- RawLow
- Reference Vysoká
- Reference Nízká
Referenční hodnoty jsou zjevně 99,9 ° C pro vroucí vodu (v mé nadmořské výšce 22 m) a 0 ° C pro tající ledovou lázeň. Nyní vypočítejte rozsahy těchto hodnot:
- RawRange = RawHigh - RawLow
- ReferenceRange = ReferenceHigh - ReferenceLow
Nyní jste připraveni používat tento senzor v jakémkoli jiném projektu, přičemž jste si jisti, že vám poskytne správné měření. Jak? Pomocí hodnoty, kterou jste zde získali v projektu, který s tímto senzorem vytvoříte.
Ve svém budoucím projektu budete muset použít hodnoty, které jste si přečetli v tomto, a doporučuji to udělat se stejnými názvy, jaké jsem použil zde.
Proměnné deklarujte před sekcí neplatné instalace () takto:
float RawHigh = 99,6; float RawLow = 0,5; float ReferenceHigh = 99,9; float ReferenceLow = 0; float RawRange = RawHigh - RawLow; float ReferenceRange = ReferenceHigh - ReferenceLow;
Než pokaždé, když použijete senzor, můžete pro výpočet CorrectedValue použít následující vzorec:
float CorrectedValue = ((((RawValue - RawLow) * ReferenceRange) / RawRange) + ReferenceLow;
RawValue je zjevně čtení snímače.
A je to!
Nyní víte, jak kalibrovat senzor DS18B20 nebo jakýkoli jiný senzor, který použijete! Bavte se!