Obsah:

Robotické rameno ovládané Arduino a PC: 10 krokov
Robotické rameno ovládané Arduino a PC: 10 krokov

Video: Robotické rameno ovládané Arduino a PC: 10 krokov

Video: Robotické rameno ovládané Arduino a PC: 10 krokov
Video: DIY | Smartphone (Bluetooth) controlled Robot Arm using Arduino | HC-05 2024, Júl
Anonim
Image
Image
Teória za projektom
Teória za projektom

Robotické zbrane sú v priemysle široko používané. Či už ide o montážne operácie, zváranie alebo sa dokonca jeden používa na ukotvenie na ISS (Medzinárodná vesmírna stanica), pomáhajú ľuďom v práci alebo človeka úplne nahrádzajú. Rameno, ktoré som postavil, je menším zastúpením robotického ramena, ktoré má slúžiť na pohybujúce sa objekty. Ovláda ho arduino pro mini, ktoré už má vstavanú knižnicu na ovládanie serv. Servo je riadené PWM (Pulse Width Modulation), ktoré nie je ťažké naprogramovať, ale táto knižnica to uľahčuje. Užívateľ môže ovládať tieto serva potenciometrami, ktoré sú navrhnuté tak, aby slúžili ako delič napätia alebo z programu na počítači, ktorý na ovládanie servomotorov používa 4 posúvače.

Pre tento projekt som musel navrhnúť vlastnú PCB a vyrobiť ju, vytvoriť 3D modely ramena a napísať kód, ktorý to všetko ovláda. Okrem toho som v pythone kódoval ďalší program, ktorý odosiela signály do arduina, ktorý dokáže tento signál dekódovať a presunúť servá do polohy, ktorú si užívateľ nastavil.

Krok 1: Teória za projektom

Teória za projektom
Teória za projektom

Arduino je skvelé v tom, že ponúka bezplatnú knižnicu, s ktorou môžete pracovať. Na tento projekt som použil knižnicu Servo.h, ktorá veľmi uľahčuje ovládanie serv.

Servomotor je riadený moduláciou šírky impulzu PWM - to znamená, že na ovládanie serva musíte vytvárať krátke napäťové impulzy. Servo môže dekódovať dĺžku tohto signálu a otočiť sa do danej polohy. A tu som použil už spomínanú knižnicu. Nemusel som sám počítať dĺžku signálu, ale použil som funkcie knižnice, do ktorých jednoducho odovzdám parameter v stupňoch a ten signál vytvorí.

Na ovládanie servo som použil potenciometre, ktoré slúžia ako rozdeľovače napätia. Dosky Arduino majú niekoľko analógových/digitálnych prevodníkov, ktoré som použil pre projekt. V zásade arduino monitoruje napätie na strednom kolíku potenciometra a ak sa otáča na jednu stranu, napätie na ňom je 0 voltov (hodnota = 0) a na druhej strane je 5 voltov (hodnota = 1023). Táto hodnota sa potom upraví z rozsahu 0 - 1023 na 0 - 180 a potom sa prenesie do už uvedenej funkcie.

Ďalšou témou je sériová komunikácia s arduino, ktorej sa budem venovať len stručne. Program napísaný na PC v zásade odosiela hodnotu zvolenú používateľom, arduino ju môže dekódovať a presunúť servo do danej polohy

Krok 2: Navrhovanie DPS

Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS

Navrhol som 2 dosky plošných spojov - jednu pre hlavné ovládanie, kde je arduino a kolíky pre serva, a pre druhú sú potenciometre. Dôvodom 2 PCB je to, že som chcel ovládať robotické rameno z bezpečnej vzdialenosti. Oba obvody sú prepojené káblom danej dĺžky - v mojom prípade 80 cm.

Ako zdroj energie som zvolil externý adaptér, pretože servá, ktoré som použil, spotrebúvajú oveľa viac energie, ako dokáže arduino dodať. Ako vidíte, existuje niekoľko kondenzátorov, ktoré som ešte nespomenul. Sú to kondenzátory používané na filtráciu. Ako teraz viete, servomotor je ovládaný krátkymi impulzmi. Tieto impulzy môžu spôsobiť, že poklesy napájacieho napätia a potenciometre, ktoré mali predtým rozsah 0-5 voltov, majú teraz menší rozsah. To znamená, že napätie na strednom kolíku sa zmení a arduino získa túto hodnotu a zmení polohu, v ktorej je servomotor. To môže pokračovať navždy a spôsobuje nežiaduce oscilácie, ktoré môžu byť eliminované niektorými kondenzátormi paralelne s napájaním.

Krok 3: Výroba DPS

Výroba DPS
Výroba DPS
Výroba DPS
Výroba DPS
Výroba DPS
Výroba DPS

Na výrobu DPS odporúčam, aby ste si to prečítali.

Použil som metódu Iron on Glossy paper a fungovalo to skvele.

Potom som spájkoval diely na doske plošných spojov. Môžete vidieť, že arduino zásuvku som použil v prípade, že ju budem v budúcnosti potrebovať.

Krok 4: Navrhovanie ramena

Navrhovanie ramena
Navrhovanie ramena
Navrhovanie ramena
Navrhovanie ramena
Navrhovanie ramena
Navrhovanie ramena

Toto nebola zďaleka najťažšia časť tohto projektu.

Celá zostava je tvorená 8 časťami, z ktorých 4 sú nepohyblivé - box pre potenciometre a základňa, kde sa nachádza arduino - a ďalšie štyri sú samotné rameno. Nebudem sa veľmi rozpisovať, okrem toho, že dizajn je celkom intuitívny a nejakým spôsobom jednoduchý. Je navrhnutý tak, aby vyhovoval mojim vlastným DPS a servám, ktoré zaradím do zoznamu dielov.

Krok 5: Tlač dielov

Tlač dielov
Tlač dielov
Tlač dielov
Tlač dielov
Tlač dielov
Tlač dielov

Časti boli vytlačené na tlačiarni Prusa. Niektoré tváre bolo potrebné trochu obrúsiť a do žľabu vyvŕtať diery. Tiež bolo potrebné odstrániť nosné stĺpiky.

Krok 6: Dajte to všetko dohromady

Dávať to všetko dokopy
Dávať to všetko dokopy
Dávať to všetko dokopy
Dávať to všetko dokopy
Dávať to všetko dokopy
Dávať to všetko dokopy
Dávať to všetko dokopy
Dávať to všetko dokopy

V tomto kroku, ako hovorí názov, som to dal všetko dohromady.

Najprv som spájkoval drôty na potenciometroch a potom tie vodiče na DPS. Potenciometre pekne pasujú do otvorov a DPS som za tepla prilepil na stĺpiky, ktoré boli vytlačené na dne škatule. Do dosky a do škatule môžete vyvŕtať otvory, ale zistil som, že lepiť je viac ako dosť. Potom som zatvoril obe časti škatule a zaistil ich na mieste 4 skrutkami, ktoré zapadli do otvorov, ktoré som navrhol.

Ako ďalší krok som urobil plochý plochý kábel na prepojenie oboch dosiek.

V hlavnej skrinke som spájkoval vodiče z kolíka VCC konektora na prepnutie a potom na Vcc dosky a z GND dosky na GND konektora. Potom som za horúca prilepil konektor na miesto a dosku na stĺpiky. Konektor zapadá priamo do otvoru, takže nie je potrebné žiadne horúce lepidlo.

Potom som pomocou skrutiek pripevnil spodné servo k spodnej časti škatule.

Potom som položil hornú časť krabice na spodnú časť a rovnako ako v krabici s potenciometrom som ju zaistil 4 skrutkami.

Nasledujúca časť bola trochu zložitejšia, ale podarilo sa mi dať zvyšok ramena dohromady s rôznymi maticami a podložkami a nebolo to také tesné, ako som očakával, pretože som medzi časťami navrhol určité tolerancie, takže sa s nimi ľahšie pracuje.

A ako posledný krok som na dno škatúľ umiestnil pásku, pretože inak by sa kĺzali.

Krok 7: Programovanie Arduina

Programovanie Arduina
Programovanie Arduina
Programovanie Arduina
Programovanie Arduina
Programovanie Arduina
Programovanie Arduina

Už som spomenul, ako program teoreticky funguje za projektom, ale rozoberiem to ešte viac.

Na začiatku teda musíme definovať niektoré premenné. Väčšinou sa kopíruje 4 -krát, pretože máme 4 servá a podľa mňa nie je potrebné robiť komplikovanejšiu logiku, len aby bol program o niečo kratší.

Ďalej je tu neplatné nastavenie, kde sú definované kolíky serva.

Potom je tu void loop - časť programu, ktorá sa nekonečne opakuje. V tejto časti program preberá hodnotu z potenciometra, upraví ju a uvedie na výstup. Ale je tu jeden problém, že hodnota z potenciometra dosť skáče, takže som potreboval pridať filter, ktorý robí priemer posledných 5 hodnôt a potom to dáva na výstup. Zabráni sa tým nechcenému kolísaniu.

Posledná časť programu číta údaje zo sériového portu a na základe odoslaných údajov sa rozhodne, čo má urobiť.

Aby ste kódu úplne porozumeli, odporúčam vám navštíviť oficiálne webové stránky arduino.

Krok 8: Programovanie v Pythone

Programovanie v Pythone
Programovanie v Pythone
Programovanie v Pythone
Programovanie v Pythone
Programovanie v Pythone
Programovanie v Pythone

Táto časť tohto projektu nie je potrebná, ale myslím si, že dáva tomuto projektu len väčšiu hodnotu.

Python ponúka veľa bezplatných knižníc, ale v tomto projekte používam iba tkinter a serial. Tkinter sa používa pre GUI (grafické užívateľské rozhranie) a sériový, ako hovorí jeho názov, sa používa pre sériovú komunikáciu.

Tento kód vytvára grafické používateľské rozhranie so 4 posúvačmi, ktoré majú minimálnu hodnotu 0 a maximálnu 180. Mohlo by vám naznačovať, že sú uvedené v stupňoch a každý posúvač je naprogramovaný na ovládanie jedného serva. Tento program je pomerne jednoduchý - vezme hodnotu a odošle ju do arduina. Ale spôsob, akým to posiela, je zaujímavý. Ak sa rozhodnete zmeniť hodnotu prvého serva na 123 stupňov, bude odoslané na hodnotu arduino 1123. Prvé číslo z každého odoslaného čísla hovorí, ktoré servo sa chystá ovládať. Arduino má kód, ktorý to môže dekódovať a presunúť správne servo.

Krok 9: Zoznam dielov

Zoznam dielov
Zoznam dielov
  • Arduino Pro Mini 1 kus
  • Servo FS5106B 1 kus
  • Servo Futaba S3003 2 kusy
  • Kolíková hlavička 2x5 1 kus
  • Kolíková hlavička 1x3 6 kusov
  • Kondenzátor 220uF 3 kusy
  • Micro Servo FS90 1 kus
  • Konektor AWP-10 2 kusy
  • Konektor FC681492 1 kus
  • Prepínač P-B100G1 1 kus
  • Zásuvka 2x14 1 kus
  • TTL-232R-5v-prevodník 1 kus
  • Potenciometer B200K 4 kusy
  • a mnoho ďalších skrutiek, podložiek a matíc

Krok 10: Záverečné myšlienky

Ďakujem, že ste si to prečítali a dúfam, že som vás aspoň motivoval. Toto je môj prvý väčší projekt, ktorý som urobil úplne sám bez kopírovania vecí z internetu a prvého príspevku s pokynmi. Viem, že rameno by sa dalo vylepšiť, ale zatiaľ som s ním spokojný. Všetky diely a zdrojové kódy sú bezplatné. Môžete ich používať a meniť akýmkoľvek spôsobom. Ak máte nejaké otázky, neváhajte sa ich opýtať v sekcii komentárov. Môžete sa tiež pozrieť na videá, ktoré nie sú v dobrej kvalite, ale ukazujú funkčnosť projektu.

Odporúča: