Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:cghenea:intelligent_temp_sensor [2021/06/01 23:43]
radu_bogdan.pavel [Bibliografie]
pm:prj2021:cghenea:intelligent_temp_sensor [2021/06/02 15:40] (current)
radu_bogdan.pavel [Bibliografie]
Line 8: Line 8:
   * 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.   * 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.
  
- 
- 
-{{:​pm:​prj2021:​cghenea:​schema_bloc_tea_sensor.png?​200|}} 
 ===== Descriere generală ===== ===== Descriere generală =====
 <​note>​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.</​note>​ <​note>​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.</​note>​
Line 19: Line 16:
   * Plăcuță Arduino UNO   * Plăcuță Arduino UNO
   * Senzor de temperatură impermeabil DS18B20   * Senzor de temperatură impermeabil DS18B20
-  * LCD 1602 cu modul I2C +  ​* Senzor de temperatură normal DS18B20 
-  * Potențiometru Stereo 10K +  ​* LCD 1602 
-  * LED RGB +  ​* 2 * Potențiometru Stereo 10K 
-  * 1 Rezistor ​4.7K Ohm, 1 Rezistor ​220 Ohm, 2 Rezistori 100 Ohm+  * LED RGB cu catod comun 
 +  * 2 rezistențe ​4.7K Ohm, 3 rezistențe ​220 Ohm
   * Fire conectoare   * Fire conectoare
 +  * Breadboard
 {{:​pm:​prj2021:​cghenea:​schema_electrica_tea_sensor.png?​600|}} {{:​pm:​prj2021:​cghenea:​schema_electrica_tea_sensor.png?​600|}}
  
  
 ===== Software Design ===== ===== 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
 +<​note>​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 [[http://​jwilson.coe.uga.edu/​EMAT6680Fa2014/​Gieseking/​Exploration%2012/​Newton%27s%20Law%20of%20Cooling.htm|aici]].</​note>​
 +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.
 +<​note>​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.</​note>​
 +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.
 +<​note>​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. </​note>​
  
 +===== 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 [[https://​youtu.be/​HAvER53UP7Y|link]] de Youtube.
  
 +{{:​pm:​prj2021:​cghenea:​prezentare_tea_sensor.jpeg?​200 | Prezentare}} {{:​pm:​prj2021:​cghenea:​off_mode_tea_sensor.jpeg?​200 | Off mode}}{{:​pm:​prj2021:​cghenea:​standby_mode_tea_sensor.jpeg?​200| Standby mode}}
  
-===== Rezultate Obţinute =====+{{:​pm:​prj2021:​cghenea:​temperature_mode_tea_sensor.jpeg?​200| Temperature mode}} {{:​pm:​prj2021:​cghenea:​set_mode_tea_sensor.jpeg?​200| Set mode}} {{:​pm:​prj2021:​cghenea:​probe_mode_tea_sensor.jpeg?​200| Probe mode}}
  
  
  
 ===== Concluzii ===== ===== 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 [[https://​github.com/​RaduBPavel/​Intelligent-Beverage-Temperature-Sensor|repository]] de pe GitHub.
  
- +Pentru a descărca pagina de wiki în format PDF, apăsați [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​cghenea/​intelligent_temp_sensor?​do=export_pdf|aici]].
-===== Download =====+
  
  
  
 ===== Bibliografie ===== ===== Bibliografie =====
-  * https://​www.makerguides.com/​character-lcd-arduino-tutorial/​ +  * Conectare LCD 1602 - https://​www.makerguides.com/​character-lcd-arduino-tutorial/​ 
-  * https://​create.arduino.cc/​projecthub/​iotboys/​how-to-use-ds18b20-water-proof-temperature-sensor-2adecc +  * Folosire senzor de temperatură impermeabil DS18B20 - https://​create.arduino.cc/​projecthub/​iotboys/​how-to-use-ds18b20-water-proof-temperature-sensor-2adecc 
-  * https://​arduinogetstarted.com/​tutorials/​arduino-button-debounce +  * Implementare debounce pentru butoane - https://​arduinogetstarted.com/​tutorials/​arduino-button-debounce 
-  * https://​create.arduino.cc/​projecthub/​muhammad-aqib/​arduino-rgb-led-tutorial-fc003e +  * Folosire LED RGB - https://​create.arduino.cc/​projecthub/​muhammad-aqib/​arduino-rgb-led-tutorial-fc003e 
-  * https://​www.khanacademy.org/​math/​differential-equations/​first-order-differential-equations/​exponential-models-diff-eq/​v/​newtons-law-of-cooling +  * Videoclip informativ despre Legea de Răcire a lui Newton - https://​www.khanacademy.org/​math/​differential-equations/​first-order-differential-equations/​exponential-models-diff-eq/​v/​newtons-law-of-cooling 
-  * https://​lastminuteengineers.com/​multiple-ds18b20-arduino-tutorial/​+  * Folosirea a mai mulți senzori DS18B20 pe aceeași linie de date - https://​lastminuteengineers.com/​multiple-ds18b20-arduino-tutorial/​ 
 +  * Demo de prezentare al proiectului - https://​youtu.be/​HAvER53UP7Y
pm/prj2021/cghenea/intelligent_temp_sensor.1622580216.txt.gz · Last modified: 2021/06/01 23:43 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