Intelligent Temperature Sensor for Beverages
Introducere
Scopul proiectului este implementarea unui senzor de temperatură inteligent pentru băuturi.
Este acționat prin intermediul unui senzor de temperatură impermeabil și afișează date despre temperatura curentă a unei băuturi și dacă se află în limitele impuse, limite care pot fi modificate. De asemenea, se poate folosi și pentru a determina în cât timp se va răci un lichid până la temperatura dorită.
Motivația din spatele proiectului este că, de cele mai multe ori, nu știm ce temperatură au băuturile și dacă putem să le consumăm. De cele mai multe ori fie ajungem să ne ardem, fie sunt deja prea reci.
Descriere generală
Modul de funcționare al mecanismului este următorul: se verifică temperatura unei băuturi prin introducerea senzorului impermeabil în băutură. Pe un ecran LCD se afișează apoi temperatura și dacă este prea fierbinte sau prea rece, în funcție de setările de temperatură prestabilite. Există și un suport vizual pentru temperatură, prin intermediul unui LED RGB, care se aprinde albastru dacă este prea rece, roșu dacă este prea cald și verde pentru o temperatură adecvată. De asemenea, valorile de referință de temperatură pot fi ajustate prin intermediul unui potențiometru. În ultimul rând, aparatul poate fi folosit și pentru a determina în cât timp se va răci lichidul până la temperatura dorită, folosind Legea de Răcire a lui Newton.
Hardware Design
Plăcuță Arduino UNO
Senzor de temperatură impermeabil DS18B20
Senzor de temperatură normal DS18B20
LCD 1602
2 * Potențiometru Stereo 10K
LED RGB cu catod comun
2 rezistențe 4.7K Ohm, 3 rezistențe 220 Ohm
Fire conectoare
Breadboard
Software Design
Toată interacțiunea cu aparatul se face prin intermediul unui meniu, care poate fi accesat prin intermediul a patru butoane. Cele cinci moduri de funcționare ale aparatului sunt:
Off mode → aparatul este oprit
Standby mode → se accesează prin apăsarea primului buton, este meniul principal
Temperature sensing mode → se măsoară temperatura prin senzorul DS18B20 impermeabil și se afișează pe LCD
Set mode → se setează valorile de referință pentru care lichidul este cald sau rece
Probing mode → se iau valorile temeperaturii pe o perioadă de 5 secunde și se calculează timpul necesar răcirii lichidului până la temperatura setată anterior
Calcularea timpului necesar de răcire se face folosind Legea de Răcire a lui Newton. Se compară diferența de temperatură a lichidului într-un interval de timp raportată la temperatura ambientală, măsurată prin alt senzor de temperatură DS18B20. Apoi se află constanta de răcire a mediului în funcție de valorile menționate și se calculează astfel timpul necesar răcirii până la o anumită temperatură. Mai multe detalii despre acest fenomen poți găsi
aici.
Cel mai important aspect al proiectului este navigarea între modurile de funcționare ale aparatului. Aceasta este posibilă datorită debounce-ului făcut pe fiecare buton și cum sunt programate schimbările de stare: în momentul în care un buton își schimbă starea, toate celelalte stări sunt invalidate, fiind necesară resetarea stării curent într-o valoare de
False pentru a reveni la meniul de modul de standby și pentru a accesa apoi alte moduri.
Efectul de debounce realizat în funcționarea butoanelor se bazează pe înregistrarea doar a unui semnal produs de buton într-o perioadă de timp stabilită și compararea acestuia cu fostul semnal primit, pentru a valida dacă s-au produs schimbări sau nu.
Pentru programarea microcontroller-ului s-a folosit mediul de dezvoltare Arduino IDE, iar ca biblioteci incluse s-au folosit LiquidCrystal.h, pentru programarea LCD-ului, iar OneWire.h și DallasTemperature.h pentru interacțiunea senzorilor de temperatură cu exteriorul.
Senzorii de temperatură sunt conectați pe același linie bus de date, lucru făcut posibil de bibiliotecile menționate mai sus. Abordarea aleasă este cea mai bună pentru că nu mai există interferențe între valorile citite de cei doi senzori.
Rezultate Obţinute
Concluzii
Aparatul funcționează conform așteptărilor, însă cu câteva mențiuni de făcut:
din cauză ca senzorul impermeabil de temperatură nu este lipit la firele conectoare, făcându-se doar contact între firele de cupru și firele mamă-tată, există momente când se fac citiri cu valori necorespunzătoare
timpul de probă pentru predicția timpului de răcire este destul de mic, fiind de obicei nevoie de mai mult de 5 secunde și de mai multe date pentru a avea o valoare cât mai aproape de adevăr, însă ca scop de prezentare valorile rezultate sunt satisfăcătoare
Ca îmbunătățiri aduse proiectului, pe lângă cele menționate mai sus, se pot folosi fire mai adecvate pentru a avea un aspect mai frumos și eventual să fie încapsulat într-un recipient și alimentat la o baterie pentru a fi mai portabil și mai ușor de folosit.
Download
Toată componenta software folosită în dezvoltarea proiectului, plus părți din documentație pot fi descărcate de pe acest repository de pe GitHub.
Pentru a descărca pagina de wiki în format PDF, apăsați aici.
Bibliografie