Sadržaj:
Video: Kalibracija senzora DS18B20 s Arduino UNO: 3 koraka (sa slikama)
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
ODRICANJE:
Uređaj koji vidite na slikama koristi se u drugom projektu kao termostat za proces razvoja filma. Taj projekt možete pronaći ovdje. Da biste kalibrirali senzor ili više njih, trebat će vam samo ono što ćete pronaći u ovom projektu, ništa više, a i prilično je osnovno! Idemo!
Korak 1: Pripremite svoj uređaj
Evo popisa onoga što vam treba:
- Arduino UNO (ili MEGA)
- Senzori (i) DS18B20
- 4kOhm - 5kOhm otpor (koristio sam 5k1Ohm)
- LCD zaslon za čitanje vrijednosti (možete koristiti i prijenosno računalo i čitati ih samo na serijskom monitoru)
- Skica koja koristi senzor i prikazuje nekako vrijednosti
Prije svega morate spojiti svoje module i senzor na vaš upravljač. Ostavit ću vam komplicirani dio LCD -a za pretraživanje weba i samo ću vam reći kako spojiti senzor.
Obično ti senzori dolaze s tri bojene žice: crnom, crvenom, žutom. Prva dva su za energiju, a treća za podatke. Spojite crnu na GNN, crvenu na Vcc (5V) i žutu na analogni ulaz, recimo A0.
Sada spojite otpor između žute i crvene boje kako biste dovršili veze.
Uključite i LCD (predlažem jednostavan 16x2 LCD s i2c vezom za korištenje samo 4 žice) i gotovi ste sa žicama i kabelima.
Sada skica koja je super jednostavna:
#include "OneWire.h"
#include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); Senzor temperature Dallas1 (& ourWire1); #include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C LCD (0x27, 16, 2); float RawValue = 0;
void setup () {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); }
Kao što vidite, koristimo Dallas Temperature Library i LCD zaslon s i2c vezom.
U postavkama pokrećemo LCD i senzor, a u petlji jednostavno zahtijevamo temperaturu i pohranjujemo vrijednost unutar varijable RawValue kako bismo je prikazali na LCD -u.
Ako želite pojednostaviti, samo upotrijebite serijski monitor sa sljedećom skicom
#include "Wire.h" #include "OneWire.h" #include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); Senzor temperature Dallas1 (& ourWire1);
float RawValue = 0;
void setup () {
kašnjenje (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); }
Sada me slijedite u jezgri projekta za kalibriranje senzora.
Korak 2: Kalibracija u dvije točke
Nešto prvo treba znati
Da biste kalibrirali termo-senzor, morate izmjeriti nešto za što znate temperaturu. Jednostavan način da to učinite kod kuće je pomoću kipuće vode i kade s topljenim ledom, koja se naziva i kupka s "tri točke". U tim slučajevima znamo da voda ključa na 100 ° C na razini mora. Imajte na umu da biste za precizno mjerenje trebali znati svoju nadmorsku visinu i tamo izračunati odgovarajuću temperaturu vrenja.
Ovdje možete provjeriti!
Da budem iskren, trebali biste provjeriti atmosferski tlak, a ne visinu. Ali taj je način dovoljno točan.
Kupelj s tri točke ili ledena kupelj je temperatura pri kojoj voda postoji u tri stanja: kruto, tekuće i plinsko, ta temperatura je 0,01 ° C. Pojednostavljeno ćemo koristiti 0 ° C.
Znajući vrijednost koju senzor očitava i vrijednost koja bi trebala biti, možemo promijeniti sirovu vrijednost DS18B20 u nešto ispravnije.
NAPOMENA: također možete upotrijebiti više temperature za kalibriranje senzora samo stavljajući ga u neku drugu tvar za koju znate vrelište, poput etera (35 ° C), pentana (36, 1 ° C), acetona (56 ° C) ili Etanol (78, 37 ° C), ali te vrele tvari proizvode visoko zapaljive plinove! Dakle, nemojte to raditi!
Kipuća voda:
Stavite malo vode u lonac i zagrijavajte je dok ne zavrije (razvijaju se mjehurići plina i voda se uzburka). Uronite senzor tamo gdje ne dodiruje ništa osim vode. Pričekajte nekoliko minuta i pročitajte LCD ili serijski monitor
Temperatura bi trebala ostati ista najmanje jednu minutu. Ako je tako, zapišite tu vrijednost. To je vaša: RawHigh vrijednost.
Kupka s tri točke:
Sada uzmite veliku čašu (ne trebate ništa ogromno niti lonac) i napunite je do ruba kockicama leda. Pokušajte koristiti kockice leda male veličine. Sada napunite 80% čaše hladnom vodom. Napunite led ako se ručica pokuša spustiti.
Sada stavite senzor u vodu/led i pričekajte jednu i pol minutu. Očitajte temperaturu koja bi trebala ostati ista najmanje 30 sekundi. Ako je tako, zapišite to kao svoju vrijednost RawLow.
Korak 3: Iskoristite vrijednosti koje ste dobili na pravi način
Dakle, sada imate neke važne vrijednosti:
- RawHigh
- RawLow
- ReferencaHigh
- Referentno nisko
Referentna vrijednost je očito 99,9 ° C za kipuću vodu (na mojoj nadmorskoj visini od 22 m), a 0 ° C za ledenu kupelj u topljenju. Sada izračunajte raspone za te vrijednosti:
- RawRange = RawHigh - RawLow
- ReferenceRange = ReferenceHigh - ReferenceLow
Sada ste spremni za korištenje tog senzora u bilo kojem drugom projektu, sigurni ste da će vam dati pravo mjerenje. Kako? Koristeći vrijednost koju ste ovdje dobili u projektu koji ćete stvoriti s tim senzorom.
U svom budućem projektu morat ćete koristiti vrijednosti koje ste pročitali u ovom, a ja predlažem da to učinite koristeći iste nazive koje sam koristio ovdje.
Proglasite varijable prije odjeljka void setup () upravo ovako:
float RawHigh = 99,6; float RawLow = 0,5; float ReferenceHigh = 99,9; float ReferenceLow = 0; float RawRange = RawHigh - RawLow; float ReferenceRange = ReferenceHigh - ReferenceLow;
Svaki put kad koristite senzor, možete koristiti sljedeću formulu za izračun CorrectedValue:
float CorrectedValue = ((((RawValue - RawLow) * ReferenceRange) / RawRange) + ReferenceLow;
RawValue je očito očitanje senzora.
To je to!
Sada znate kalibrirati svoj DS18B20 senzor ili bilo koji drugi senzor koji ćete koristiti! Zabavi se!