Teodora ŞERBĂNESCU (78426) - Robotic Drums

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul presupune construirea unor brațe robotice care să reproducă o melodie cântată la tobe.

Prototipul unui braț e constituit dintr-un servomotor și un băț de tobe legat de el. Ansamblul o să fie atașat de marginea tobei(reale sau handmade).

Primul pas propus pentru proiect este să reușesc să controlez servomotorul la o viteză potrivită astfel încât atingerea bățului chiar să scoată un sunet melodic. După ce acest lucru este realizat, următorii pași ar putea fi:

- realizarea unei bucăți de melodie din cod

- adăugarea de input pentru utilizator - butoane ce pot controla mișcarea brațului, implicit bătăile

- o funcționalitate posibilă este adăgarea unui microfon și sincronizarea ansambului după bătăile din palme ale utilizatorului

Inspiratie

https://www.youtube.com/watch?v=pOi2FUBZz5A

http://www.sweet-tech-studio.com/2010/09/robotic-drums.html

& others

Utilitate

For fun. Acest proiect ar răspunde automatizării unui instrument de percuție, cum ar fi tarabana.

Descriere generală

Schema bloc

Bătăile brațelor în tobe funcționează, în primul rând, controlate din cod. După stabilirea duratei, intensității pentru bătaia default, se modifică tempo-ul și se dă din cod un ritm care să fie cântat. La atingerea bățului cu toba, se aprinde un led. Ulterior, comenzile pot fi date tobelor prin butoane sau microfon care înregistrează.

Hardware Design

1. Listă de piese

  • piese de baza
  • servomotor mg996r digi hi torque
  • servomotor cu rotație continuă DS04-NFC
  • butoane
  • leduri
  • 8 baterii AA 1.5V
  • 2 x soclu baterii
  • fire tata-tata, mama-mama, tata-mama
  • led RGB

Am folosit doua servomotoare.

MG996r - Primul

- este un servomotor cu rotatie de 90 de grade in ambele parti(desi pe site-ul de unde l-am cumparat scria ca este de 60 de grade)

DS04-NFC

- este un servomotor cu rotatie continua - note: a fost mult mai usor sa ii controlez viteza

Motivul pentru care am folosit servomotoare diferite nu a fost vreunul anume, doar faptul ca DS04-NFC a fost luat de niste colegi si nefolosit.

Cateva poze cu asamblarea motoarelor pe tarabana:

Software Design

Nu am folosit un mediu de dezvoltare, nici biblioteci. Principalul scop al proiectului meu a fost sa fac servomotorul sa se miste rapid si la un unghi mic. Am folosit timer-ul 1 pentru intreruperi si am generat semnale PWM.

Am inceput prin a controla servomotorul MG996r din cod. Acest lucru s-a dovedit a fi destul de complicat din pricina lipsei unui datasheet explicit. Singurele lucruri mentionate in datasheet sunt conectarea pinilor, deci a fost nevoie sa fac aplic metoda trial and error si sa ma uit pe ce au incarcat altii. Am reusit intai sa il fac sa se miste complet stanga, complet dreapta si am aflat ca rotatia lui este de 90 de grade. Din fericire acest lucru nu imi afecteaza proiectul.

Am pornit de la un tutoral de control al servomotoarelor, ce foloseste timer-ul 1. L-am setat in modul Non Inverted PWM, Prescaler la 64 in modul 14(Fast PWM). Servomotoarele functionau la frecventa de 50MHz deci a trebuit sa folosesc timerul 1 pentru ambele, setand pragurile in OCR1A si OCR1B.

Principala greutate pentru Software a fost sa gasesc valorile optime pentru praguri. Pentru mg996r, pragul seta unghiul la care se roteste, iar pentru ds04-nfc pragul seta viteza. Din fericire cel de al doilea a avut un datasheet care macar imi dadea valorile pulsului pentru viteza maxima, spre deosebire de primul.

Dupa aceasta a aparut diferenta intre servomotoare, care afecta gandirea initiala a codului meu. Daca lasam bataia sa aiba aceeasi durata pentru ambele, motorul al doilea ar fi facut un unghi prea mare, deoarece avea viteza mai mare, asa ca a trebuit sa ii fac perioada bataii mai scurta.

Am avut intentia de a folosi un led rgb, schimband culorile in functie de ritm si de batul care bate, dar s-a ars destul de rapid, asa ca am pastrat leduri normale.

Ritmurile date din cod pot fi controlate din butoane, daca sunt activate intreruperile.

Rezultate Obţinute

Servomotorul functioneaza la un unghi de aproximativ 30 de grade, inainte si inapoi, din cod sau controlat prin butoane. Face un zgomot putin mai mare decat tobele, fiind prea puternic.

Am reusit sa controlez servomotoarele destul de bine pana la urma, viteza nu este una foarte mare iar zgomotul facut de servomotoare aproape acopera tobele, dar una peste alta a iesit ceva bine. Deoarece ledul RGB s-a ars, am folosit doua leduri simple, fiecare aprinzandu-se la cate un bat, pe rand.

Am implementat mai multe “ritmuri” si mai pot fi adaugate si altele. Trebuie avut totusi grija la controlul diferit al servomotoarelor.

Cam asa arata:

Dupa asamblarea tobelor: https://youtu.be/TRXh6nln9Do

Bloopers: https://youtu.be/cm2skFPfulg

Concluzii

Un servomotor(fara datasheet) este mai greu de controlat decat ma asteptam :(

Ca sfat, dupa cum spun toti ceilalti:

  • Nu cumparati pe ultima suta de metri piese, deoarece ele ies din stoc foarte repede, mai ales daca sunt ieftine.
  • Inainte sa cumparati ceva, ar fi bine sa verificati ca gasiti suficiente resurse pe internet

Download

Jurnal

23.05.2018 - rotatie la un unghi mai mic si putin mai rapida, controlare prin butoane

08.05.2018 - incarcare cod pe placuta, testare servomotor, rotatie complet stanga - complet dreapta

04.05.2018 - finalizare placa de baza, incarcare bootloader, cumparare servomotor si piese de start

27.04.2018 - lipire componente de baza

22.04.2018 - adăugare introducere, descriere generală şi schema bloc

Bibliografie/Resurse

  • Tot ce mi-a oferit Google
  • Documentația în format PDF
pm/prj2018/cpetrisor/robotic_drums.txt · Last modified: 2021/04/14 17:07 (external edit)
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