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

În urma testării, apartul se comportă conform așteptărilor. În continuare, voi atașa poze în care se va vedea utilizarea aparatului și fiecare din cele 4 moduri de funcționare al acestuia. De notat este că timpul de răcire afișat este în minute, iar temperatura la care vrea să se ajungă este cea setată în al treilea mod de funcționare. De asemenea, pentru o prezentare mai detaliată a modului de funcționare o puteți găsi în acest link de Youtube.

 Prezentare  Off mode Standby mode

 Temperature mode  Set mode  Probe mode

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

pm/prj2021/cghenea/intelligent_temp_sensor.txt · Last modified: 2021/06/02 15:40 by radu_bogdan.pavel
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0