Obsah:
Video: Kalibrácia senzora DS18B20 s Arduino UNO: 3 kroky (s obrázkami)
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
UPOZORNENIE:
Zariadenie, ktoré vidíte na obrázkoch, sa používa v inom projekte ako termostat pre proces vývoja filmu. Projekt nájdete tu. Aby ste mohli kalibrovať snímač alebo viac ako jeden, budete potrebovať presne to, čo nájdete v tomto projekte, nič viac a je to tiež celkom základné! Poďme!
Krok 1: Pripravte svoje zariadenie
Tu je zoznam toho, čo potrebujete:
- Arduino UNO (alebo MEGA)
- Snímače DS18B20
- 4kOhm - odpor 5kOhm (použil som 5k1Ohm)
- LCD obrazovka na čítanie hodnôt (môžete použiť aj prenosný počítač a načítať ich na sériovom monitore)
- Náčrt, ktorý používa senzor a nejako ukazuje hodnoty
Najprv musíte pripojiť svoje moduly a snímač k ovládaču. Zložitú časť displeja LCD nechám na vás, aby ste prehľadali web, a poviem vám len, ako pripojiť snímač.
Tieto senzory sa obvykle dodávajú s tromi farebnými vodičmi: čierny, červený, žltý. Prvé dve slúžia na energiu a tretie na dáta. Pripojte čiernu k GNN, červenú k Vcc (5V) a žltú na analógovom vstupe, povedzme A0.
Teraz prepojte odpor medzi žltou a červenou, aby ste spojenia dokončili.
Pripojte aj LCD (navrhujem jednoduchý 16x2 LCD s pripojením i2c, aby ste použili iba 4 vodiče) a káble a káble máte hotové.
Teraz je náčrt, ktorý je veľmi jednoduchý:
#include „OneWire.h“
#include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); Snímač teploty Dallas1 (& ourWire1); #include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd (0x27, 16, 2); float RawValue = 0;
void setup () {lcd.init (); lcd.backlight (); senzor1.begin (); sensor1.setResolution (11); } prázdna slučka () {sensor1.requestTemperatures (); float RawValue = sensor1.getTempCByIndex (0); lcd.setCursor (0, 0); lcd.print ("Sens. 1"); lcd.print (RawValue, 1); }
Ako vidíte, používame knižnicu teploty Dallas a LCD obrazovku s pripojením i2c.
V nastavení iniciujeme LCD a senzor a v slučke jednoducho požadujeme teplotu a hodnotu uložíme do premennej RawValue, aby sa zobrazila na LCD.
Ak to chcete mať ešte jednoduchšie, stačí použiť sériový monitor s nasledujúcim náčrtom
#include "Wire.h" #include "OneWire.h" #include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); Snímač teploty Dallas1 (& ourWire1);
float RawValue = 0;
neplatné nastavenie () {
oneskorenie (1000); Serial.begin (9600); senzor1.begin (); sensor1.setResolution (11);
}
void loop () {sensor1.requestTemperatures (); float RawValue = sensor1.getTempCByIndex (0); Serial.print ("Sens. 1"); Serial.println (RawValue, 1); }
Teraz ma nasledujte v jadre projektu kalibrácie senzora.
Krok 2: Dvojbodová kalibrácia
Najprv niečo vedieť
Na kalibráciu tepelného senzora musíte zmerať niečo, o čom poznáte teplotu. Jednoduchý spôsob, ako to urobiť doma, je použitie vriacej vody a kúpeľa topiaceho sa ľadu, nazývaného tiež kúpeľ „s tromi bodmi“. V tých prípadoch vieme, že voda vrie pri teplote 100 ° C na hladine mora. Majte na pamäti, že na presné meranie by ste mali poznať svoju nadmorskú výšku a vypočítať tam správnu teplotu varu.
Môžete to skontrolovať tu!
Ak chcete byť úprimný, mali by ste kontrolovať atmosférický tlak a nie nadmorskú výšku. Ale tento spôsob je dostatočne presný.
Trojbodový kúpeľ alebo ľadový kúpeľ je teplota, pri ktorej voda existuje v troch stavoch tuhej, kvapalnej a plynnej, pričom táto teplota je 0, 01 ° C. Na zjednodušenie použijeme 0 ° C.
Keď poznáme hodnotu, ktorú snímač prečítal, a hodnotu, ktorá by mala byť, môžeme surovú hodnotu DS18B20 upraviť na niečo správnejšie.
POZNÁMKA: Na kalibráciu senzora môžete použiť aj väčšiu teplotu, stačí ho vložiť do inej látky, o ktorej poznáte bod varu, ako je éter (35 ° C), pentán (36, 1 ° C), acetón (56 ° C) alebo Etanol (78, 37 ° C), ale tieto vriace látky produkujú vysoko zápalné plyny! Tak to nerob!
Vriaca voda:
Do hrnca dajte trochu vody a zohrievajte ho, kým nezovrie (vyvíjajú sa bublinky plynu a voda sa sama mieša). Ponorte senzor tak, aby sa nedotýkal ničoho iného než vody. Počkajte pár minút a prečítajte si LCD alebo sériový monitor
Teplota by mala zostať rovnaká najmenej jednu minútu. Ak je to tak, zapíšte si túto hodnotu. To je vaša: RawHigh hodnota.
Trojbodový kúpeľ:
Teraz vezmite veľký pohár (nepotrebujete nič obrovské ani hrniec) a naplňte ho po okraj kockami ľadu. Skúste použiť malé kocky ľadu. Teraz naplňte 80% pohára studenou vodou. Ak sa páčka pokúsi dostať dole, doplňte ľad.
Teraz vložte senzor do veci voda/ľad a počkajte jednu a pol minúty. Prečítajte si teplotu, ktorá by mala zostať rovnaká najmenej 30 sekúnd. Ak je to tak, napíšte to tak, že je to vaša hodnota RawLow.
Krok 3: Využite hodnoty, ktoré získate správnym spôsobom
Takže teraz máte niekoľko dôležitých hodnôt:
- RawHigh
- RawLow
- Referencia Vysoká
- Referencia Nízka
Referenčné hodnoty sú očividne 99,9 ° C pre vriacu vodu (v mojej nadmorskej výške 22 m) a 0 ° C pre topiaci sa ľadový kúpeľ. Teraz vypočítajte rozsahy týchto hodnôt:
- RawRange = RawHigh - RawLow
- ReferenceRange = ReferenceHigh - ReferenceLow
Teraz ste pripravení používať tento senzor v akomkoľvek inom projekte, pričom ste si istí, že vám poskytne správne meranie. Ako? Pomocou hodnoty, ktorú ste tu získali v projekte, vytvoríte pomocou tohto senzora.
Vo svojom budúcom projekte budete musieť použiť hodnoty, ktoré ste si prečítali v tomto, a navrhujem to urobiť pomocou rovnakých mien, aké som použil tu.
Deklarujte premenné pred sekciou neplatného nastavenia () takto:
float RawHigh = 99,6; float RawLow = 0,5; float ReferenceHigh = 99,9; float ReferenceLow = 0; float RawRange = RawHigh - RawLow; float ReferenceRange = ReferenceHigh - ReferenceLow;
Potom zakaždým, keď použijete senzor, môžete na výpočet CorrectedValue použiť nasledujúci vzorec:
float CorrectedValue = ((((RawValue - RawLow) * ReferenceRange) / RawRange) + ReferenceLow;
RawValue je zrejme čítanie senzora.
To je všetko!
Teraz viete, ako kalibrovať snímač DS18B20 alebo iný snímač, ktorý použijete! Bavte sa!