Obsah:

UCL - Embedded - Pick and Place: 4 Steps
UCL - Embedded - Pick and Place: 4 Steps

Video: UCL - Embedded - Pick and Place: 4 Steps

Video: UCL - Embedded - Pick and Place: 4 Steps
Video: Alternative ways to evaluate public value: Measuring missions and capturing market-shaping effects 2024, Červenec
Anonim
UCL - Embedded - Pick and Place
UCL - Embedded - Pick and Place

Tento návod se bude týkat toho, jak je jednotka 2D pro výběr a umístění vytvořena a jak ji kódovat.

Krok 1: Compunety

Compunety
Compunety

1x Adrio Mega

2x krokový motor (použili jsme krokový motor JLB, model 17H1352-P4130)

Modul řídicí jednotky pohonu krokového motoru L298N Dual H Bridge DC pro Arduino

1x servomotor (na tomto nemáme skvrnu)

3x 10k ohmové odpory

2x nylonové kuličky

1x 12v napájecí zdroj

Trochu dřeva na rám

Dráty

Krok 2: Konstrukce

Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce

První věcí během Stavební plochy bylo zjistit velikost a tvar trsátka

Nejprve postavíme dřevo základního tvaru. Postavili jsme náš výběr a umístění rámu 50 cm x 25 cm x 30 cm. Všechno kromě rámu, mostu a zvedacího ramene bylo vyrobeno laserovým řezačem.

Zde je odkaz na všechny soubory

Pak jsme chtěli do kladkového systému. Tady jsme šli se dvěma 50mm kroužky a jedním 20mm prstenem. Potom jsme položili paracord vedle 20 mm pomocí lepidla. Poté jsme stiskli dva 50mm kroužky na obou stranách 20mm prstence.

20 mm

50 mm

Poté musíme navrhnout kluzné vedení k paži. Zde jsme vyrobili dvě strany a jednu zadní desku.

Který pak byl slepen ve formě U. Pak jsme to spojili s mostem.

Boční deska

Zadní deska

Nyní jsou hotové části pro pohyb paže nahoru a dolů. Musíme to přesouvat tam a zpět.

Při navrhování jsme dbali na to, aby se zuby vzájemně sladily. Obě položky tedy byly vytvořeny na stejném místě projektu.

Krok 3: Kód

Kód
Kód
Kód
Kód
Kód
Kód

Programování je velmi jednoduché a skládá se z 5 částí

  1. Zahrnutí knihoven a nastavení proměnných pro interní a IO použití
  2. Načíst vstupy do RAM
  3. Sekvens, výběr požadovaného pohybu.
  4. Ovládání polohy stepper/servo
  5. Výstup do světa

Každou část vysvětlíme širokými tahy, ale pamatujte, že toto je jen jedno z mnoha řešení.

1: Před nastavením prázdnoty jsme zahrnuli 2 knihovny, které pro tento projekt potřebujeme. Stepper a servo. Díky přiloženým knihovnám vám ušetří všechny podrobnosti o krokových a servomotorech.

#zahrnout

#zahrnout

const int stepsPerRevolution = 200; // změňte to tak, aby odpovídalo počtu kroků na otáčku vašeho motoru

// inicializace knihovny stepperů na pinech 8 až 11:

Stepper XStepper (stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stepsPerRevolution, 28, 29, 30, 31); Servopohon; // vytvoření objektu serva pro ovládání serva

Gripper se musí připojit v nastavení prázdnoty

void setup () {// inicializace sériového portu: Serial.begin (9600); Griper.attach (9); // připojí servo na pinu 9 k objektu serva

Zbytek této části je pouze nastavení proměnných a konstant.

2: První věcí ve Void Loop je načíst všechny použité vstupy do proměnné. To se děje ze dvou důvodů. Prvním důvodem je omezit náročné úlohy procesoru na čtení vstupu. Druhý důvod, který je nejdůležitější, a zajišťuje, že pokud je vstup použit více než jednou, bude mít stejnou hodnotu v celém skenování. Díky tomu je psaní konzistentního kódu jednodušší. Toto je velmi běžná praxe v programování PLC, ale platí to i pro vestavěné programování.

// ------------------------- Sčítání do RAM -------------------- Xend = digitalRead (34); Yend = digitalRead (35); Ena = digitalRead (36);

3: V sekvensové části kódu jsme právě vytvořili sekvens pomocí příkazů Switch a case. Část sekvens pouze dává signály části kódu pro řízení polohy. Tuto část lze snadno přizpůsobit vaší aplikaci nebo použít tak, jak je.

4: Poloha serva je právě řízena servo liberi a příkaz if pro chapadlo je otevřený a zavřený.

Ovládání Stepperu je o něco složitější. Funkce porovnává požadovanou hodnotu (polohu, do které má rameno jít) a aktuální polohu. Pokud je aktuální poloha milující, funkce se k poloze přidá a požádá funkci Stepper liberi o pozitivní krok. Opak je pravdou pro polohu ahig. pokud je poloha stejná jako požadovaná hodnota, bit XinPos je vysazen a krokovač se zastaví.

// Ovládání SP X

if (XstepCountXsp a ne Home) {

XstepCount = XstepCount-1; Xstep = -1; XinPos = 0; } if (XstepCount == Xsp) {Xstep = 0; XinPos = 1; }

5: Přidejte konec kódu, který řídí motory pomocí funkcí liberi.

// -------------------- Výstup ---------------------- // krok jeden krok: XStepper.step (Xstep); // krok jeden krok: YStepper.step (Ystep);

Griper.write (GripSp);

Krok 4: Vyrobil

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Doporučuje: