This shows you the differences between two versions of the page.
pm:prj2023:gpatru:58 [2023/05/02 22:50] rares.stoica |
pm:prj2023:gpatru:58 [2023/05/30 15:56] (current) rares.stoica |
||
---|---|---|---|
Line 7: | Line 7: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Voi avea un ventilator de 24V la baza unui tub gradat de dimensiune //TO BE DETERMINED//. Deasupra tubului va fi un senzor de distanță care va determina poziția mingii față de bază. Senzorul de temperatură va fi poziționat pe cutia de jos, iar temperatura va fi afișată pe un ecran LCD. Mingea va levita, împinsă de ventilator, la o anumită înălțime ce va fi marcată pe tub cu un număr, reprezentând temperatura mediului. Scopul acestui proiect este sa imite un termometru clasic cu mercur, doar că adaptat de un viitor inginer software :-D. În final, temperatura indicată de mingea de ping pong ar trebui să fie aceeași cu cea expusă pe display. În funcție de capacitățile senzorilor, tubul va fi gradat 0-30<sup>o</sup>C sau 15-30<sup>o</sup>C. | + | Voi avea un ventilator de 24V la baza unui tub gradat de dimensiune 40cm. Deasupra tubului va fi un senzor de distanță care va determina poziția mingii față de bază. Senzorul de temperatură va fi poziționat pe cutia de jos, iar temperatura va fi afișată pe un ecran LCD. Mingea va levita, împinsă de ventilator, la o anumită înălțime ce va fi marcată pe tub cu un număr, reprezentând temperatura mediului. Scopul acestui proiect este sa imite un termometru clasic cu mercur, doar că adaptat de un viitor inginer software :-D. În final, temperatura indicată de mingea de ping pong ar trebui să fie aceeași cu cea expusă pe display. În funcție de capacitățile senzorilor, tubul va fi gradat 0-30<sup>o</sup>C sau 15-30<sup>o</sup>C. |
+ | \\ Update: Din cauză că tubul este făcut aproape perfect pe diametrul mingii, acesta va fi gradat intre 21-25<sup>o</sup>C. Ce este sub 21<sup>o</sup>C se va reprezenta cu mingea la baza tubului, iar ce este peste 25<sup>o</sup>C se va reprezenta cu mingea ținută la partea superioară a acestuia. | ||
=== Schema bloc === | === Schema bloc === | ||
- | {{ :pm:prj2023:gpatru:schema_block_1_.png?600 |}} | + | {{ :pm:prj2023:gpatru:schema_block.drawio.png?600 |}} |
=== Vizualizare 3D === | === Vizualizare 3D === | ||
Line 19: | Line 20: | ||
===== Hardware design ===== | ===== Hardware design ===== | ||
Voi folosi următoarele componente: | Voi folosi următoarele componente: | ||
- | * Arduino R3 ATmega328P / Arduino MEGA R3 ATmega2560 | + | * Arduino R3 ATmega328P |
- | * Senzor distanță | + | * Senzor ultrasonic de distanță |
* Senzor temperatură | * Senzor temperatură | ||
* Ecran LCD | * Ecran LCD | ||
- | * Turbină / Ventilator 24V DC | + | * Turbină 24V DC |
- | * Tranzistori | + | * Modul ridicare tensiune XL6009 |
- | * <Baterie> | + | * Breadboard x 2 |
+ | * Modul alimentare priza | ||
+ | * Fire | ||
- | Voi avea nevoie să transform curentul de 5V de la Arduino / 9V de la baterie în 24V pentru a putea alimenta ventilatorul. Acest lucru îl voi face cu ajutorul tranzistorilor. | + | Voi avea nevoie să transform tensiunea de 9V de la priză în 24V pentru a putea alimenta ventilatorul. Acest lucru îl voi face cu ajutorul ridicatorului de tensiune mai sus mentionat. |
+ | |||
+ | |||
+ | ==== Schemă electrică ==== | ||
+ | {{:pm:prj2023:gpatru:pm_schema.png?700|}} | ||
+ | |||
+ | ==== Cutia fizică ==== | ||
+ | {{:pm:prj2023:gpatru:fata_ping_pong.jpg?200|}} | ||
+ | {{:pm:prj2023:gpatru:profil_ping_pong.jpg?200|}} | ||
+ | {{:pm:prj2023:gpatru:sus_ping_pong.jpg?200|}} | ||
+ | |||
+ | ===== Software Design ===== | ||
+ | |||
+ | În primul rând, am setat pinii corespunzători senzorilor, LCD-ului si turbinei pentru a putea citi/scrie informația: \\ | ||
+ | - Senzor temperatură - INPUT - cu ajutorul bibliotecilor DallasTemperature.h și OneWire.h | ||
+ | - Senzor distanță - INPUT - cu ajutorul bibliotecii Ultrasonic.h | ||
+ | - LCD - OUTPUT - cu ajutorul bibiliotecii LiquidCrystal_I2C.h | ||
+ | - Turbină - OUTPUT - cu ajutorul unui pin PWM de pe placuta Arduino. | ||
+ | |||
+ | Codul este scris experimental pe hardware, am întâmpinat câteva probleme cu diametrul cubului, în sensul că la fluctuații foarte mici ale rotației turbinei, mingea fiind foarte ușoară ori nu se ridica, ori rămânea in vârful tubului. Astfel, am ales să gradez tubul între 21-25 grade. \\ | ||
+ | Senzorul de distanță are rolul de a mări sau micșora viteza turbinei pentru ca bila să se mențină în intervalul corect de temperatură. Am folosit inițial un potențiometru ca să găsesc o dependență temperatură-turație-distanță cu care ulterior am inițializat viteza turbinei în funcție de temperatura la pornirea termometrului. \\ | ||
+ | |||
+ | In funcția loop: | ||
+ | * Daca este la prima pornire, i se dă motorului o turație mai mare astfel încât mingea să fie in aer. | ||
+ | * Tot la prima porninre, se dă o turație motorului în funcție de senzorul de temperatură. | ||
+ | * Odată ce mingea este in aer, cu ajutorul senzorului de distanță, mingea se reglează intre bornele de pe tub. | ||
+ | * Dacă motorul are anumite limitări la nivel de turații in funcție de temperatura afișată pe lcd. | ||
+ | |||
+ | Programul rulează la infinit, până este scos din priză precum orice alt obiect de design tehnologizat din casă. | ||
+ | |||
+ | ===== Demo ===== | ||
+ | |||
+ | <html><center><iframe width="560" height="315" src="https://www.youtube.com/embed/8TPPWRLzoME" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></center></html> | ||
+ | |||
+ | ===== Rezultate obținute ===== | ||
+ | Proiectul depinde de mulți factori care pot influența funcționalitatea acestuia, cum ar fi cantitatea de aer pe care o trage turbina din interiorul cutiei(ex. lcd-ul se desprinde de tavan si turbina are mai mult aer in cutie, capacul nu stă ca în momentul scrierii implemetării). Mi-a plăcut să lucrez la acest proiect, însă am un regret că nu am putut controla mai bine înaltimea mingii(turația motorului), tubul fiind aproape perfect pe diametrul mingii. | ||
+ | |||
+ | ===== Download ===== | ||
+ | <note tip>Arhiva cu codul: {{:pm:prj2023:gpatru:pingpongballthermometer.zip|}}</note> | ||