This shows you the differences between two versions of the page.
|
pm:prj2021:agrigore:fierbator-programabil [2021/06/03 10:58] andrei.dumitru1505 |
pm:prj2021:agrigore:fierbator-programabil [2021/06/03 13:56] (current) andrei.dumitru1505 |
||
|---|---|---|---|
| Line 14: | Line 14: | ||
| {{:pm:prj2021:agrigore:diagramablockfierbator.png?500|}} | {{: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: | Componente utilizate: | ||
| - | * Arduino UNO | + | * Arduino Uno |
| * https://ardushop.ro/ro/home/29-placa-de-dezvoltare-uno-r3.html | * 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 | ||
| - | * Releu | + | * Releu (nefolosit) |
| - | * Rezistenta fierbere apa | + | * Rezistenta fierbere apa (nefolosit) |
| * 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 | ||