Differences

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

Link to this comparison view

pm:prj2023:gpatru:58 [2023/05/25 18:25]
rares.stoica
pm:prj2023:gpatru:58 [2023/05/30 15:56] (current)
rares.stoica
Line 8: Line 8:
 ===== Descriere generală ===== ===== Descriere generală =====
 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. 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.+\\ 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.drawio.png?​600 |}} {{ :​pm:​prj2023:​gpatru:​schema_block.drawio.png?​600 |}}
Line 21: Line 21:
 Voi folosi următoarele componente: Voi folosi următoarele componente:
   * Arduino R3 ATmega328P   * Arduino R3 ATmega328P
-  * Senzor distanță+  * Senzor ​ultrasonic de distanță
   * Senzor temperatură   * Senzor temperatură
   * Ecran LCD   * Ecran LCD
Line 34: Line 34:
  
 ==== Schemă electrică ==== ==== Schemă electrică ====
-{{:​pm:​prj2023:​gpatru:​pm_schema.png?​600|}}+{{:​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>​ 
pm/prj2023/gpatru/58.1685028353.txt.gz · Last modified: 2023/05/25 18:25 by rares.stoica
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