Inhaltsverzeichnis:

UCL - Eingebettet - Pick and Place - Gunook
UCL - Eingebettet - Pick and Place - Gunook

Video: UCL - Eingebettet - Pick and Place - Gunook

Video: UCL - Eingebettet - Pick and Place - Gunook
Video: $1 vs $10,000 Champions League Seats! 2024, November
Anonim
UCL – Eingebettet – Pick and Place
UCL – Eingebettet – Pick and Place

Dieses anweisbare geht aber, wie eine 2D-Pick-and-Place-Einheit hergestellt wird und wie man sie codiert.

Schritt 1: Computer

Computer
Computer

1x Adrio Mega

2x Schrittmotoren (wir haben JLB Stepper Motor, Modell 17H1352-P4130 verwendet)

2x Stepper Motor Drive Controller Board Modul L298N Dual H Bridge DC für Arduino

1x Servomotor (Wir haben nicht den Fleck auf diesem)

3x 10k Ohm Widerstände

2x Nylon-Quaddeln

1x 12V Netzteil

Etwas Holz für den Rahmen

Drähte

Schritt 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Das erste, was während der Konstruktionsseite war, war die Größe und Form der Bestückungsmaschine zu bestimmen

Zuerst bauen wir die Grundform Holz. Wir haben unseren Pick-and-Place-Rahmen 50 x 25 x 30 cm gebaut. Alles außer Rahmen, Brücke und Hubarm wurde mit einem Lasercutter gefertigt.

Hier ist ein Link zu allen Dateien

Dann wollten wir zum Flaschenzugsystem. Hier gingen wir mit zwei 50-mm-Ringen und einem 20-mm-Ring. Dann legen wir mit etwas Kleber ein Paracord neben die 20mm. Danach drückten wir die beiden 50-mm-Ringe auf beiden Seiten des 20-mm-Rings zusammen.

20 mm

50 mm

Dann müssen wir eine Gleitführung für den Arm entwerfen. Hier haben wir zwei Seiten und eine Rückplatte gemacht.

Die dann in U-Form geklebt wurde. Dann haben wir das mit der Brücke verbunden.

Beilagenteller

Rückplatte

Jetzt sind die Teile zum Bewegen des Arms nach oben und unten fertig. Wir müssen es hin und her bewegen.

Bei der Gestaltung haben wir darauf geachtet, dass die Zähne zueinander ausgerichtet sind. Beide Elemente wurden also an derselben Projektstelle erstellt.

Schritt 3: Code

Code
Code
Code
Code
Code
Code

Die Programmierung ist ziemlich einfach und besteht aus 5 Teilen

  1. Aufnahme von Bibliotheken und Einrichtung von Variablen für interne und IO-Nutzung
  2. Eingänge in Ram. laden
  3. Sekvens, die gewünschte Bewegung auswählen.
  4. Schritt-/Servo-Positionsregelung
  5. Ausgabe in die Welt

Wir werden in groben Zügen jeden Teil erklären, aber denken Sie daran, dass dies nur eine von vielen Lösungen ist.

1: Vor dem Void-Setup haben wir die 2 Bibliotheken eingefügt, die wir für dieses Projekt benötigen. Stepper und Servo. Die Verwendung der mitgelieferten Bibliotheken erspart Ihnen jedes Detail über Schritt- und Servomotoren.

#enthalten

#enthalten

const int SchrittePerRevolution = 200; // ändern Sie dies, um die Anzahl der Schritte pro Umdrehung für Ihren Motor anzupassen

// Initialisieren Sie die Stepper-Bibliothek an den Pins 8 bis 11:

Stepper XStepper (stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper(stepsPerRevolution, 28, 29, 30, 31); Servo-Greifer; // Servo-Objekt erstellen, um ein Servo zu steuern

Der Greifer muss im Void-Setup befestigt werden

Void setup () {// Initialisieren Sie den seriellen Port: Serial.begin (9600); Greifer.attach(9); // befestigt das Servo an Pin 9 an das Servoobjekt

Der Rest dieses Abschnitts ist nur die Einrichtung von Variablen und Konstanten.

2: Das erste, was in der Void-Schleife ist, ist, alle verwendeten Eingänge in eine Variable zu laden. Dies geschieht aus zwei Gründen. Der erste Grund besteht darin, die CPU-lastigen Aufgaben beim Lesen einer Eingabe zu begrenzen. Der zweite Grund, der wichtigste, um sicherzustellen, dass ein Eingang, wenn er mehr als einmal verwendet wird, während des gesamten Scans denselben Wert hat. Dies macht das Schreiben von konsistentem Code viel einfacher. Dies ist eine sehr gängige Praxis in der SPS-Programmierung, gilt aber auch für die Embedded-Programmierung.

//-------------------------Eingabe in RAM-------- Xend = digitalRead(34); Yend = digitalRead (35); Ena = digitalRead(36);

3: Im Sekvens-Teil des Codes haben wir gerade einen Sekvens mit den Befehlen Switch und case erstellt. Der Sekvens-Teil gibt nur Signale an den Positionskontrollteil des Codes. Dieses Teil kann leicht an Ihre Anwendung angepasst oder unverändert verwendet werden.

4: Die Position des Servos wird nur durch die Servoliberi und eine if-Anweisung für Greifer geöffnet und geschlossen gesteuert.

Etwas kniffliger ist die Stepper Control. Die Funktion vergleicht den Sollwert (die Position, in die der Arm gehen soll) und die aktuelle Position. Wenn die aktuelle Position lover ist, fügt die Funktion der Position hinzu und fordert die Stepper liberi-Funktion auf, einen positiven Schritt zu machen. Das Gegenteil ist bei einer zu hohen Position der Fall. ist die Position gleich dem Setpoint, wird ein XinPos-Bit gesetzt und der Stepper stoppt.

// SP-Steuerung X

if (XstepCountXsp und nicht Home){

XstepCount=XstepCount-1; XSchritt=-1; XinPos = 0; aufrechtzuerhalten. Wenn (XstepCount==Xsp){Xstep=0; XinPos = 1; }

5: Fügen Sie das Ende des Codes hinzu, der die Motoren mit den liberi-Funktionen steuert.

//--------------------Ausgabe---------------------------------- // Schritt eins Schritt: XStepper.step(Xstep); // Schritt einen Schritt: YStepper.step(Ystep);

Griper.write(GripSp);

Schritt 4: Hergestellt von

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Empfohlen: