Differences

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

Link to this comparison view

pm:prj2021:cghenea:broloboc [2021/06/04 18:53]
adrian.mihalcea2409
pm:prj2021:cghenea:broloboc [2021/06/04 19:16] (current)
adrian.mihalcea2409
Line 24: Line 24:
   * 7-segment 4 digit display   * 7-segment 4 digit display
  
 +Schema electrica completa a proiectului a fost realizata in EAGLE. Singura non-conformitate cu realitatea este ca nu am gasit fix MPU6150 in niciun library asa ca am folosit un MPU6050 (o piesa identica in ceea ce priveste cablajul).
 {{:​pm:​prj2021:​cghenea:​broloboc_schema.png?​800|}} {{:​pm:​prj2021:​cghenea:​broloboc_schema.png?​800|}}
  
Line 29: Line 30:
  
 ====== Software Design ====== ====== Software Design ======
-Librarii ​folosite: Wire.h, SevSeg.h (linked mai jos)+Biblioteci ​folosite: Wire.h, SevSeg.h (linked mai jos)
  
 Codul meu a fost dezvoltat folosind Arduino IDE. Integreaza Arduino-ul cu placuta cu giroscop, display-ul si buzzer-ul. Codul meu a fost dezvoltat folosind Arduino IDE. Integreaza Arduino-ul cu placuta cu giroscop, display-ul si buzzer-ul.
  
-Functia setup trezeste ​placuta ​cu giroscop si initializeaza ​setarile ​displayul cu 4 cifre. Optional, ​afiseaza erorile gasite pe giroscop ca medie intre 200 de masuratori (presupunand ca este pe o suprafata plana), folosind ​functia ​print_errors.+Setup: 
 +Comunicatia cu modulul MPU-6150 este realizata pe I2C (folosind biblioteca Wire). Se trezeste ​acest modulul printr-un 0 trimis la registrul sau 0x6B. Comunicatia ​cu 7-segment display se realizeaza folosind biblioteca SevSeg, in Setup setandu-se ​setarile ​acestuia (pinii pentru segmente si separatoare) si afisand 0000. Optional, ​se poate apela functia ​Print_error,​ descrisa mai jos
  
-In loop, la fiecare iteratie improspatez display-ulcomunic prin I2C cu MPU 6150 si primesc cele 6 registre corespunzand masuratorilor pentru 3 axe. Folosind masuratorile pentru axa oX calculez, conform datasheet-ului,​ diferenta de unghi fata de ultima masuratoare si updatez unghiul curent. ​Acesta ​este afisat pe display folosind functia setNumber din library-ul pentru control de 7-segment display. Daca intervalul de toleranta este respectat, scoate zgomot si buzzer-ul.+Print_error:​ 
 +Am descoperit ca giroscopul meu are niste erori vizibile din fabricatie, care il cauzau sa driftuiasca in timp cu ~0.5grade/​secunda. Pentru a lua in calcul aceste erori, am facut o functie de one-time setup care realizeaza 200 de masuratori, presupunand ca giroscopul este pe o suprafata plana, face media acestora si printeaza eroarea gasita astfel. Scazand aceasta eroare din fiecare masuratoare,​ obtin niste rezultate mult mai precise si stabile. 
 + 
 +Loop: 
 +In loop, la fiecare iteratie improspatez display-ul ​si comunic prin I2C cu MPU-6150. Astfel ii cer 6 registre incepand cu adresa 0x43 (conform datasheetului_ ​si primesc cele 6 registre corespunzand masuratorilor pentru 3 axe, fiecare axa in cate 2 registre. Folosind masuratorile pentru axa oX calculez, conform datasheet-ului,​ diferenta de unghi fata de ultima masuratoare si updatez unghiul curent, tinand cont si de eroarea medie masurata cu print_error. 
 + 
 +Acest rezultat ​este afisat pe display folosind functia setNumber din library-ul pentru control de 7-segment display. Daca intervalul de toleranta ​de (-2, +2) grade este respectat, scoate zgomot si buzzer-ul, controlat cu functiile Arduino Tone si noTone.
  
 ====== Rezultate Obținute ====== ====== Rezultate Obținute ======
 +Proiectul isi indeplineste foarte bine sarcina si face niste masuratori destul de precise (un unghi de 90 de grade este afisat ca 88-92 de grade, in functie de cat de lina este miscarea). Singura mare dificultate pe care am intampinat-o a fost fix legata de faptul ca nu am lipit conexiunile la giroscop (ceea ce eu am crezut initial ca va fi mai usor), asa ca a trebuit sa am foarte multa grija cand miscam breadboard-ul cu giroscopul pentru a nu intrerupe conexiunea din greseala.
 {{:​pm:​prj2021:​cghenea:​broloboc_poza2.jpg?​800 |}} {{:​pm:​prj2021:​cghenea:​broloboc_poza2.jpg?​800 |}}
 [[https://​youtu.be/​0DHgdXZ900M | Link Youtube Demo]] [[https://​youtu.be/​0DHgdXZ900M | Link Youtube Demo]]
pm/prj2021/cghenea/broloboc.1622821993.txt.gz · Last modified: 2021/06/04 18:53 by adrian.mihalcea2409
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