This shows you the differences between two versions of the page.
pm:prj2021:agrigore:fierbator-programabil [2021/04/25 22:01] andrei.dumitru1505 created |
pm:prj2021:agrigore:fierbator-programabil [2021/06/03 13:56] (current) andrei.dumitru1505 |
||
---|---|---|---|
Line 13: | Line 13: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | {{:pm:prj2021:agrigore:diagramablockfierbator.png?400|}} | + | {{:pm:prj2021:agrigore:diagramablockfierbator.png?500|}} |
+ | Din pacate, in implementarea finala a proiectului nu am reusit sa adaug functionalitatea cheie a acestuia, si anume fierberea apei, intrucat mi s-a defectat sursa de tensiune pentru alimentarea rezistentei de fierbere si nu am reusit sa o inlocuiesc in timp util. | ||
+ | Astfel, am decis sa simulez inceperea fierberii cu aprinderea unui led si sa renunt la urmatoarele componente ce facilitau fierberea: | ||
+ | * Rezistenta pentru fierbere | ||
+ | * Releu/Mecanismul care sa il inlocuiasca pentru inchiderea circuitului rezistentei | ||
+ | * Detectorul de umiditate ce semnaleaza atingerea punctului de fierberea | ||
+ | ===== Functionalitate realizata si Utilizare ===== | ||
+ | |||
+ | In cadrul acestei sectiuni, voi explica pas cu pas modul de functionare al proiectului. | ||
+ | * Este afisat un mesaj de intampinare a utilizatorului, prin care i se indica apasarea butonului de start pentru setarea timpului de fierberea | ||
+ | * Este afisat un ecran in care se poate seta, folosind doua butoane, numarul de minute/secunde dupa care sa inceapa fierberea dupa confirmarea acestei durate cu un al treilea buton | ||
+ | * In cazul introducerii unei durate mai indelungate decat o ora, este afisat un mesaj ce indica depasirea timpului maxim si necesitatea resetarii dispozitivului | ||
+ | * Este afisat timpul descrescator pana la inceperea fierberii | ||
+ | * La expirarea delay-ului pana la fierbere, este afisat un mesaj ce semnaleaza inceperea fierberii si se aprinde led-ul ce simuleaza fierbatorul | ||
+ | * Dupa 5 secunde (timp convenabil pentru testarea functionalitatii), fierberea este oprita si este un transmis un semnal sonor de catre buzzer ce indica terminiarea acestui proces | ||
+ | * Este afisat un mesaj ce semnaleaza terminarea fierberii si necesitatea resetarii dispozitivului pentru revenirea la starea initiala | ||
+ | |||
+ | Toata mesajele sunt afisate pe LCD, iar butonul de RESET este cel incorporat in placuta Arduino Uno. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | {{:pm:prj2021:agrigore:schemaelectronicapm.png?600|}} | ||
+ | |||
+ | |||
+ | Componente utilizate: | ||
+ | |||
+ | * Arduino Uno | ||
+ | * https://ardushop.ro/ro/home/29-placa-de-dezvoltare-uno-r3.html | ||
+ | * https://store.arduino.cc/arduino-uno-rev3 | ||
+ | * Datasheet microcontroller: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf | ||
- | * Arduino | + | * Releu (nefolosit) |
- | * Releu | + | * Rezistenta fierbere apa (nefolosit) |
- | * Rezistenta fierbere apa | + | |
* Fire | * Fire | ||
- | * Sursa de tensiune | + | * Sursa de tensiune (nefolosit) |
* Butoane | * Butoane | ||
+ | * https://www.optimusdigital.ro/ro/butoane-i-comutatoare/1119-buton-6x6x6.html | ||
+ | * Datasheet http://www.farnell.com/datasheets/2343587.pdf | ||
* Afisor LCD | * Afisor LCD | ||
- | * Detector umiditate | + | * https://cleste.ro/ecran-lcd-2004-cu-i2c-albastru-4174.html |
+ | * Datasheet LCD: https://www.beta-estore.com/download/rk/RK-10290_410.pdf | ||
+ | * Datasheet modul I2C I/O expander: https://html.alldatasheet.com/html-pdf/18215/PHILIPS/PCF8574T/4027/16/PCF8574T.html | ||
+ | * Detector umiditate (nefolosit) | ||
* Buzzer | * Buzzer | ||
+ | * https://ardushop.ro/ro/electronica/194-buzzer.html | ||
+ | * Datasheet: http://www.farnell.com/datasheets/2171929.pdf | ||
+ | * Rezistente 1K | ||
+ | * https://ardushop.ro/ro/electronica/211-rezistenta-14w-1-buc.html#/89-valoare_rezistenta-1k | ||
+ | * Datasheet: http://www.farnell.com/datasheets/1716725.pdf?_ga=2.43716581.132370299.1498698481-246720399.1496759099 | ||
+ | * LED semnalizare fierbere | ||
+ | * https://www.optimusdigital.ro/ro/optoelectronice-led-uri/696-led-rou-de-3-mm-cu-lentile-difuze.html | ||
+ | * Datasheet: https://static.rapidonline.com/pdf/56-0740e.pdf | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Componenta software a proiectului este realizata folosind IDE-ul Arduino si limbajul C. | ||
+ | Pentru detalierea implementarii software, voi explica in linii mari rolul fiecarei functii. | ||
+ | | ||
+ | ==setup== | ||
+ | * initiaza lcd si pinii INPUT/OUTPUT | ||
+ | * initiaza comunicatia seriala pentru folosirea buzzer-ului | ||
+ | |||
+ | ==countButtonPress== | ||
+ | * numara de cate ori a fost apasat un buton | ||
+ | * utilizata pentru butoanele de setare a minutelor si secundelor | ||
+ | |||
+ | ==checkMaxBoilTime== | ||
+ | * verifica daca a fost atinsa limita superioara pentru minute(60) | ||
+ | * afiseaza mesajul corespunzator | ||
+ | |||
+ | ==printTimeUntilBoil== | ||
+ | * afiseaza minutele/secundele setate | ||
+ | * folosita atat pentru setarea delay-ului cat si pentru descresterea lui in urma confirmarii | ||
+ | |||
+ | ==boilingDelay== | ||
+ | * descresterea timpului pana la inceperea fierberii | ||
+ | * utilizeaza functia printTimeUntilBoil pentru afiseara duratei ramase | ||
+ | |||
+ | ==checkBoilingTimeSet== | ||
+ | * verifica daca a fost setat timpul pana la inceperea fierberii | ||
+ | * afiseaza un mesaj pentru notificarea utilizatorului si apeleaza boilingDelay pentru descresterea timpului | ||
+ | |||
+ | ==boilingEnded== | ||
+ | * afiseaza mesajul ce indica utilizatorului terminarea fierberii | ||
+ | * mesajul include si necesitatea resetarii dispozitivului pentru refolosire | ||
+ | |||
+ | ==loop== | ||
+ | * se verifica daca fierberea s-a incheiat pentru a se afisa mesajul corespunzator | ||
+ | * se verifica daca a fost setat delay-ul pentru fierbere pentru a incepe decrementarea acestuia | ||
+ | * daca a inceput fierberea efectiva: | ||
+ | * se afiseaza mesajul corespunzator | ||
+ | * se asteapta 5 secunde pentru simularea timpului de fierbere | ||
+ | * se stinge led-ul pentru a semnala oprirea rezistentei de fierbere | ||
+ | * este transmis un semnal sonor utilizatorului folosind buzzer-ul, indicand sfarsitul fierberii | ||
+ | * se verifica daca a fost apasat butonul de start, afisand mesajele corespunzatoare | ||
+ | * sunt numarate apasarile butoanelor de minute/secunde | ||
+ | * sunt incrementate minutele in cazul in care secundele trec de valoarea 60 | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2021:agrigore:proiectfinal.jpeg?500|}} | ||
+ | |||
+ | * Demo cu durata pana la fierbere mai mare de un minut: | ||
+ | * https://www.youtube.com/watch?v=IB52FuCibE4 | ||
+ | * Demo cu durata pana la fierbere mai mica de un minut: | ||
+ | * https://www.youtube.com/watch?v=nKQAhG6EOKM | ||
+ | * Demo eroare - timp pana la fierbere mai mare de o ora: | ||
+ | * https://www.youtube.com/watch?v=z2_UJ74hTKA | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Desi nu am reusit implementare completa propusa la inceputul proiectului, implementarea acestuia mi-a trezit interesul pentru zona de dezvoltare a acestui tip de dispozitive ce imbina software-ul si hardware-ul. | ||
+ | Elemente utilie asimilate pe parcursul proiectului: | ||
+ | * Dezvoltarea programelor in mediul Arduino IDE | ||
+ | * Utilizarea diferitelor componente electronice, precum lcd, modul I2C, buzzer, led, butoane | ||
+ | * Posibilitatile vaste de utilizare a placutei Arduino Uno | ||
+ | * Protocolul I2C | ||
+ | * Simularea unui releu cu ajutorul unui N-MOSFET (neimplementat, dar documentat) | ||
+ | * Componentele electronice trebuie tratate cu mai multa atentie pentru evitare defectiunilor! | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:agrigore:proiectpm_dumitruandrei_332ca.zip|}} | ||
- | ===== Jurnal ===== | ||
+ | ===== Jurnal ===== | ||
+ | * 24 Aprilie : Alegere tema proiect | ||
+ | * 10 Mai -> 25 mai : Documentare si comandare piese | ||
+ | * 1 Iunie : Incercare implementare cu sursa de tensiune, defectiune sursa | ||
+ | * 2 Iunie : Implementare fara sursa de tensiune, simulare cu led | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Pdf: https://ocw.cs.pub.ro/courses/pm/prj2021/agrigore/fierbator-programabil?do=export_pdf | Pdf: https://ocw.cs.pub.ro/courses/pm/prj2021/agrigore/fierbator-programabil?do=export_pdf | ||
+ | |||
+ | https://www.arduino.cc/en/tutorial/pushbutton | ||
+ | |||
+ | https://create.arduino.cc/projecthub/rowan07/make-a-simple-led-circuit-ce8308 | ||
+ | |||
+ | http://electronics.flosscience.com/Home_LE/Arduino-Lessons/counting-presses |