Sadržaj:

Arduino i računalo upravljaju robotskom rukom: 10 koraka
Arduino i računalo upravljaju robotskom rukom: 10 koraka

Video: Arduino i računalo upravljaju robotskom rukom: 10 koraka

Video: Arduino i računalo upravljaju robotskom rukom: 10 koraka
Video: Урок 77: Использование лазерного датчика расстояния VL53L0X 200 см | Пошаговый курс Arduino 2024, Srpanj
Anonim
Image
Image
Teorija iza projekta
Teorija iza projekta

Robotsko oružje široko se koristi u industriji. Bilo da se radi o montažnim operacijama, zavarivanje ili čak jedno se koristi za pristajanje na ISS (Međunarodna svemirska postaja), pomažu ljudima u radu ili potpuno zamjenjuju čovjeka. Ruka koju sam izgradio manji je prikaz robotske ruke koja bi se trebala koristiti za pomicanje objekata. Njime upravlja arduino pro mini koji već ima ugrađenu knjižnicu za upravljanje servo pogonima. Servomote kontrolira PWM (Pulse Width Modulation) koji nije teško programirati, ali ova knjižnica olakšava rad. Korisnik može upravljati tim servo pogonima pomoću potenciometara koji su dizajnirani da djeluju kao razdjelnici napona ili iz programa na računalu koji koristi 4 klizača za upravljanje servo motorima.

Za ovaj projekt morao sam dizajnirati prilagođenu PCB ploču i izraditi je, stvoriti 3D modele ruke i napisati kod koji sve to kontrolira. Povrh toga, kodirao sam dodatni program u pythonu koji šalje signale arduinu koji uspijeva dekodirati taj signal i pomaknuti servosisteme u položaj koji je korisnik postavio.

Korak 1: Teorija iza projekta

Teorija iza projekta
Teorija iza projekta

Arduino je izvrstan na taj način što nudi besplatnu knjižnicu za rad. Za ovaj projekt koristio sam biblioteku Servo.h koja uvelike olakšava upravljanje servo pogonima.

Servo motorom upravlja PWM -Pulse Width Modulation- što znači da za upravljanje servo -om morate napraviti kratke naponske impulse. Servo može dekodirati duljinu ovog signala i rotirati se u zadani položaj. Ovdje sam koristio već spomenutu knjižnicu. Nisam morao sam izračunati duljinu signala, već sam koristio funkcije knjižnice kojoj samo proslijedim parametar u stupnjevima i on daje signal.

Za upravljanje servo pogonima koristio sam potenciometre koji djeluju kao razdjelnici napona. Arduino ploče imaju nekoliko analogno/digitalnih pretvarača koje sam koristio za projekt. U osnovi arduino prati napon na srednjem pinu na potenciometru i ako se rotira na jednu stranu napon na njemu je 0 volti (vrijednost = 0), a s druge strane je 5 volti (vrijednost = 1023). Ta se vrijednost zatim skalira iz raspona 0 - 1023 na 0 - 180, a zatim se prosljeđuje na već spomenutu funkciju.

Druga tema je serijska komunikacija s arduinom koju ću ukratko obraditi. U osnovi program napisan na računalu šalje vrijednost koju odabere korisnik, arduino ju može dekodirati i pomaknuti servo na zadani položaj

Korak 2: Projektiranje PCB -a

Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a

Dizajnirao sam 2 PCB -a - jedan za glavnu kontrolu gdje je arduino i pinovi za servo, a na drugom su potenciometri. Razlog za 2 PCB -a je što sam želio kontrolirati robotsku ruku sa sigurne udaljenosti. Oba kruga su spojena kabelom zadane duljine - u mom slučaju 80 cm.

Za izvor napajanja odabrao sam vanjski adapter jer servo koji sam koristio troše mnogo više energije nego što arduino može isporučiti. Kao što vidite, postoje neki kondenzatori koje još nisam spomenuo. Oni su kondenzatori koji se koriste za filtriranje. Kao što sada znate, servo motorom upravljaju kratki impulsi. Ti impulsi mogu učiniti da padovi napona napajanja i potenciometri koji su prije imali raspon 0-5 volti sada imaju manji raspon. To znači da se napon na srednjem pinu mijenja i arduino dobiva ovu vrijednost i mijenja položaj u koji se nalazi servo motor. To može trajati zauvijek i uzrokuje neželjene oscilacije koje se mogu ukloniti nekim kondenzatorima paralelno s napajanjem.

Korak 3: Izrada PCB -a

Izrada PCB -a
Izrada PCB -a
Izrada PCB -a
Izrada PCB -a
Izrada PCB -a
Izrada PCB -a

Za izradu PCB -a predlažem da ovo pročitate.

Koristio sam metodu željeza na sjajnom papiru i odlično se pokazala.

Zatim sam lemio dijelove na PCB -u. Možete vidjeti da sam koristio arduino utičnicu u slučaju da će mi u budućnosti trebati.

Korak 4: Dizajniranje ruke

Dizajniranje ruke
Dizajniranje ruke
Dizajniranje ruke
Dizajniranje ruke
Dizajniranje ruke
Dizajniranje ruke

Ovo nikako nije bio najteži dio izrade ovog projekta.

Cijela postavka sastoji se od 8 dijelova gdje 4 nisu pokretni dijelovi - kutija za potenciometre i baza na kojoj se nalazi arduino - a druga četiri su sama ruka. Neću ulaziti u detalje, osim što je dizajn prilično intuitivan i na neki način jednostavan. Dizajniran je tako da odgovara mojim prilagođenim PCB -ovima i servo motorima koje ću uključiti u popis dijelova.

Korak 5: Ispis dijelova

Ispis dijelova
Ispis dijelova
Ispis dijelova
Ispis dijelova
Ispis dijelova
Ispis dijelova

Dijelovi su ispisani na pisaču Prusa. Neka su lica potrebno malo izbrušiti i izbušiti rupe. Također je potrebno ukloniti potporne stupove.

Korak 6: Sve spojite

Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno

U ovom koraku, kako naslov kaže, sve sam spojio.

Prvo sam lemio žice na potenciometrima, a zatim te žice na PCB -u. Potenciometri su se lijepo uklopili u rupe i vruće sam zalijepio PCB na stupove koji su bili otisnuti na dnu kutije. Možete izbušiti rupe na ploči i u kutiji, ali otkrio sam da je lijepljenje više nego dovoljno. Zatim sam zatvorio oba dijela kutije i učvrstio ih na mjestu s 4 vijka koji se uklapaju u rupe koje sam dizajnirao.

Kao sljedeći korak napravio sam ravni vrpčani kabel za spajanje obje ploče.

U glavnoj kutiji sam lemio žice od VCC pina konektora za prebacivanje, a zatim na Vcc ploče i od GND ploče do GND konektora. Zatim sam vruće zalijepio konektor na mjesto i ploču na stupovima. Priključak se uklapa ravno u rupu pa nije potrebno vruće ljepilo.

Zatim sam vijcima pričvrstio donji servo na dno kutije.

Nakon toga sam gornji dio kutije stavio na donji dio i isto kao i s kutijom potenciometra učvrstio sam je s 4 vijka.

Sljedeći je dio bio pomalo zeznut, ali uspio sam spojiti ostatak ruke s raznim maticama i jastučićima i nije bilo tako čvrsto kao što sam očekivao jer sam dizajnirao neke tolerancije između dijelova, pa je lakše raditi s njima.

I kao posljednji korak stavio sam traku na dno kutija jer bi u protivnom klizile.

Korak 7: Programiranje Arduina

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

Već sam spomenuo kako program radi u teoriji iza projekta, ali ću ga još više rastaviti.

Dakle, na početku moramo definirati neke varijable. Uglavnom se kopira 4 puta jer imamo 4 serva i po mom mišljenju nije potrebno komplicirati logiku samo da bi program bio kraći.

Slijedi postavljanje praznina gdje su definirani pinovi servo pogona.

Zatim postoji void loop - dio programa koji se beskonačno petlja. U ovom dijelu program uzima vrijednost iz skale potenciometra i stavlja na izlaz. No, postoji jedan problem što vrijednost s potenciometra prilično skače pa sam morao dodati filtar koji čini prosjek zadnjih 5 vrijednosti, a zatim daje izlaz. Time se sprječava neželjeno ljuljanje.

Zadnji dio programa čita podatke sa serijskog porta i odlučuje što učiniti na temelju poslanih podataka.

Kako biste u potpunosti razumjeli kod, predlažem vam da posjetite službene arduino web stranice.

Korak 8: Programiranje u Pythonu

Programiranje u Pythonu
Programiranje u Pythonu
Programiranje u Pythonu
Programiranje u Pythonu
Programiranje u Pythonu
Programiranje u Pythonu

Ovaj dio ovog projekta nije nužan, ali mislim da samo daje veću vrijednost ovom projektu.

Python nudi mnoštvo besplatnih biblioteka, ali u ovom projektu koristim samo tkinter i serijske. Tkinter se koristi za GUI (grafičko korisničko sučelje) i serijski kako mu naziv kaže koristi se za serijsku komunikaciju.

Ovaj kôd stvara GUI s 4 klizača čija je minimalna vrijednost 0, a maksimalna 180. Možda će vam nagovijestiti da je u stupnjevima i da je svaki klizač programiran za upravljanje jednim servo pogonom. Ovaj je program prilično jednostavan - uzima vrijednost i šalje je u arduino. No, zanimljiv je način na koji šalje. Ako odlučite promijeniti vrijednost prvog serva na 123 stupnja, on se šalje na arduino vrijednost 1123. Prvi broj svakog poslanog broja govori koji će servo biti kontroliran. Arduino ima kod koji to može dekodirati i pomaknuti desni servo.

Korak 9: Popis dijelova

Popis dijelova
Popis dijelova
  • Arduino Pro Mini 1 komad
  • Servo FS5106B 1 komad
  • Servo Futaba S3003 2 komada
  • Zaglavlje igle 2x5 1 komad
  • Zaglavlje igle 1x3 6 komada
  • Kondenzator 220uF 3 komada
  • Mikro servo FS90 1 komad
  • Priključak AWP-10 2 komada
  • Priključak FC681492 1 komad
  • Prekidač P-B100G1 1 komad
  • Utičnica 2x14 1 komad
  • TTL-232R-5v-pretvarač 1 komad
  • Potenciometar B200K 4 komada
  • i još mnogo vijaka, pločica i matica

Korak 10: Završne misli

Hvala vam što ste ovo pročitali i nadam se da sam vas barem motivirao. Ovo je moj prvi veći projekt koji sam napravio sam bez kopiranja stvari s interneta i prve objave s uputama. Znam da bi se ruka mogla nadograditi, ali sam zasad zadovoljan s njom. Svi dijelovi i izvorni kodovi su besplatni, možete ih koristiti i promijeniti na bilo koji način koji želite. Ako imate bilo kakvih pitanja, slobodno ih postavite u odjeljku za komentare. Također možete pogledati video zapise, nisu u velikoj kvaliteti, ali prikazuju funkcionalnost projekta.

Preporučeni: