This shows you the differences between two versions of the page.
pm:prj2024:alucaci:alexandru.carp3008 [2024/05/16 17:01] alexandru.carp3008 [Hardware Design] |
pm:prj2024:alucaci:alexandru.carp3008 [2024/05/27 00:39] (current) alexandru.carp3008 [Rezultate Obţinute] |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | + | {{ :pm:prj2024:alucaci:diagrama_acarp.drawio.png?nolink&300 |}} | |
- | {{:pm:prj2024:alucaci:schema_block_schimbator.png?nolink&300|}} | + | |
- | + | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 40: | Line 37: | ||
{{ :pm:prj2024:alucaci:schema_componente_acarp.png?nolink&300 |}} | {{ :pm:prj2024:alucaci:schema_componente_acarp.png?nolink&300 |}} | ||
{{ :pm:prj2024:alucaci:microbit_pins_acarp.png?nolink&300 |}} | {{ :pm:prj2024:alucaci:microbit_pins_acarp.png?nolink&300 |}} | ||
- | {{ :pm:prj2024:alucaci:uc_acarp.png?nolink&300 |}} | + | {{ :pm:prj2024:alucaci:uc_acarp.png?nolink&500 |}} |
=== Stadiu actual al implementarii hardware: === | === Stadiu actual al implementarii hardware: === | ||
Line 56: | Line 53: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Am implementat software-ul folosind [[https://python.microbit.org/v/3/api|microbit:bit Python Editor]]. Am incercat sa folosesc C/C++, dar am avut probleme in configurarea bibliotecilor necesare pentru micro:bit. | ||
- | <note tip> | + | Am implementat functii care verifica senzorii Hall (avand grija sa nu contorizez de mai multe ori aceeasi detectie), care schimba viteza in sus/jos - calibrand numarul de milisecunde pentru care motorul trebuie sa functioneze pentru o schimbare prin teste. De asemenea, am implementat o functie care salveaza persistent in memorie viteza curenta - astfel in cazul unui reset se pastreaza cunoscuta starea in care a ramas schimbatorul. O alta functie importanta este cea de recalibrare, care actioneaza schimbatorul spre cea mai mica viteza pana cand este detectat faptul ca s-a ajuns in capat. Aceasta functie este utilizata daca nu se gaseste fisierul cu viteza curenta (in principiu dupa flash), dar si in caz ca viteza curenta nu este 1 dar se detecteaza capatul cablului. |
- | Descrierea codului aplicaţiei (firmware): | + | Am implementat si o functie pentru citirea acceleratiei de pe senzorul MPU6050, prin i2c. Am folosit datasheet-ul senzorului pentru a afla adresa i2c si adresele registrelor de interes. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | In bucla principala, retin mereu timpii ultimelor 3 detectii ale senzorului Hall de pe pedala, si in functie de diferentele dintre ei (deci de timpii ultimelor 2 rotatii complete ale pedalelor), decid daca |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | este nevoie de o schimbare a vitezei. Daca timpii sunt prea diferiti, inseamna ca nu se pedaleaza consistent deci datele se ignora. Daca sunt sub o anumita limita, se comanda schimbarea vitezei in sus, si daca sunt peste o alta limita se comanda schimbarea vitezei in jos. In plus, se seteaza un cooldown: un numar de detectii ale senzorului de pe pedala care nu vor comanda o noua schimbare - pentru a lasa cadenta sa se stabilizeze la un nou nivel dupa schimbarea anterioara. In plus, detectia unei decelerari puternice (franare) - se traduce prin schimbarea vitezei in jos la urmatoarea rotatie a pedalelor detectata. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | ||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
- | ===== Concluzii ===== | + | Pentru calibrarea motorului am implementat mai intai un program care schimba succesiv vitezele in sus si apoi in jos, la fiecare 3 rotatii ale pedalelor. |
- | ===== Download ===== | + | ===== Rezultate Obţinute ===== |
- | <note warning> | + | Am obtinut un prototip functional, utilizabil, care chiar daca nu tine cont de la fel de multi parametri pe cat planuiam initial, isi face treaba destul de bine. Lucrul cu senzorul de giroscop/accelerometru a fost dificil si din cauza faptului ca este mai dificil de testat. Atasez o demonstratie, in care vitezele se schimba dupa cadenta (viteza cu care se invart pedalele). Mai intai am simulat o cadenta mare -> vitezele se schimba spre pinioanele mai mici, apoi una normala, apoi o cadenta mica, caz in care lantul revine pe pinioanele mai mari. |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | [[https://ctipub-my.sharepoint.com/:v:/g/personal/alexandru_carp3008_stud_acs_upb_ro/EeCGlFcx125JjiWX8B01o1IBYHiffwRrOAZf7sqH_ntCJQ?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=duQ3qy|Video demo]] |
- | </note> | + | |
- | ===== Jurnal ===== | + | Atasez si o demonstratie in conditii reale: |
+ | |||
+ | [[https://drive.google.com/file/d/1bd52wimQbFpF-R0WBAKPzSb97mUcYgEO/view?usp=sharing|Vide demo 2]] | ||
+ | ===== Concluzii ===== | ||
+ | Experienta de a duce o idee pana la un prototip functional a fost una inedita si interesanta, din care am avut multe de invatat. | ||
+ | ===== Download ===== | ||
+ | {{:pm:prj2024:alucaci:alexandru.carp332cc.zip|}} | ||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |