Inhoudsopgave:

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

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

Video: UCL - Embedded - Pick and Place: 4 stappen
Video: Lunch Hour Lecture: Contemporary Public Art at UCL East 2024, Juli-
Anonim
UCL - Ingesloten - Pick and Place
UCL - Ingesloten - Pick and Place

Dit instructable zal echter gaan hoe een 2D pick-and-place-eenheid wordt gemaakt en hoe deze te coderen.

Stap 1: Computers

computers
computers

1x Adrio Mega

2x stappenmotoren (we gebruikten JLB stappenmotor, model 17H1352-P4130)

2x Stappenmotor Drive Controller Board Module L298N Dual H Bridge DC Voor Arduino

1x servomotor (We hebben hier geen vlek op)

3x 10k ohm weerstanden

2x Nylon striemen

1x 12v voeding

Wat hout voor het frame

Draden

Stap 2: constructie

Bouw
Bouw
Bouw
Bouw
Bouw
Bouw

Het eerste wat tijdens het constructievlak was om de grootte en vorm van de pick-and-place-machine te bepalen

Eerst bouwen we de basisvorm hout. We hebben ons pick-and-place-frame van 50 cm bij 25 cm bij 30 cm gebouwd. Alles, behalve het frame, de brug en de hefarm, is gemaakt met een lasercutter.

Hier is een link naar alle bestanden

Toen wilden we het katrolsysteem. Hier gingen we met twee ringen van 50 mm en een ring van 20 mm. Daarna zetten we met wat lijm een paracord naast de 20mm. Waarna we de twee 50 mm-ringen aan weerszijden van de 20 mm-ring hebben geperst.

20 mm

50 mm

Dan moeten we een schuifgeleider voor de arm ontwerpen. Hier hebben we twee zijkanten en een achterplaat gemaakt.

Die vervolgens in een U-vorm werd gelijmd. Die hebben we toen aangesloten op de brug.

Zijplaat

Achterplaat

Nu de onderdelen voor het op en neer bewegen van de arm klaar zijn. We moeten het heen en weer bewegen.

Bij het ontwerpen hiervan hebben we ervoor gezorgd dat de tanden op elkaar aansluiten. Dus beide items zijn gemaakt op dezelfde projectplaats.

Stap 3: Coderen

Code
Code
Code
Code
Code
Code

De programmering is vrij eenvoudig en bestaat uit 5 delen

  1. Opname van bibliotheken en instelling van variabelen voor intern en IO-gebruik
  2. Ingangen laden naar Ram
  3. Sekvens, de beweging kiezen die je wilt.
  4. Stepper/servo positieregeling
  5. Uitvoer naar de wereld

We zullen in grote lijnen elk onderdeel uitleggen, maar onthoud dat dit slechts een van de vele oplossingen is.

1: Voor de void setup hebben we de 2 bibliotheken toegevoegd die we nodig hebben voor dit project. Stepper en servo. Door de meegeleverde bibliotheken te gebruiken, hoeft u niet elk detail over stappen- en servomotoren te leren.

#erbij betrekken

#erbij betrekken

const int stepsPerRevolution = 200; // verander dit zodat het past bij het aantal stappen per omwenteling voor uw motor

// initialiseer de stepper-bibliotheek op pinnen 8 tot en met 11:

Stepper XStepper(stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stappenPerRevolution, 28, 29, 30, 31); Servogrijper; // maak een servo-object om een servo te besturen

de grijper moet worden bevestigd in de lege setup

void setup () {// initialiseer de seriële poort: Serial.begin (9600); Griper.attach(9); // bevestigt de servo op pin 9 aan het servo-object

De rest van deze sectie is slechts het instellen van variabelen en constanten.

2: Het eerste in de Void Loop is om alle gebruikte inputs naar een variabele te laden. Dit wordt gedaan om twee redenen. De eerste reden is om de zware CPU-taken van het lezen van een invoer te beperken. De tweede reden, die het belangrijkst is, is om ervoor te zorgen dat als een ingang meer dan één keer wordt gebruikt, deze gedurende de hele scan dezelfde waarde zal hebben. Dit maakt het schrijven van consistente code een stuk eenvoudiger. Dit is een veel voorkomende praktijk bij PLC-programmering, maar het is ook van toepassing op embedded programmering.

//------------------------- Invoer naar RAM-------------------- Xend = digitaal lezen(34); Yend = digitalRead (35); Ena = digitalRead(36);

3: In het sekvens-gedeelte van de code hebben we zojuist een sekvens gemaakt met de Switch- en case-opdrachten. Het sekvens-gedeelte geeft alleen signalen aan het Positiecontrole-gedeelte van de code. Dit onderdeel kan eenvoudig worden aangepast aan uw toepassing of worden gebruikt zoals het is.

4: De positie van de servo wordt alleen gecontroleerd door de servo liberi, en een if-statement voor open en gesloten grijper.

De Stepper Control is wat lastiger. De functie vergelijkt het instelpunt (de positie waar u de arm naartoe wilt laten gaan) en de huidige positie. Als de huidige positie minnaar de is, wordt de functie toegevoegd aan de positie en wordt de Stepper liberi-functie gevraagd om een positieve stap te zetten. Het tegenovergestelde geldt voor een te hoge positie. als de positie hetzelfde is als het Setpoint, wordt een XinPos-bit hoog gezet en stopt de stepper.

// SP controle X

if (XstepCountXsp en niet Home){

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

5: Voeg het einde van de code toe dat de motoren worden bestuurd met de liberi-functies.

//--------------------Uitvoer---------------------- // stap een stap: XStepper.step(Xstep); // stap één stap: YStepper.step (Ystep);

Griper.write(GripSp);

Stap 4: Gemaakt door

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Aanbevolen: