Inhaltsverzeichnis:
- Schritt 1: Komponentenanforderung
- Schritt 2: Gui. herunterladen
- Schritt 3: Verbindung
- Schritt 4: Firmware hochladen und das Codeergebnis im Arduino Dashboard überprüfen
- Schritt 5: Entwerfen und drucken Sie alle Teile in Sperrholzplatte
- Schritt 6: Montage
- Schritt 7: GBRL-Einstellungen einrichten
- Schritt 8: Laden Sie den endgültigen Code hoch und überprüfen Sie das virtuelle Ergebnis im Arduino Uno Software Dashboard
Video: Arduino Base Pick-and-Place-Roboter - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Ich habe einen supergünstigen (weniger als 1000 Dollar) Industrieroboterarm hergestellt, um es Studenten zu ermöglichen, Roboter in größerem Maßstab zu hacken und um es kleinen lokalen Produktionen zu ermöglichen, Roboter in ihren Prozessen zu verwenden, ohne die Bank zu sprengen. Es ist einfach zu bauen und macht die Altersgruppe Menschen von 15 bis 50 Jahren.
Schritt 1: Komponentenanforderung
1. Arduino + Schild + Pins + Kabel
2. Motorcontroller: dm860A (Ebay)
3. Schrittmotor: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 Schrauben und M8 Schrauben.
5. 12mm Sperrholz.
6. 5mm Nylon.
7. Blindscheiben 8mm.
8. Holzschrauben 4,5x40mm.
9. M3 Konter versenkt, 10. 12V Netzteil
11. Servomotortreiber arduino
Schritt 2: Gui. herunterladen
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Schritt 3: Verbindung
Schließen Sie die im Bild angegebenen Drähte an, um das Verständnis für Sie zu verbessern.
Wir müssen den Motortreiber mit Arduino und anderen Anschlüssen verbinden, die für Ihren Roboter erforderlich sind.
Schritt 4: Firmware hochladen und das Codeergebnis im Arduino Dashboard überprüfen
Installieren der Firmware auf Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Hinweis: Beim Kompilieren in Arduino kann ein Konflikt auftreten. Entfernen Sie alle anderen Bibliotheken aus Ihrem Bibliotheksordner (../documents/Arduino/libraries).
Firmware-Setup
Setzen Sie enable auf ein neueres Timeout. Verwenden Sie eine serielle Verbindung und schreiben Sie:
$1=255
Referenzfahrt einstellen:
$22=1
Denken Sie daran, seriell auf Baud einzustellen: 115200
Nützliche G-Codes
Nullpunkt für Roboter setzen:
G10 L2 Xnnn Ynnn Znnn
Nullpunkt verwenden:
G54
Typische Initialisierung zum Zentrieren des Roboters:
G10 L2 X1.5 Y1.2 Z1.1
G54
Roboter schnell in Position bringen:
G0 Xnnn Ynnn Znnn
Beispiel:
G0 X10.0 Y3.1 Z4.2 (Rücklauf)
Bewegen Sie den Roboter mit einer bestimmten Geschwindigkeit in eine Position:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (Rücklauf)
F sollte zwischen 10 (langsam) und 600 (schnell) liegen
Standardeinheiten für X, Y und Z
Bei Verwendung von Standardschritt-/Einheiteneinstellungen (250 Schritte/Einheit) für GRBL und
Schrittantrieb eingestellt auf 800 Schritt/U gelten folgende Einheiten für alle Achsen:
+- 32 Einheiten = +- 180 Grad
Beispiel für Verarbeitungscode:
Dieser Code kann direkt mit dem Arduino GRBL kommunizieren.
github.com/damellis/gctrl
Denken Sie daran, seriell auf Baud einzustellen: 115200
Code uoload in ardunio
import java.awt.event. KeyEvent;
import javax.swing. JOptionPane;
Importabwicklung.seriell.*;
Serielle Schnittstelle = null;
// Wählen und ändern Sie die entsprechende Zeile für Ihr Betriebssystem
// Null belassen, um den interaktiven Port zu verwenden (drücken Sie 'p' im Programm)
String-Portname = null;
// String-Portname = Serial.list () [0]; // Mac OS X
//String portname = "/dev/ttyUSB0"; // Linux
//String portname = "COM6"; // Fenster
boolesches Streaming = false;
Schwimmgeschwindigkeit = 0,001;
String gcode;
int i = 0;
void openSerialPort()
{
if (Portname == null) return;
if (port != null) port.stop();
port = new Serial (dieser, Portname, 115200);
port.bufferUntil('\n');
}
void selectSerialPort()
{
String result = (String) JOptionPane.showInputDialog(this, "Wählen Sie den seriellen Port aus, der Ihrem Arduino-Board entspricht.", "Serielle Schnittstelle auswählen", JOptionPane. PLAIN_MESSAGE, Null, Serial.list(), 0);
if (Ergebnis != null) {
Portname = Ergebnis;
openSerialPort();
}
}
Void-Setup ()
{
Größe (500, 250);
openSerialPort();
}
Leere zeichnen ()
{
Hintergrund(0);
füllen(255);
int y = 24, dy = 12;
text("ANLEITUNG", 12, y); y += dy;
text("p: Seriellen Port auswählen", 12, y); y += dy;
text("1: setze die Geschwindigkeit auf 0,001 Zoll (1 mil) pro Schritt", 12, y); y += dy;
text("2: setze die Geschwindigkeit auf 0,010 Zoll (10 mil) pro Schritt", 12, y); y += dy;
text("3: setze die Geschwindigkeit auf 0,100 Zoll (100 mil) pro Schritt", 12, y); y += dy;
text("Pfeiltasten: Jog in x-y-Ebene", 12, y); y += dy;
text("Bild hoch & Bild runter: Jog in Z-Achse", 12, y); y += dy;
text("$: grbl-Einstellungen anzeigen", 12, y); y+= dy;
text("h: nach Hause gehen", 12, y); y += dy;
text("0: Nullmaschine (auf den aktuellen Standort zurücksetzen)", 12, y); y += dy;
text("g: eine G-Code-Datei streamen", 12, y); y += dy;
text("x: Streaming von G-Code stoppen (dies ist NICHT sofort)", 12, y); y += dy;
y = Höhe - dy;
text("aktuelle Jog-Geschwindigkeit: " + Geschwindigkeit + " Zoll pro Schritt", 12, y); y -= dy;
text("aktueller serieller Port: " + Portname, 12, y); y -= dy;
}
Leere TasteGedrückt()
{
if (Taste == '1') Geschwindigkeit = 0,001;
if (Taste == '2') Geschwindigkeit = 0,01;
if (Taste == '3') Geschwindigkeit = 0,1;
if (!streaming) {
if (keyCode == LEFT) port.write("G91\nG20\nG00 X-" + Geschwindigkeit + " Y0.000 Z0.000\n");
if (keyCode == RIGHT) port.write("G91\nG20\nG00 X" + Geschwindigkeit + " Y0.000 Z0.000\n");
if (keyCode == UP) port.write("G91\nG20\nG00 X0.000 Y" + Geschwindigkeit + "Z0.000\n");
if (keyCode == DOWN) port.write("G91\nG20\nG00 X0.000 Y-" + Geschwindigkeit + "Z0.000\n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write("G91\nG20\nG00 X0.000 Y0.000 Z" + Geschwindigkeit + "\n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write("G91\nG20\nG00 X0.000 Y0.000 Z-" + Geschwindigkeit + "\n");
//if (Schlüssel == 'h') port.write("G90\nG20\nG00 X0.000 Y0.000 Z0.000\n");
if (Schlüssel == 'v') port.write("$0=75\n$1=74\n$2=75\n");
//if (Schlüssel == 'v') port.write("$0=100\n$1=74\n$2=75\n");
if (key == 's') port.write("$3=10\n");
if (key == 'e') port.write("$16=1\n");
if (key == 'd') port.write("$16=0\n");
if (Schlüssel == '0') openSerialPort();
if (Schlüssel == 'p') selectSerialPort();
if (key == '$') port.write("$$\n");
if (key == 'h') port.write("$H\n");
}
if (!streaming && Schlüssel == 'g') {
gcode = null; ich = 0;
Dateidatei = null;
println("Datei wird geladen…");
selectInput("Wählen Sie eine zu verarbeitende Datei aus:", "fileSelected", file);
}
if (key == 'x') streaming = false;
}
void fileSelected(Dateiauswahl) {
if (Auswahl == null) {
println("Fenster wurde geschlossen oder der Benutzer hat auf Abbrechen geklickt.");
} anders {
println("Benutzer ausgewählt" + selection.getAbsolutePath());
gcode = loadStrings(selection.getAbsolutePath());
if (gcode == null) return;
Streaming = wahr;
Strom();
}
}
Leerer Strom ()
{
if (!streaming) zurück;
während (wahr) {
if (i == gcode.length) {
Streaming = falsch;
Rückkehr;
}
if (gcode.trim().length() == 0) i++;
sonst brechen;
}
println(gcode);
port.write(gcode + '\n');
i++;
}
void serialEvent(Serial p)
{
String s = p.readStringUntil('\n');
println(s.trim());
if (s.trim().startsWith("ok")) stream();
if (s.trim().startsWith("Fehler")) stream(); // XXX: Wirklich?
}
Schritt 5: Entwerfen und drucken Sie alle Teile in Sperrholzplatte
Laden Sie das Roboterteil und das Design in AutoCAD herunter und drucken Sie es auf die 12-mm-Sperrholzplatte und den Finish- und Designteil. Wenn jemand eine CAD-Datei benötigt, hinterlassen Sie den Kommentar im Kommentarfeld. Ich werde Sie direkt senden.
Schritt 6: Montage
Sammeln Sie alle Teile und ordnen Sie sie in der angegebenen Reihenfolge auf dem Bild an und folgen Sie dem Bilddiagramm.
Schritt 7: GBRL-Einstellungen einrichten
Eine Einstellung, die sich bei unseren Robotern bewährt hat.
$0=10 (Schrittimpuls, usec) $1=255 (Schritt-Leerlaufverzögerung, ms) $2=7 (Schritt-Port-Invertierungsmaske:00000111) $3=7 (Dir-Port-Invertierungsmaske:00000111) $4=0 (Schrittfreigabe invertieren, bool) $5=0 (Begrenzungsstifte invertieren, bool) $6=1 (Sondenstift invertieren, bool) $10=3 (Statusberichtsmaske:00000011) $11=0,020 (Verbindungsabweichung, mm) $12=0,002 (Lichtbogentoleranz, mm) $13 =0 (Inch melden, bool) $20=0 (weiche Grenzen, bool) $21=0 (harte Grenzen, bool) $22=1 (Referenzzyklus, bool) $23=0 (Referenzfahrt invertieren Maske:00000000) $24=100.000 (Referenzfahrtvorschub, mm/min) $25=500.000 (Referenzfahrt, mm/min) $26=250 (Referenzentprellung, msec) $27=1.000 (Referenzfahrt, mm) $100=250.000 (x, Schritt/mm) $101= 250.000 (y, Schritt/mm) $102=250.000 (z, Schritt/mm) $110=500.000 (x max. Rate, mm/min) $111=500.000 (y max. Rate, mm/min) $112=500.000 (z max. Rate, mm/min) $120=10.000 (x Beschleunigung, mm/sec^2) $121=10.000 (y Beschleunigung, mm/sec^2) $122=10.000 (z Beschleunigung, mm/sec^2) $130=200.000 (x max. Verfahrweg.), mm) $131=200.000 (y max. Verfahrweg, mm) $132=200.000 (z max. Verfahrweg, mm)
Schritt 8: Laden Sie den endgültigen Code hoch und überprüfen Sie das virtuelle Ergebnis im Arduino Uno Software Dashboard
// Einheiten: CM
float b_height = 0;
Schwimmer a1 = 92;
Schwimmer a2 = 86;
float snude_len = 20;
boolesches doZ = false;
float base_angle; // = 0;
Schwimmerarm1_Winkel; // = 0;
Schwimmerarm2_Winkel; //= 0;
Schwimmer bx = 60; // = 25;
schweben um = 60; // = 0;
Schwimmer bz = 60; // = 25;
Schwimmer x = 60;
Schwimmer y = 60;
Schwimmer z = 60;
schweben q;
Schwimmer c;
Schwimmer V1;
Schwimmer V2;
Schwimmer V3;
Schwimmer V4;
Schwimmer V5;
Leere Einrichtung () {
Größe (700, 700, P3D);
cam = neue PeasyCam (dies, 300);
cam.setMinimumDistance(50);
cam.setMaximumDistance(500);
}
Leere zeichnen () {
//Ligninger:
y = (MausX - Breite/2)*(-1);
x = (MausY - Höhe/2)*(-1);
bz = z;
um = y;
bx = x;
float y3 = sqrt(bx*bx+by*by);
c = sqrt(y3*y3 + bz*bz);
V1 = acos((a2*a2+a1*a1-c*c)/(2*a2*a1));
V2 = acos((c*c+a1*a1-a2*a2)/(2*c*a1));
V3 = acos((y3*y3+c*c-bz*bz)/(2*y3*c));
q = V2 + V3;
arm1_winkel = q;
V4 = Radiant (90,0) - q;
V5 = Bogenmaß (180) - V4 - Bogenmaß (90);
arm2_angle = Radiant (180,0) - (V5 + V1);
base_angle = Grad (atan2 (bx, by));
Arm1_Winkel=Grad (Arm1_Winkel);
arm2_angle=Grad (arm2_angle);
//println (von, bz);
// arm1_angle = 90;
// arm2_angle = 45;
/*
arm2_winkel = 23;
arm1_winkel= 23;
arm2_winkel=23;
*/
// interaktiv:
// wenn (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
// } anders
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
Draw_Robot (Basis_Winkel, -(Arm1_Winkel-90), Arm2_Winkel+90 - (-(Arm1_Winkel-90)));
// println (base_angle + ", " + arm1_angle + ", " + arm2_angle);
}
void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotierenX(1.2);
rotiereZ(-1.2);
Hintergrund(0);
Beleuchtung();
pushMatrix();
// BASIS
füllen (150, 150, 150);
box_corner(50, 50, b_height, 0);
drehen (Radiant (Basiswinkel), 0, 0, 1);
// ARM 1
füllen (150, 0, 150);
box_corner(10, 10, a1, arm1_angle);
// ARM 2
füllen (255, 0, 0);
box_corner(10, 10, a2, arm2_angle);
// SNUDE
füllen (255, 150, 0);
box_corner(10, 10, snude_len, -arm1_angle-arm2_angle+90);
popMatrix();
pushMatrix();
float action_box_size=100;
translate(0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix();
translate(x, action_box_size-y-action_box_size/2, z-action_box_size/2);
füllen (255, 255, 0);
Kasten (20);
popMatrix();
füllen (255, 255, 255, 50);
box(action_box_size, action_box_size, action_box_size);
popMatrix();
}
void box_corner(float w, float h, float d, float rotieren)
{
drehen (Radiant (drehen), 1, 0, 0);
übersetzen (0, 0, d/2);
Kasten (b, h, t);
übersetzen (0, 0, d/2);
}
Leere TasteGedrückt()
{
if (Schlüssel == 'z')
{
doZ = !doZ;
}
if (Taste == 'h')
{
// setze alles auf null
arm2_winkel = 0;
arm1_winkel = 90;
Basiswinkel = 0;
}
if (Schlüssel == 'g')
{
println(Grad(V1));
println(Grad(V5));
}
if (keyCode == UP)
{
z++;
}
if (keyCode == DOWN)
{
z --;
}
if (Schlüssel == 'o')
{
y = 50;
z = 50;
println(q);
println(c, "c");
println(V1, "V1");
println(V2);
println(V3);
println(arm1_winkel);
println(V4);
println(V5);
println(arm2_angle);
}
}
Empfohlen:
Einen Arduino-Gitarren-Tuner herstellen – wikiHow
So bauen Sie einen Arduino-Gitarren-Tuner: Dies sind die Anweisungen, um einen Gitarren-Tuner aus einem Arduino und mehreren anderen Komponenten zu machen. Mit Grundkenntnissen in Elektronik und Codierung können Sie dieses Gitarrenstimmgerät herstellen. Zuerst müssen Sie wissen, was die Materialien sind. Ma
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: 9 Schritte
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: Este proyecto consiste en a alarma básica que Detecta presencia, activa una sirena de 108dB y visa al usuario mediante un SMS (opcional). Permite también el control remoto básico por parte del usuario a través de SMS (encendido, apagado, reinicio
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Pick-a-Player: 4 Schritte
Pick-a-Player: Dieses anweisbare führt Sie durch, wie man einen Entscheidungsträger Arduino macht. Auf Knopfdruck leuchten die LEDs in einem zufälligen Muster auf. Nach einigen Sekunden leuchtet eine einzelne LED auf. Dies ist die endgültige Entscheidung des Arduino
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte
Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i