Sadržaj:

Arduino i PC upravljaju robotskom rukom: 10 koraka
Arduino i PC upravljaju robotskom rukom: 10 koraka

Video: Arduino i PC upravljaju robotskom rukom: 10 koraka

Video: Arduino i PC upravljaju robotskom rukom: 10 koraka
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, Juli
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 stanica), pomažu ljudima u radu ili potpuno zamjenjuju ljude. Ruka koju sam izgradio je manji prikaz robotske ruke koja bi se trebala koristiti za pomicanje objekata. Njime upravlja arduino pro mini koji već ima ugrađenu biblioteku za upravljanje servo pogonima. Servomotorima upravlja PWM (Pulse Width Modulation) koji nije teško programirati, ali ova biblioteka 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čunaru 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 svega, kodirao sam dodatni program u pythonu koji šalje signale arduinu koji uspijeva dekodirati taj signal i premjestiti servosisteme u položaj koji je korisnik postavio.

Korak 1: Teorija iza projekta

Teorija iza projekta
Teorija iza projekta

Arduino je odličan po tome što nudi besplatnu biblioteku za rad. Za ovaj projekt koristio sam biblioteku Servo.h koja uvelike olakšava upravljanje servo pogonima.

Servo motor kontrolira PWM -Pulse Width Modulation- što znači da za upravljanje servo -om morate napraviti kratke naponske impulse. Servo može dekodirati dužinu ovog signala i rotirati se u zadani položaj. Ovdje sam koristio već spomenutu biblioteku. Nisam morao sam izračunati dužinu signala, već sam koristio funkcije biblioteke kojima 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, a ako se rotira na jednu stranu napon na njemu je 0 volti (vrijednost = 0), a s druge strane 5 volti (vrijednost = 1023). Ova vrijednost se zatim skalira iz raspona 0 - 1023 do 0 - 180, a zatim se prenosi 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 je može dekodirati i pomaknuti servo na zadani položaj

Korak 2: Dizajniranje PCB -a

Projektovanje PCB -a
Projektovanje PCB -a
Projektovanje PCB -a
Projektovanje PCB -a
Projektovanje PCB -a
Projektovanje PCB -a

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

Za izvor napajanja odabrao sam vanjski adapter jer su servomotori koje sam koristio trošili mnogo više energije nego što arduino može isporučiti. Kao što vidite, postoje neki kondenzatori koje još nisam spomenuo. To 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 ranije 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. Ovo 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 Iron on Glossy paper i odlično se pokazalo.

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

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: Štampanje dijelova

Štampanje delova
Štampanje delova
Štampanje delova
Štampanje delova
Štampanje delova
Štampanje delova

Delovi su štampani na štampaču Prusa. Neka lica je trebalo malo brusiti i izbušiti rupe. Također je potrebno ukloniti potporne stubove.

Korak 6: Sastavite 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
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 stubove 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 pomoću 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. Konektor se uklapa pravo u rupu tako da nije potrebno vruće ljepilo.

Zatim sam pomoću vijaka pričvrstio donji servo na dno kutije.

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

Sljedeći dio je bio pomalo zeznut, ali uspio sam spojiti ostatak ruke s raznim maticama i jastučićima i nije bilo tako čvrsto koliko 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 razbiti.

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 ponavlja beskonačno. U ovom dijelu program uzima vrijednost sa skale potenciometra i stavlja na izlaz. No, postoji jedan problem što vrijednost s potenciometra prilično skače pa sam morao dodati filter koji čini prosjek zadnjih 5 vrijednosti, a zatim daje izlaz. Time se sprječava neželjeno ljuljanje.

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

Da 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 neophodan, 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 grafički interfejs sa 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 program je prilično jednostavan - uzima vrijednost i šalje je u arduino. Ali način na koji šalje je zanimljiv. 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: Lista dijelova

Popis dijelova
Popis dijelova
  • Arduino Pro Mini 1 komad
  • Servo FS5106B 1 komad
  • Servo Futaba S3003 2 komada
  • Pin header 2x5 1 komad
  • Pin zaglavlje 1x3 6 komada
  • Kondenzator 220uF 3 komada
  • Mikro servo FS90 1 komad
  • Konektor AWP-10 2 komada
  • Konektor 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 tim. Svi dijelovi i izvorni kodovi su besplatni, možete ih koristiti i promijeniti na bilo koji način. Ako imate bilo kakvih pitanja, slobodno ih postavite u odjeljku za komentare. Također možete pogledati video zapise, nisu baš dobre kvalitete, ali prikazuju funkcionalnost projekta.

Preporučuje se: