Kazalo:

Robotska roka, ki jo upravljata Arduino in računalnik: 10 korakov
Robotska roka, ki jo upravljata Arduino in računalnik: 10 korakov

Video: Robotska roka, ki jo upravljata Arduino in računalnik: 10 korakov

Video: Robotska roka, ki jo upravljata Arduino in računalnik: 10 korakov
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, Julij
Anonim
Image
Image
Teorija za projektom
Teorija za projektom

Robotsko orožje se pogosto uporablja v industriji. Ne glede na to, ali gre za montažne operacije, varjenje ali celo eno se uporablja za priklop na ISS (Mednarodna vesoljska postaja), pomagajo ljudem pri delu ali popolnoma nadomestijo ljudi. Roka, ki sem jo zgradil, je manjša predstavitev robotske roke, ki naj bi se uporabljala za premikanje predmetov. Upravlja ga arduino pro mini, ki ima že vgrajeno knjižnico za krmiljenje servomotorjev. Servomotorje nadzira PWM (Pulse Width Modulation), ki jih ni težko programirati, vendar ta knjižnica olajša delo. Uporabnik lahko upravlja te servomotorje s potenciometri, ki so zasnovani tako, da delujejo kot delilniki napetosti, ali iz programa na osebnem računalniku, ki uporablja 4 drsnike za krmiljenje servo motorjev.

Za ta projekt sem moral oblikovati tiskano vezje po meri in ga izdelati, ustvariti 3D modele roke in napisati kodo, ki vse to nadzoruje. Poleg tega sem kodiral dodaten program v pythonu, ki pošilja signale arduinu, ki mu uspe dekodirati ta signal in premakniti servomotorje na položaj, ki ga je nastavil uporabnik.

1. korak: Teorija za projektom

Teorija za projektom
Teorija za projektom

Arduino je odličen tako, da ponuja brezplačno knjižnico za delo. Za ta projekt sem uporabil knjižnico Servo.h, ki olajša nadzor servomotorjev.

Servo motor krmili PWM -Pulse Width Modulation- kar pomeni, da morate za krmiljenje servomotorja narediti kratke napetostne impulze. Servo lahko dekodira dolžino tega signala in se zasuka v dani položaj. Tu sem uporabil že omenjeno knjižnico. Dolžine signala mi ni bilo treba izračunati sam, ampak sem uporabil funkcije knjižnice, ki jim posredujem samo parameter v stopinjah in oddaja signal.

Za krmiljenje servomotorjev sem uporabil potenciometre, ki delujejo kot delilniki napetosti. Arduino plošče imajo več analogno/digitalnih pretvornikov, ki sem jih uporabil za projekt. Arduino v bistvu spremlja napetost na srednjem zatiču na potenciometru in če se vrti na eno stran, je na njem 0 voltov (vrednost = 0), na drugi strani pa 5 voltov (vrednost = 1023). Ta vrednost se nato prilagodi iz območja 0 - 1023 na 0 - 180 in se nato prenese na že omenjeno funkcijo.

Druga tema je serijska komunikacija z arduinom, ki jo bom na kratko obravnaval. V bistvu program, napisan na osebnem računalniku, pošilja vrednost, ki jo izbere uporabnik, arduino jo lahko dekodira in premakne servo v dani položaj

2. korak: Oblikovanje PCB -ja

Oblikovanje PCB
Oblikovanje PCB
Oblikovanje PCB
Oblikovanje PCB
Oblikovanje PCB
Oblikovanje PCB

Oblikoval sem 2 tiskana vezja - enega za glavno krmiljenje, kjer je arduino in zatiče za servomotorje, na drugem pa potenciometre. Razlog za 2 tiskana vezja je, da sem želel robotsko roko nadzorovati z varne razdalje. Oba vezja sta povezana s kablom določene dolžine - v mojem primeru 80 cm.

Za vir energije sem se odločil za zunanji adapter, ker servomotorji, ki sem jih uporabil, porabijo veliko več energije, kot jo lahko zagotovi arduino. Kot vidite, obstaja nekaj kondenzatorjev, ki jih še nisem omenil. So kondenzatorji, ki se uporabljajo za filtriranje. Kot veste, servo motor krmilijo kratki impulzi. Ti impulzi lahko povzročijo, da imajo padci napajalne napetosti in potenciometri, ki so bili prej v območju 0-5 voltov, zdaj manjši. To pomeni, da se napetost na srednjem zatiču spremeni in arduino dobi to vrednost in spremeni položaj, v katerem je servo motor. To lahko traja večno in povzroči neželena nihanja, ki jih lahko odpravijo nekateri kondenzatorji, ki so vzporedni z napajanjem.

3. korak: Izdelava PCB -ja

Izdelava PCB
Izdelava PCB
Izdelava PCB
Izdelava PCB
Izdelava PCB
Izdelava PCB

Za izdelavo PCB -ja vam predlagam, da to preberete.

Uporabil sem metodo Iron on Glossy paper in se je odlično obnesla.

Nato sem dele spajkal na tiskano vezje. Vidite, da sem uporabil arduino vtičnico, če jo bom potreboval v prihodnosti.

4. korak: Oblikovanje roke

Oblikovanje roke
Oblikovanje roke
Oblikovanje roke
Oblikovanje roke
Oblikovanje roke
Oblikovanje roke

To nikakor ni bil najtežji del pri izdelavi tega projekta.

Celotna nastavitev je narejena iz 8 delov, kjer 4 niso gibljivi deli - škatla za potenciometre in podnožje, kjer se nahaja arduino - in drugi štirje so roka. Ne bom se spuščal v podrobnosti, razen da je oblikovanje precej intuitivno in na nek način preprosto. Zasnovan je tako, da ustreza mojim tiskanim vezjem in servo pogonom, ki jih bom vključil na seznam delov.

5. korak: Tiskanje delov

Tiskanje delov
Tiskanje delov
Tiskanje delov
Tiskanje delov
Tiskanje delov
Tiskanje delov

Deli so bili natisnjeni na tiskalniku Prusa. Nekatere obraze je bilo treba nekoliko zmleti in izvrtati luknje. Odstraniti je bilo treba tudi nosilne stebre.

Korak 6: Združite vse skupaj

Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj

V tem koraku, kot pravi naslov, sem vse sestavil.

Najprej sem spajal žice na potenciometrih, nato pa te žice na tiskanem vezju. Potenciometri so se lepo prilegali luknjam in vroče sem lepil tiskano vezje na stebre, ki so bili natisnjeni na dnu škatle. V deski in v škatli lahko izvrtate luknje, vendar sem ugotovil, da je lepljenje več kot dovolj. Nato sem zaprl oba dela škatle in ju pritrdil s štirimi vijaki, ki se prilegajo luknjam, ki sem jih oblikoval.

Kot naslednji korak sem naredil ploski tračni kabel za povezavo obeh plošč.

V glavni škatli sem spajkal žice iz VCC zatiča priključka za preklop in nato na Vcc plošče in od GND plošče do GND konektorja. Nato sem vroče prilepil konektor na mesto in ploščo na stebrih. Priključek se prilega naravnost v luknjo, tako da vroče lepilo ni potrebno.

Nato sem z vijaki pritrdil spodnji servo na dno škatle.

Nato sem zgornji del škatle namestil na spodnji del in ga tako kot s potenciometrično škatlo pritrdil s 4 vijaki.

Naslednji del je bil nekoliko težaven, vendar mi je preostali del roke uspelo sestaviti z različnimi maticami in blazinicami in ni bil tako tesen, kot sem pričakoval, ker sem oblikoval nekaj odstopanj med deli, zato je z njimi lažje delati.

In kot zadnji korak sem na dno škatel položil trak, ker bi sicer drsili.

7. korak: Programiranje Arduina

Programiranje Arduina
Programiranje Arduina
Programiranje Arduina
Programiranje Arduina
Programiranje Arduina
Programiranje Arduina

Omenil sem že, kako program teoretično deluje za projektom, vendar ga bom še bolj razčlenil.

Zato moramo na začetku določiti nekatere spremenljivke. Večinoma se kopira 4 -krat, ker imamo 4 servomotorje in po mojem mnenju ni treba komplicirati logike, samo da bi program nekoliko skrajšal.

Sledi nastavitev praznine, kjer so definirani zatiči servomotorjev.

Potem je void loop - del programa, ki se zvija v neskončnosti. V tem delu program vzame vrednost iz lestvice potenciometra in vklopi izhod. Obstaja pa en problem, da vrednost potenciometra precej skoči, zato sem moral dodati filter, ki naredi povprečje zadnjih 5 vrednosti, nato pa daje na izhodu. To preprečuje neželeno nihanje.

Zadnji del programa bere podatke iz serijskih vrat in se na podlagi poslanih podatkov odloči, kaj bo storil.

Za popolno razumevanje kode predlagam, da obiščete uradna spletna mesta arduino.

8. korak: Programiranje v Pythonu

Programiranje v Pythonu
Programiranje v Pythonu
Programiranje v Pythonu
Programiranje v Pythonu
Programiranje v Pythonu
Programiranje v Pythonu

Ta del tega projekta ni nujen, vendar mislim, da daje temu projektu le večjo vrednost.

Python ponuja številne knjižnice, ki so brezplačne za uporabo, vendar v tem projektu uporabljam samo tkinter in serijsko. Tkinter se uporablja za grafični uporabniški vmesnik (Graphical User Interface) in serijsko, kot že njegovo ime pravi, za serijsko komunikacijo.

Ta koda ustvari grafični vmesnik s 4 drsniki, ki imajo minimalno vrednost 0 in največ 180. Morda vam bo namignil, da je v stopinjah in da je vsak drsnik programiran za krmiljenje enega servomotorja. Ta program je precej preprost - vzame vrednost in jo pošlje v arduino. Je pa zanimiv način pošiljanja. Če se odločite spremeniti vrednost prvega servomotorja na 123 stopinj, ga pošlje na arduino vrednost 1123. Prva številka vsake poslane številke pove, kateri servo bo kmalu nadzorovan. Arduino ima kodo, ki lahko to dekodira in premakne desni servo.

9. korak: Seznam delov

Seznam delov
Seznam delov
  • Arduino Pro Mini 1 kos
  • Servo FS5106B 1 kos
  • Servo Futaba S3003 2 kosa
  • Igla za glavo 2 x 5 1 kos
  • Igla za glavo 1x3 6 kosov
  • Kondenzator 220uF 3 kosi
  • Mikro servo FS90 1 kos
  • Priključek AWP-10 2 kosa
  • Priključek FC681492 1 kos
  • Stikalo P-B100G1 1 kos
  • Vtičnica 2x14 1 kos
  • TTL-232R-5v-pretvornik 1 kos
  • Potenciometer B200K 4 kosi
  • in še veliko več vijakov, blazinic in matic

10. korak: Zadnje misli

Hvala, ker ste to prebrali in upam, da sem vas vsaj motiviral. To je moj prvi večji projekt, ki sem ga naredil sam, ne da bi kopiral stvari iz interneta in prve objave z navodili. Vem, da bi roko lahko nadgradili, vendar sem zaenkrat z njo zadovoljen. Vsi deli in izvorne kode so brezplačni, vabljeni, da jih uporabite in spremenite na kakršen koli način. Če imate kakršna koli vprašanja, jih vprašajte v razdelku za komentarje. Ogledate si lahko tudi videoposnetke, ki niso odlične kakovosti, vendar prikazujejo funkcionalnost projekta.

Priporočena: