Obsah:

Robotické rameno ovládané Arduinem a PC: 10 kroků
Robotické rameno ovládané Arduinem a PC: 10 kroků

Video: Robotické rameno ovládané Arduinem a PC: 10 kroků

Video: Robotické rameno ovládané Arduinem a PC: 10 kroků
Video: Hrajeme si s Arduinem 1: Rozbalení a sestavení - AlzaTech #23 2024, Červenec
Anonim
Image
Image
Teorie za projektem
Teorie za projektem

Robotické zbraně jsou v průmyslu široce používány. Ať už je to pro montážní operace, svařování nebo se dokonce používá k dokování na ISS (Mezinárodní vesmírná stanice), pomáhají lidem v práci nebo člověka zcela nahrazují. Rameno, které jsem postavil, je menší zastoupení robotické paže, která má sloužit k pohybu předmětů. Je řízen arduino pro mini, který již má vestavěnou knihovnu pro ovládání serv. Serva jsou řízena PWM (Pulse Width Modulation), což není těžké programovat, ale tato knihovna to usnadňuje. Uživatel může ovládat tato serva potenciometry, které jsou navrženy tak, aby fungovaly jako děliče napětí, nebo z programu na PC, který používá 4 posuvníky pro ovládání servomotorů.

Pro tento projekt jsem musel navrhnout vlastní desku plošných spojů a vyrobit ji, vytvořit 3D modely paže a napsat kód, který to všechno ovládá. Kromě toho jsem v Pythonu zakódoval další program, který vysílá signály do arduina, který dokáže tento signál dekódovat a přesunout serva do polohy, kterou uživatel nastavil.

Krok 1: Teorie za projektem

Teorie za projektem
Teorie za projektem

Arduino je skvělé v tom, že nabízí bezplatnou knihovnu, se kterou můžete pracovat. Pro tento projekt jsem použil knihovnu Servo.h, díky které je ovládání servo mnohem jednodušší.

Servomotor je řízen modulací šířky pulsu PWM - což znamená, že k ovládání servopohonu je nutné vytvářet krátké napěťové impulsy. Servo může dekódovat délku tohoto signálu a otočit se do dané polohy. A zde jsem použil již zmíněnou knihovnu. Nemusela jsem sama počítat délku signálu, ale použila jsem funkce knihovny, do které jsem jen předala parametr ve stupních, a to dělá signál.

Pro ovládání serva jsem použil potenciometry, které fungují jako děliče napětí. Desky Arduino mají několik analogových/digitálních převodníků, které jsem použil pro projekt. V zásadě arduino monitoruje napětí na středním pinu na potenciometru a pokud se otáčí na jedné straně, napětí na něm je 0 voltů (hodnota = 0) a na druhé straně je 5 voltů (hodnota = 1023). Tato hodnota je poté škálována z rozsahu 0 - 1023 na 0 - 180 a poté je předána do již zmíněné funkce.

Dalším tématem je sériová komunikace s arduino, které se budu zabývat jen krátce. Program napsaný na PC v zásadě odesílá hodnotu zvolenou uživatelem, arduino ji může dekódovat a přesunout servo do dané polohy

Krok 2: Navrhování DPS

Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS

Navrhl jsem 2 desky plošných spojů - jednu pro hlavní ovládání, kde je arduino a kolíky pro serva, a pro druhé jsou potenciometry. Důvodem pro 2 DPS je, že jsem chtěl ovládat robotické rameno z bezpečné vzdálenosti. Oba obvody jsou propojeny kabelem dané délky - v mém případě 80 cm.

Jako zdroj energie jsem zvolil externí adaptér, protože serva, která jsem použil, spotřebovávají mnohem více energie, než dokáže arduino dodat. Jak vidíte, existují kondenzátory, o kterých jsem se ještě nezmínil. Jsou to kondenzátory používané k filtraci. Jak nyní víte, servomotor je řízen krátkými impulsy. Tyto impulsy mohou způsobit, že poklesy napájecího napětí a potenciometry, které dříve měly rozsah 0-5 voltů, nyní mají menší rozsah. To znamená, že napětí na středním pinu se změní a arduino získá tuto hodnotu a změní polohu, ve které je servomotor. To může pokračovat navždy a způsobuje to nežádoucí oscilace, které mohou být eliminovány některými kondenzátory paralelně s napájením.

Krok 3: Výroba DPS

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

Pro výrobu PCB doporučuji přečíst si toto.

Použil jsem metodu Iron on Glossy paper a fungovalo to skvěle.

Poté jsem připájel díly na desku plošných spojů. Vidíte, že jsem použil arduino socket pro případ, že ho budu v budoucnu potřebovat.

Krok 4: Navrhování paže

Navrhování paže
Navrhování paže
Navrhování paže
Navrhování paže
Navrhování paže
Navrhování paže

Nebyla to zdaleka nejtěžší část tohoto projektu.

Celá sestava je vyrobena z 8 částí, kde 4 nejsou pohyblivé části - krabice pro potenciometry a základna, kde se nachází arduino - a další čtyři jsou rameno samotné. Nebudu se příliš rozepisovat, kromě toho, že design je docela intuitivní a nějakým způsobem jednoduchý. Je navržen tak, aby odpovídal mým vlastním deskám plošných spojů a servům, které zahrnu do seznamu dílů.

Krok 5: Tisk dílů

Tisk dílů
Tisk dílů
Tisk dílů
Tisk dílů
Tisk dílů
Tisk dílů

Díly byly vytištěny na tiskárně Prusa. Některé tváře bylo potřeba trochu zbrousit a do žlábků vyvrtat otvory. Bylo také nutné odstranit podpůrné pilíře.

Krok 6: Dát to všechno dohromady

Dát to všechno dohromady
Dát to všechno dohromady
Dát to všechno dohromady
Dát to všechno dohromady
Dát to všechno dohromady
Dát to všechno dohromady
Dát to všechno dohromady
Dát to všechno dohromady

V tomto kroku, jak název říká, jsem to dal dohromady.

Nejprve jsem připájel vodiče na potenciometry a potom ty vodiče na DPS. Potenciometry hezky pasují do děr a PCB jsem za horka nalepil na pilíře, které byly natištěny na dně krabice. Do desky a do krabice můžete vyvrtat otvory, ale zjistil jsem, že lepení je víc než dost. Potom jsem zavřel obě části krabice a zajistil je na místě pomocí 4 šroubů, které zapadají do otvorů, které jsem navrhl.

Jako další krok jsem vytvořil plochý plochý kabel pro připojení obou desek.

V hlavní krabici jsem připájel vodiče od VCC pinu konektoru k přepnutí a pak k Vcc desky a od GND desky k GND konektoru. Pak jsem za horka nalepil konektor na místo a desku na pilíře. Konektor zapadá přímo do otvoru, takže není potřeba žádné horké lepidlo.

Poté jsem pomocí šroubů připevnil spodní servo ke spodní části krabice.

Poté jsem na spodní část nasadil horní část krabice a stejně jako u krabice s potenciometrem jsem ji zajistil 4 šrouby.

Další část byla trochu složitá, ale podařilo se mi dát zbytek paže dohromady s různými maticemi a podložkami a nebylo to tak těsné, jak jsem očekával, protože jsem navrhl určité tolerance mezi částmi, takže je snazší s nimi pracovat.

A jako poslední krok jsem na dno krabic vložil pásku, protože jinak by klouzaly.

Krok 7: Programování Arduina

Programování Arduina
Programování Arduina
Programování Arduina
Programování Arduina
Programování Arduina
Programování Arduina

Už jsem zmínil, jak program teoreticky funguje za projektem, ale ještě to rozdělím.

Na začátku tedy musíme definovat některé proměnné. Většinou se kopíruje 4krát, protože máme 4 serva a podle mého názoru není nutné dělat složitější logiku, jen aby byl program o něco kratší.

Dále je zde neplatné nastavení, kde jsou definovány piny serva.

Pak je tu void loop - část programu, která se nekonečně opakuje. V této části program převezme hodnotu z měřítka potenciometru a uvede ji na výstup. Ale je tu jeden problém, že hodnota z potenciometru docela skáče, takže jsem potřeboval přidat filtr, který dělá průměr posledních 5 hodnot a pak to dává na výstup. Tím se zabrání nežádoucímu kolísání.

Poslední část programu čte data ze sériového portu a na základě odeslaných dat se rozhodne, co má dělat.

Abyste plně porozuměli kódu, doporučuji navštívit oficiální webové stránky arduino.

Krok 8: Programování v Pythonu

Programování v Pythonu
Programování v Pythonu
Programování v Pythonu
Programování v Pythonu
Programování v Pythonu
Programování v Pythonu

Tato část tohoto projektu není nutná, ale domnívám se, že dává tomuto projektu jen větší hodnotu.

Python nabízí spoustu knihoven, které lze zdarma používat, ale v tomto projektu používám pouze tkinter a serial. Tkinter se používá pro GUI (grafické uživatelské rozhraní) a sériový, jak říká jeho název, se používá pro sériovou komunikaci.

Tento kód vytvoří GUI se 4 jezdci, které mají minimální hodnotu 0 a maximum 180. Může pro vás být nápověda, že je ve stupních a každý posuvník je naprogramován tak, aby ovládal jedno servo. Tento program je poměrně jednoduchý - vezme hodnotu a odešle ji do arduina. Zajímavý je ale způsob odesílání. Pokud se rozhodnete změnit hodnotu prvního serva na 123 stupňů, odešle se na hodnotu arduino 1123. První číslo každého odeslaného čísla říká, které servo se chystá ovládat. Arduino má kód, který to dokáže dekódovat a přesunout správné servo.

Krok 9: Seznam dílů

Seznam dílů
Seznam dílů
  • Arduino Pro Mini 1 kus
  • Servo FS5106B 1 kus
  • Servo Futaba S3003 2 kusy
  • Kolíková lišta 2x5 1 kus
  • Kolíková lišta 1x3 6 kusů
  • Kondenzátor 220uF 3 kusy
  • Micro Servo FS90 1 kus
  • Konektor AWP-10 2 kusy
  • Konektor FC681492 1 kus
  • Přepínač P-B100G1 1 kus
  • Zásuvka 2x14 1 kus
  • TTL-232R-5v-převodník 1 kus
  • Potenciometr B200K 4 kusy
  • a mnoho dalších šroubů, podložek a matic

Krok 10: Závěrečné myšlenky

Děkuji, že jste si to přečetli a doufám, že jsem vás alespoň motivoval. Toto je můj první větší projekt, který jsem vytvořil úplně sám bez kopírování věcí z internetu a prvního příspěvku s instrukcemi. Vím, že rameno by bylo možné upgradovat, ale zatím jsem s ním spokojený. Všechny části a zdrojové kódy jsou zdarma, můžete je používat a libovolně měnit. Pokud máte nějaké otázky, neváhejte se jich zeptat v sekci komentářů. Můžete se také podívat na videa, která nejsou ve skvělé kvalitě, ale ukazují funkčnost projektu.

Doporučuje: