Obsah:
- Krok 1: Veci, ktoré budete potrebovať:-
- Krok 2: Vytvorenie paže:-
- Krok 3: Vytvorenie spojení:-
- Krok 4: Kódovanie:-
- Krok 5: Testovanie:-
Video: Jednoduché a inteligentné robotické rameno pomocou Arduina !!!: 5 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
V tomto návode vyrobím jednoduché robotické rameno. To sa bude ovládať pomocou hlavného ramena. Rameno si zapamätá pohyby a bude hrať postupne. Koncept nie je nový. Dostal som nápad od „mini robotic arm -by Stoerpeak“, ktorý som chcel robiť už dlho, ale vtedy som bol úplne hlúpy a nemal som znalosti o programovaní. Teraz konečne jeden staviam, udržujem ho jednoduchý, lacný a zdieľam ho s vami všetkými.
Začnime teda ….
Krok 1: Veci, ktoré budete potrebovať:-
Tu je zoznam vecí, ktoré budete potrebovať:-
1. Servomotory x 5 Odkaz pre USA:- https://amzn.to/2OxbSH7Link pre Európu:-
2. Potenciometre x 5 (použil som 100 tis.) Odkaz pre USA:- https://amzn.to/2ROjhDMLink pre Európu:-
3. Arduino UNO. (Môžete tiež použiť Arduino Nano) Odkaz pre USA:- https://amzn.to/2DBbENWLink pre Európu:-
4. Breadboard. (Navrhujem túto súpravu) Odkaz pre USA:- https://amzn.to/2Dy86w4Link pre Európu:-
5. Batéria. (voliteľné, používam adaptér 5 V)
6. Kartón/drevo/slnečná doska/akryl, čo je k dispozícii alebo sa dá ľahko nájsť.
A tiež budete potrebovať nainštalované Arduino IDE.
Krok 2: Vytvorenie paže:-
Tu som na výrobu ramena použil tyčinky Popsicle. Môžete použiť akýkoľvek materiál, ktorý máte k dispozícii. A môžete vyskúšať rôzne mechanické prevedenia, aby ste vytvorili ešte lepšie rameno. môj návrh nie je veľmi stabilný.
Na prilepenie servo k tyči Popsicle som použil obojstrannú pásku a upevnil ich pomocou skrutiek.
Pre rameno Master som nalepil potenciometre na nanuky a vyrobil som rameno.
Odkaz na obrázky vám poskytne lepšiu predstavu.
Všetko som namontoval na plátennú dosku veľkosti A4, ktorá sa používa ako základ.
Krok 3: Vytvorenie spojení:-
V tomto kroku vykonáme všetky potrebné pripojenia, pozrite si obrázky vyššie.
- Najprv zapojte všetky serva paralelne k napájaciemu zdroju (červený vodič na +ve a čierny alebo hnedý vodič na GND)
- Potom pripojte signálne vodiče, tj. Žltý alebo oranžový vodič, k kolíku PWM arduina.
- Teraz zapojte potenciometre paralelne k +5v a Gnd z arduina.
- Pripojte stredný terminál k analógovému kolíku ardunio.
Tu sa na ovládanie serva používajú digitálne kolíky 3, 5, 6, 9 a 10
Na vstup z potenciometrov slúžia analógové piny A0 až A4.
Servo pripojené k pinu 3 bude ovládané potenciometrom pripojeným k A0
Servo pripojené k pinu 5 bude ovládané pot na A1, a tak ďalej ….
Poznámka:- Aj keď serva nie sú napájané arduinom, uistite sa, že ste pripojili GND serva k arduinu, inak rameno nebude fungovať.
Krok 4: Kódovanie:-
Logika tohto kódu je pomerne jednoduchá. Hodnoty potenciometrov sú uložené v poli, záznamy sa potom prenášajú pomocou slučky for a serva robia kroky podľa hodnôt. Môžete si pozrieť tento návod, ktorý som použil ako referenciu "Ovládanie a pamäť potenciometra Arduino potenciometra"
Kód:- (Nasledujúci súbor je možné stiahnuť.)
Najprv globálne deklarujeme všetky potrebné premenné, aby sme ich mohli použiť v celom programe. Na to nie je potrebné žiadne špeciálne vysvetlenie
#zahrnúť
// Objekty serva Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Objekty potenciometra int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // premenná na uloženie polohy servo v servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Premenná na ukladanie hodnôt predchádzajúcej polohy int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Predchádzajúci_3_Pos; int Prev_4_Pos; // Premenná na ukladanie hodnôt aktuálnej polohy int Current_0_Pos; int Current_1_Pos; int Aktuálne_2_Pos; int Aktuálne_3_Pos; int Aktuálne_4_Pos; int Servo_Position; // Uloží uhol int Servo_Number; // Uklada nie servo int Storage [600]; // Pole na ukladanie údajov (Zväčšenie veľkosti poľa zaberie viac pamäte) int Index = 0; // Index poľa začína od 0. pozície char data = 0; // premenná na ukladanie údajov zo sériového vstupu.
Teraz napíšeme funkciu nastavenia, kde nastavíme piny a ich funkcie. Toto je hlavná funkcia, ktorá sa vykonáva ako prvá
neplatné nastavenie ()
{Serial.begin (9600); // Sériová komunikácia medzi arduino a IDE. // Na piny PWM sú pripevnené servo objekty. Servo_0.attach (3); Servo_1.attach (5); Servo_2.attach (6); Servo_3.attach (9); Servo_4.attach (10); // Serva sú pri inicializácii nastavené na pozíciu 100. Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ( Stlačením 'R' na nahrávanie a 'P' na prehrávanie); }
Teraz musíme prečítať hodnoty potenciometrov pomocou pinov analógového vstupu a namapovať ich na ovládanie serv. Na to definujeme funkciu a pomenujeme ju Map_Pot (); Môžete ho pomenovať, ako chcete, je to funkcia definovaná používateľom
zrušiť Map_Pot ()
{ / * Servo sa otáča o 180 stupňov, ale použiť ho na limity nie je dobrý nápad, pretože servo bzučí nepretržite, čo je nepríjemné, takže obmedzujeme pohyb serva medzi: 1-179 * / Pot_0 = analogRead (A0); // Prečítajte vstup z hrnca a uložte ho do premennej Pot_0. Servo_0_Pos = mapa (Pot_0, 0, 1023, 1, 179); // Mapovanie serva podľa hodnoty medzi 0 až 1023 Servo_0.write (Servo_0_Pos); // Posuňte servo do tejto polohy. Pot_1 = analogRead (A1); Servo_1_Pos = mapa (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = mapa (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = mapa (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = mapa (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }
Teraz napíšeme funkciu slučky:
prázdna slučka ()
{Map_Pot (); // Volanie funkcie na čítanie hodnôt potu while (Serial.available ()> 0) {data = Serial.read (); if (data == 'R') Serial.println ("Nahrávanie sa presúva …"); if (data == 'P') Serial.println ("Prehrávanie zaznamenaných ťahov …"); } if (data == 'R') // Ak je zadané 'R', spustite nahrávanie. {// Uložte hodnoty do premennej Prev_0_Pos = Servo_0_Pos; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot (); // Funkcia mapy vyvolaná na porovnanie if (abs (Prev_0_Pos == Servo_0_Pos)) // absolútna hodnota sa získa porovnaním {Servo_0.write (Servo_0_Pos); // Ak sa hodnoty zhodujú, servo sa premiestni, ak (Current_0_Pos! = Servo_0_Pos) // Ak sa hodnoty nezhodujú {Storage [Index] = Servo_0_Pos + 0; // Hodnota sa pridá do poľa Index ++; // Hodnota indexu sa zvýši o 1} Current_0_Pos = Servo_0_Pos; } /* Podobne sa porovnanie hodnôt vykonáva pre všetky serva, +100 sa pripočíta ku vstupu ako diferenciálna hodnota. */ if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); if (Current_1_Pos! = Servo_1_Pos) {Storage [Index] = Servo_1_Pos + 100; Index ++; } Current_1_Pos = Servo_1_Pos; } if (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); if (Current_2_Pos! = Servo_2_Pos) {Storage [Index] = Servo_2_Pos + 200; Index ++; } Current_2_Pos = Servo_2_Pos; } if (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); if (Current_3_Pos! = Servo_3_Pos) {Storage [Index] = Servo_3_Pos + 300; Index ++; } Current_3_Pos = Servo_3_Pos; } if (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); if (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; Index ++; } Current_4_Pos = Servo_4_Pos; } / * Hodnoty sú vytlačené na sériovom monitore, '\ t' slúži na zobrazenie hodnôt v tabuľkovom formáte * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("Index ="); Serial.println (Index); oneskorenie (50); } if (data == 'P') // AK je zadané 'P', spustite prehrávanie zaznamenaných ťahov. {for (int i = 0; i <Index; i ++) // Prechádzajte poľom pomocou cyklu for {Servo_Number = Storage /100; // Zistí počet servo Servo_Position = Úložisko % 100; // Zistí polohu prepínača serva (Servo_Number) {prípad 0: Servo_0.write (Servo_Position); prestávka; prípad 1: Servo_1.write (Servo_Position); prestávka; prípad 2: Servo_2.write (Servo_Position); prestávka; prípad 3: Servo_3.write (Servo_Position); prestávka; prípad 4: Servo_4.write (Servo_Position); prestávka; } oneskorenie (50); }}}
Akonáhle je kód pripravený, teraz ho nahrajte na dosku arduino
Inteligentné rameno je pripravené na prácu. Táto funkcia ešte nie je taká hladká ako funkcia Stoerpeak.
Ak môžete kód vylepšiť alebo máte pre mňa nejaké návrhy, dajte mi vedieť v sekcii komentárov.
Keď to bolo povedané, prejdime k testovaniu …
Krok 5: Testovanie:-
Po úspešnom nahraní kódu na dosku otvorte „Sériový monitor“, ktorý nájdete v možnosti Nástroje. Keď sa spustí sériový monitor, arduino sa resetuje. Teraz môžete robotické rameno ovládať pomocou hlavného ramena. Ale nič sa nezaznamenáva.
Ak chcete začať nahrávať, zadajte na monitore „R“a teraz môžete vykonávať pohyby, ktoré chcete zaznamenať.
Po dokončení ťahov musíte zadať 'P', aby ste mohli nahraté pohyby hrať. Servo bude pokračovať v pohybe, pokiaľ nie je doska resetovaná.
Odporúča:
Inteligentné záhradníctvo a inteligentné poľnohospodárstvo založené na IoT pomocou systému ESP32: 7 krokov
Inteligentné záhradníctvo založené na IoT a inteligentné poľnohospodárstvo pomocou systému ESP32: Svet sa mení v čase a tiež v poľnohospodárstve. V dnešnej dobe ľudia integrujú elektroniku do všetkých oblastí a poľnohospodárstvo v tomto nie je výnimkou. Toto zlúčenie elektroniky v poľnohospodárstve pomáha poľnohospodárom a ľuďom, ktorí spravujú záhrady. V tomto
Ako si vyrobiť bezdrôtové robotické rameno pomocou airsoftových striel: 9 krokov
Ako vyrobiť bezdrôtové robotické rameno s airsoftovými guľkami: Ahoj priatelia, v tomto návode vám ukážem, ako vytvoriť bezdrôtové robotické rameno, ktoré sa môže hojdať, pohybovať sa v smere hore a dole a strieľať airsoftové strely pomocou ovládania bezdrôtového diaľkového ovládania
Jednoduché robotické rameno Arduino: 5 krokov
Jednoduché robotické rameno Arduino: Tu vám ukážem, ako vytvoriť základné robotické rameno Arduino ovládané potenciometrom. Tento projekt je ideálny na naučenie sa základov arduina, ak ste ohromení množstvom možností pre pokyny a neviete, kde začať
Jednoduché robotické rameno ovládané skutočným pohybom ruky: 7 krokov (s obrázkami)
Jednoduché robotické rameno ovládané skutočným pohybom ruky: Jedná sa o veľmi jednoduché robotické rameno DOF pre začiatočníkov. Rameno je ovládané Arduino. Je spojený so snímačom, ktorý je pripevnený na ruke obsluhy. Operátor preto môže ovládať lakeť ohnutím vlastného pohybu lakťa. V
Ovládajte robotické rameno pomocou Zio pomocou ovládača PS2: 4 kroky
Ovládajte robotické rameno pomocou Zia pomocou ovládača PS2: Tento blogový príspevok je súčasťou série Zio Robotics. Úvod Toto je posledná časť príspevku „Ovládajte robotické rameno pomocou Zia“. V tomto návode pridáme do nášho robotického ramena ďalšiu časť. Predchádzajúce návody neobsahujú základ pre