Tartalomjegyzék:
- 1. lépés: Az összetevők követelményei
- 2. lépés: Töltse le a Gui -t
- 3. lépés: Csatlakozás
- Lépés: Töltse fel a firmware -t, és ellenőrizze a kód eredményét az Arduino irányítópulton
- 5. lépés: Tervezze meg és nyomtassa ki az összes részt rétegelt lemezben
- 6. lépés: Összeszerelés
- 7. lépés: A GBRL beállítások beállítása
- Lépés: Töltse fel a végső kódot, és ellenőrizze a virtuális eredményt az Arduino Uno szoftver irányítópultján
Videó: Arduino Base Pick and Place Robot: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Készítettem egy szuper olcsó (kevesebb, mint 1000 dollár) ipari robotkart, hogy a diákok nagyobb méretű robotikát feltörhessenek, és lehetővé tegyék a kis helyi gyártók számára, hogy robotokat használhassanak a folyamataikban anélkül, hogy tönkretennék a bankot. Eassy építeni, és a korosztály az emberek 15-50 év.
1. lépés: Az összetevők követelményei
1. Arduino + pajzs + csapok + kábelek
2. Motorvezérlő: dm860A (Ebay)
3. léptetőmotor: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 csavarok és M8 csavarok.
5. 12 mm -es rétegelt lemez.
6. 5 mm -es nylon.
7. Vak alátétek 8mm.
8. Facsavarok 4,5x40mm.
9. M3 számláló elsüllyedt, 10. 12V -os tápegység
11. szervo motor driver arduino
2. lépés: Töltse le a Gui -t
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
3. lépés: Csatlakozás
Csatlakoztassa a képen látható vezetékeket, hogy jobban megértse az Ön számára.
csatlakoztatnunk kell a motorvezérlőt az Arduino -hoz és más csatlakozókhoz, amelyek a robot szerint szükségesek.
Lépés: Töltse fel a firmware -t, és ellenőrizze a kód eredményét az Arduino irányítópulton
A firmware telepítése az Arduino -GRBL -re:
github.com/grbl/grbl/wiki/Compiling-Grbl
Megjegyzés: Arduino -ban történő fordítás során ütközés léphet fel. Távolítsa el az összes többi könyvtárat a könyvtármappájából (../documents/Arduino/libraries).
Firmware beállítás
Állítsa az engedélyezést újabb időkorlátra. Használjon soros kapcsolatot, és írja be:
$1=255
Állítsa be az otthont:
$22=1
Ne felejtse el beállítani a soros értéket baudra: 115200
Hasznos G-kódok
Állítsa be a robot nulla pontját:
G10 L2 Xnnn Ynnn Znnn
Nulla pont használata:
G54
A középső robot tipikus inicializálása:
G10 L2 X1.5 Y1.2 Z1.1
G54
Mozgassa a robotot gyorsan a helyére:
G0 Xnnn Ynnn Znnn
Példa:
G0 X10.0 Y3.1 Z4.2 (visszatérés)
Mozgassa a robotot a kívánt sebességre:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (vissza)
F legyen 10 (slooooow) és 600 (gyors) között
Alapértelmezett mértékegységek X, Y és Z esetén
Ha a GRBL és a lépés/egység alapértelmezett beállításait (250 lépés/egység) használja
léptető hajtás 800 lépésre/fordulatszámra beállítva a következő egységek érvényesek minden tengelyre:
+- 32 egység = +- 180 fok
Példa a feldolgozási kódra:
Ez a kód közvetlenül kommunikálhat az Arduino GRBL -vel.
github.com/damellis/gctrl
Ne felejtse el beállítani a soros értéket baudra: 115200
Kód uoload az ardunio -ban
import java.awt.event. KeyEvent;
import javax.swing. JOptionPane;
import feldolgozás.sorozat.*;
Soros port = null;
// válassza ki és módosítsa az operációs rendszernek megfelelő sort
// hagyja nullként az interaktív port használatához (nyomja meg a "p" gombot a programban)
String portnév = null;
// String portnév = Sorozat.lista () [0]; // Mac OS X
// String portnév = "/dev/ttyUSB0"; // Linux
// String portnév = "COM6"; // Ablakok
boolean streaming = hamis;
lebegési sebesség = 0,001;
Karakterlánc gcode;
int i = 0;
void openSerialPort ()
{
if (portnév == null) return;
if (port! = null) port.stop ();
port = új soros (ez, portnév, 115200);
port.bufferUntil ('\ n');
}
void selectSerialPort ()
{
Karakterlánc eredménye = (karakterlánc) JOptionPane.showInputDialog (ez, "Válassza ki az Arduino kártyának megfelelő soros portot.", "Soros port kiválasztása", JOptionPane. PLAIN_MESSAGE, nulla, Serial.list (), 0);
if (eredmény! = null) {
portnév = eredmény;
openSerialPort ();
}
}
üres beállítás ()
{
méret (500, 250);
openSerialPort ();
}
érvénytelen sorsolás ()
{
háttér (0);
kitöltés (255);
int y = 24, dy = 12;
szöveg ("UTASÍTÁSOK", 12, y); y += dy;
text ("p: soros port kiválasztása", 12, y); y += dy;
szöveg ("1: állítsa a sebességet 0,001 hüvelykre (1 mil) per jog", 12, y); y += dy;
szöveg ("2: állítsa a sebességet 0,010 hüvelykre (10 mil) per jog", 12, y); y += dy;
szöveg ("3: állítsa a sebességet 10000 hüvelykre jogonként", 12, y); y += dy;
szöveg ("nyilak: kocogás x-y síkban", 12, y); y += dy;
szöveg ("oldal fel & oldal lefelé: léptetés z tengelyben", 12, y); y += dy;
text ("$: display grbl settings", 12, y); y+= dy;
szöveg ("h: menj haza", 12, y); y += dy;
text ("0: nulla gép (állítsa haza az aktuális helyre)", 12, y); y += dy;
text ("g: g-kód fájl streamelése", 12, y); y += dy;
text ("x: állítsa le a g-kód streamelését (ez NEM azonnali)", 12, y); y += dy;
y = magasság - dy;
szöveg ("aktuális léptetési sebesség:" + sebesség + "hüvelyk lépésenként", 12, y); y -= dy;
text ("aktuális soros port:" + portnév, 12, y); y -= dy;
}
üres kulcs Nyomva ()
{
if (kulcs == '1') sebesség = 0,001;
if (kulcs == '2') sebesség = 0,01;
if (kulcs == '3') sebesség = 0,1;
ha (! streaming) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + sebesség + "Y0.000 Z0.000 / n");
if (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + sebesség + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + sebesség + "Z0.000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + sebesség + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + sebesség + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + sebesség + "\ n");
// if (kulcs == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");
if (kulcs == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");
// if (kulcs == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n");
if (kulcs == 's') port.write ("$ 3 = 10 / n");
if (kulcs == 'e') port.write ("$ 16 = 1 / n");
if (kulcs == 'd') port.write ("$ 16 = 0 / n");
if (kulcs == '0') openSerialPort ();
if (kulcs == 'p') selectSerialPort ();
if (kulcs == '$') port.write ("$$ / n");
if (kulcs == 'h') port.write ("$ H / n");
}
if (! streaming && key == 'g') {
gcode = null; i = 0;
Fájl fájl = null;
println ("Fájl betöltése …");
selectInput ("Válassza ki a feldolgozni kívánt fájlt:", "fileSelected", fájl);
}
if (kulcs == 'x') streaming = hamis;
}
void fileSelected (Fájl kiválasztása) {
if (kiválasztás == null) {
println ("Az ablak bezárult, vagy a felhasználó lenyomta a Mégse gombot.");
} más {
println ("Felhasználó kiválasztva" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) return;
streaming = igaz;
folyam();
}
}
üres folyam ()
{
ha (! streaming) visszatér;
míg (igaz) {
if (i == gcode.length) {
streaming = hamis;
Visszatérés;
}
if (gcode .trim (). length () == 0) i ++;
egyéb szünet;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
void serialEvent (soros p)
{
Karakterlánc s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startsWith ("ok")) stream ();
if (s.trim (). startsWith ("error")) stream (); // XXX: tényleg?
}
5. lépés: Tervezze meg és nyomtassa ki az összes részt rétegelt lemezben
Töltse le a robot alkatrészt és tervezést az AutoCAD -ből, és nyomtassa ki a 12 mm -es rétegelt lemezre, valamint a befejező és tervező részre. Ha valakinek szüksége van cad fájlra plz, hagyja a megjegyzést a megjegyzés rovatban.
6. lépés: Összeszerelés
gyűjtsük össze az összes részt, és rendezzük el a megadott sorrendben a képen, és kövessük a képdiagramot.
7. lépés: A GBRL beállítások beállítása
Beállítás, amely bevált a robotjainkon.
$ 0 = 10 (lépésimpulzus, usec) $ 1 = 255 (step idle delay, msse) $ 2 = 7 (step port invert mask: 00000111) $ 3 = 7 (dir port invert invert maszk: 00000111) $ 4 = 0 (step enable invert, bool) $ 5 = 0 (határcsapok megfordítása, bool) $ 6 = 1 (szondacsap megfordítása, bool) $ 10 = 3 (állapotjelentés maszk: 00000011) $ 11 = 0,020 (eltérés, mm) $ 12 = 0,002 (ívtolerancia, mm) 13 USD = 0 (jelentés hüvelyk, bool) $ 20 = 0 (soft limitek, bool) $ 21 = 0 (kemény korlátok, bool) $ 22 = 1 (kezdő ciklus, bool) $ 23 = 0 (homing dir invert mask: 00000000) $ 24 = 100.000 (kezdő előtolás, mm/perc) $ 25 = 500.000 (homing seek, mm/min) $ 26 = 250 (homing debounce, ms) $ 27 = 1.000 (homing pull-off, mm) $ 100 = 250.000 (x, step/mm) $ 101 = 250.000 (y, lépés/mm) $ 102 = 250.000 (z, lépés/mm) $ 110 = 500.000 (x max. Sebesség, mm/perc) $ 111 = 500.000 (y max. Sebesség, mm/perc) $ 112 = 500.000 (z max. Sebesség, mm/perc) $ 120 = 10.000 (x accel, mm/sec^2) $ 121 = 10.000 (y accel, mm/sec^2) $ 122 = 10.000 (z accel, mm/sec^2) $ 130 = 200.000 (x max haladás, mm) $ 131 = 200.000 (y max. menet, mm) $ 132 = 200.000 (z max. haladás, mm)
Lépés: Töltse fel a végső kódot, és ellenőrizze a virtuális eredményt az Arduino Uno szoftver irányítópultján
// Egységek: CM
úszó b_magasság = 0;
úszó a1 = 92;
úszó a2 = 86;
float snude_len = 20;
logikai doZ = hamis;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
float bx = 60; // = 25;
lebeg = 60; // = 0;
float bz = 60; // = 25;
úszó x = 60;
úszó y = 60;
úszó z = 60;
float q;
úszó c;
úszó V1;
úszó V2;
úszó V3;
úszó V4;
úszó V5;
void setup () {
méret (700, 700, P3D);
bütyök = új PeasyCam (ez, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
void draw () {
ligninger:
y = (egérX - szélesség/2)*(- 1);
x = (egérY - magasság/2)*(- 1);
bz = z;
= 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;
kar1_szög = q;
V4 = radián (90,0) - q;
V5 = radián (180) - V4 - radián (90);
kar2_szög = radián (180,0) - (V5 + V1);
bázis_szög = fokok (atan2 (bx, by));
kar1_szög = fok (kar1_szög);
kar2_szög = fok (kar2_szög);
// println (by, bz);
// kar1_szög = 90;
// kar2_szög = 45;
/*
kar2_szög = 23;
kar1_szög = 23;
kar2_szög = 23;
*/
// interaktív:
// ha (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
// } más
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// kar2_szög = kar2_szög+ egérY-pmouseY;
draw_robot (alap_szög,-(kar1_szög-90), kar2_szög+90-(-(kar1_szög-90)));
// println (base_angle + "," + arm1_angle + "," + arm2_angle);
}
void draw_robot (float base_angle, float arm1_angle, float kar2_angle)
{
rotateX (1.2);
rotateZ (-1,2);
háttér (0);
Lámpák();
pushMatrix ();
// BÁZIS
kitöltés (150, 150, 150);
box_corner (50, 50, b_maight, 0);
forgatás (radiánok (alapszög), 0, 0, 1);
ARM 1
kitöltés (150, 0, 150);
box_corner (10, 10, a1, kar1_szög);
ARM 2
kitöltés (255, 0, 0);
box_corner (10, 10, a2, kar2_szög);
// SNUDE
kitöltés (255, 150, 0);
box_corner (10, 10, snude_len, -arm1_angle -arm2_angle+90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
fordítás (0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix ();
fordítás (x, action_box_size- y-action_box_size/2, z-action_box_size/2);
kitöltés (255, 255, 0);
doboz (20);
popMatrix ();
kitöltés (255, 255, 255, 50);
doboz (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float rotate)
{
forgatás (radiánok (forgatás), 1, 0, 0);
fordítás (0, 0, d/2);
doboz (w, h, d);
fordítás (0, 0, d/2);
}
üres kulcs Nyomva ()
{
ha (kulcs == 'z')
{
doZ =! doZ;
}
ha (kulcs == 'h')
{
// állítsa az összeset nullára
kar2_szög = 0;
kar1_szög = 90;
bázis_szög = 0;
}
ha (kulcs == 'g')
{
println (fok (V1));
println (fok (V5));
}
if (keyCode == FEL)
{
z ++;
}
if (keyCode == LE)
{
z -;
}
ha (kulcs == 'o')
{
y = 50;
z = 50;
println (q);
println (c, "c");
println (V1, "V1");
println (V2);
println (V3);
println (kar1_szög);
println (V4);
println (V5);
println (arm2_angle);
}
}
Ajánlott:
Pick-a-Player: 4 lépés
Pick-a-Player: Ez az oktatóanyag végigvezeti Önt, hogyan hozhat döntéshozó Arduino-t. Egy gombnyomással a LED -ek véletlenszerűen felvillannak. Néhány másodperc múlva egyetlen LED világít. Ez az Arduino végső döntése
RFID alapú Pick and Place Robot: 4 lépés
RFID alapú pick and place robot: Sok éve az emberek megpróbálják az emberi munkát gépekkel helyettesíteni. A robotoknak nevezett gépek gyorsabbak és hatékonyabbak, mint az emberek. A robotika fogalmát gyakorlatilag úgy definiálják, mint a robotrendszerek tanulmányozását, tervezését és felhasználását a gyártáshoz. A robotok g
UCL - Beágyazott - Pick and Place: 4 lépés
UCL - Beágyazott - Kiválasztás és elhelyezés: Ez az oktatható utasítás eljut a 2D -s pick and place egység előállításához és kódolásához
Roll and Pitch Axis Gimbal for GoPro for Arduino - Servo and MPU6050 Gyro: 4 lépés
Roll and Pitch Axis Gimbal for GoPro for Arduino - Servo and MPU6050 Gyro: Ez az oktatható a Dél -Floridai Egyetem Makecourse projektkövetelményének teljesítésével jött létre (www.makecourse.com) A projekt célja egy 3 tengelyes kardántengely a GoPro számára az Arduino nano + 3 szervomotor használatával +
A látás alapú pick-and-place UArm: 6 lépés
A látás alapú kiválasztás és hely az UArm segítségével: A közelmúltban a legtöbb lekérdezés az uArm látásalapú alkalmazásairól szól, például az objektumfelismerésről, a kamera-uArm korrelációról stb. Valójában ezen dolgoztunk Egy egyszerű elképzelésen alapuló p