Obsah:
- Krok 1: Požiadavka na súčasti
- Krok 2: Stiahnite si Gui
- Krok 3: Pripojenie
- Krok 4: Nahrajte firmvér a skontrolujte výsledok kódu na paneli Arduino
- Krok 5: Navrhnite a vytlačte všetky diely do preglejky
- Krok 6: Zostavenie
- Krok 7: Nastavte nastavenia GBRL
- Krok 8: Nahrajte konečný kód a skontrolujte virtuálny výsledok na softvérovom paneli Arduino Uno
Video: Robot na výber a umiestnenie základne Arduino: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Vyrobil som super lacné (menej ako 1 000 dolárov) priemyselné robotické rameno, ktoré študentom umožňuje hackovať robotiku väčšieho rozsahu a umožniť malým miestnym výrobcom používať roboty vo svojich procesoch bez toho, aby prelomili banku. Je ľahké vybudovať a urobiť z vekovej skupiny ľudí od 15 do 50 rokov.
Krok 1: Požiadavka na súčasti
1. Arduino + štít + kolíky + káble
2. Ovládač motora: dm860A (Ebay)
3. Steppermotor: 34hs5435c-37b2 (Ebay)
4. Skrutky M8x45+60+70 a skrutky M8.
5. 12mm preglejka.
6. 5 mm nylon.
7. Slepé podložky 8mm.
8. Skrutky do dreva 4,5x40mm.
9. Počítadlo M3 potopené, 10. Napájanie 12v
11. ovládač servomotora arduino
Krok 2: Stiahnite si Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Krok 3: Pripojenie
Pre lepšie pochopenie zapojte vodiče, ktoré sú uvedené na obrázku.
potrebujeme pripojiť ovládač motora k Arduinu a ďalším konektorom, ktoré sú požadované podľa vášho robota.
Krok 4: Nahrajte firmvér a skontrolujte výsledok kódu na paneli Arduino
Inštalácia firmvéru na Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Poznámka: Pri kompilácii v Arduino môže dôjsť ku konfliktu. Odstráňte všetky ostatné knižnice z priečinka knižnice (../documents/Arduino/libraries).
Nastavenie firmvéru
Nastaviť povolenie na novší časový limit. Použite sériové pripojenie a napíšte:
$1=255
Nastaviť navádzanie:
$22=1
Nezabudnite nastaviť sériovú hodnotu na baud: 115200
Užitočné kódy G
Nastavte nulový bod pre robota:
G10 L2 Xnnn Ynnn Znnn
Použiť nulový bod:
G54
Typická inicializácia na stredového robota:
G10 L2 X1,5 Y1.2 Z1.1
G54
Rýchlo presuňte robota do polohy:
G0 Xnnn Ynnn Znnn
Príklad:
G0 X10.0 Y3.1 Z4.2 (návrat)
Presuňte robota do polohy konkrétnou rýchlosťou:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (návrat)
F by malo byť medzi 10 (slooooow) a 600 (rýchle)
Predvolené jednotky pre X, Y a Z
Pri použití predvolených nastavení kroku/jednotiek (250 krokov/jednotka) pre GRBL a
krokový pohon nastavený na 800 krokov/otáčky, nasledujúce jednotky platia pre všetky osi:
+- 32 jednotiek = +- 180 stupňov
Príklad kódu spracovania:
Tento kód môže komunikovať priamo s Arduino GRBL.
github.com/damellis/gctrl
Nezabudnite nastaviť sériovú hodnotu na baud: 115200
Vložte kód v Arduniu
import java.awt.event. KeyEvent;
import javax.swing. JOptionPane;
spracovanie importu.sériové.*;
Sériový port = null;
// vyberte a upravte príslušný riadok pre váš operačný systém
// ponechajte ako nulu, aby ste použili interaktívny port (v programe stlačte 'p')
Reťazec portname = null;
// Reťazec portname = Serial.list () [0]; // Mac OS X
// Reťazec portname = "/dev/ttyUSB0"; // Linux
// Reťazec portname = "COM6"; // Windows
boolean streaming = false;
plávajúca rýchlosť = 0,001;
Reťazec gcode;
int i = 0;
void openSerialPort ()
{
if (názov_portu == null) return;
if (port! = null) port.stop ();
port = new Serial (this, portname, 115200);
port.bufferUntil ('\ n');
}
zrušiť výber SerialPort ()
{
Výsledok reťazca = (Reťazec) JOptionPane.showInputDialog (this, "Vyberte sériový port, ktorý zodpovedá vašej doske Arduino.", "Vyberte sériový port", JOptionPane. PLAIN_MESSAGE, nulový, Serial.list (), 0);
if (result! = null) {
názov portu = výsledok;
openSerialPort ();
}
}
neplatné nastavenie ()
{
veľkosť (500, 250);
openSerialPort ();
}
neplatné žrebovanie ()
{
pozadie (0);
výplň (255);
int y = 24, dy = 12;
text („NÁVOD“, 12, y); y += dy;
text ("p: vyberte sériový port", 12, y); y += dy;
text („1: nastavte rýchlosť na 0,001 palca (1 mil) na beh“, 12, r); y += dy;
text („2: nastaviť rýchlosť na 0,010 palca (10 mil) na beh“, 12, r); y += dy;
text („3: nastavte rýchlosť na 100 otáčok za minútu“, 12, r); y += dy;
text („klávesy so šípkami: beh v rovine x-y“, 12, y); y += dy;
text ("stránka hore a dole stránka: beh v osi z" ", 12, y); y += dy;
text ("$: nastavenia grbl zobrazenia", 12, y); y+= dy;
text („h: choď domov“, 12, y); y += dy;
text („0: nulový počítač (nastaviť domov na aktuálne miesto)“, 12, y); y += dy;
text ("g: streamovanie súboru s kódom g", 12, y); y += dy;
text ("x: zastavte streamovanie kódu g (toto NIE je okamžité)", 12, y); y += dy;
y = výška - dy;
text („aktuálna rýchlosť jogu:“+ rýchlosť + „palce na krok“, 12, y); y -= dy;
text ("aktuálny sériový port:" + názov portu, 12, y); y -= dy;
}
prázdne tlačidlo Stlačené ()
{
ak (kláves == '1') rýchlosť = 0,001;
ak (kláves == '2') rýchlosť = 0,01;
ak (kláves == '3') rýchlosť = 0,1;
ak (! streamovanie) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + rýchlosť + "Y0,000 Z0,000 / n");
if (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + rýchlosť + "Y0,000 Z0,000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0,000 Y" + rýchlosť + "Z0,000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0,000 Y-" + rýchlosť + "Z0,000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + rýchlosť + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + rýchlosť + "\ n");
// if (key == 'h') port.write ("G90 / nG20 / nG00 X0,000 Y0,000 Z0,000 / n");
if (key == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");
// if (key == '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 (key == '0') openSerialPort ();
if (key == 'p') selectSerialPort ();
if (key == '$') port.write ("$$ / n");
if (key == 'h') port.write ("$ H / n");
}
if (! streaming && key == 'g') {
gcode = null; i = 0;
Súbor súboru = null;
println ("Načítava sa súbor …");
selectInput ("Vyberte súbor na spracovanie:", "fileSelected", súbor);
}
if (key == 'x') streaming = false;
}
void fileSelected (Výber súboru) {
if (selection == null) {
println ("Okno bolo zatvorené alebo užívateľ stlačil tlačidlo zrušiť.");
} else {
println ("Užívateľ vybraný" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) return;
streamovanie = true;
Prúd();
}
}
prázdny stream ()
{
if (! streaming) return;
while (true) {
if (i == gcode.length) {
streaming = false;
návrat;
}
if (gcode .trim (). length () == 0) i ++;
inak prestávka;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
void serialEvent (Sériové p)
{
Reťazec s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startsWith ("ok")) stream ();
if (s.trim (). startsWith ("error")) stream (); // XXX: naozaj?
}
Krok 5: Navrhnite a vytlačte všetky diely do preglejky
Stiahnite si časť a dizajn robota do AutoCADu a vytlačte ich na 12 mm preglejku a povrchovú a dizajnovú časť. Ak niekto potrebuje súbor CAD, zanechajte komentár v poli pre sekciu komentárov, ktoré pošlem priamo.
Krok 6: Zostavenie
pozbierajte všetku časť a usporiadajte v poradí uvedenom na obrázku a riaďte sa obrázkovým diagramom.
Krok 7: Nastavte nastavenia GBRL
Nastavenie, ktoré sa osvedčilo, funguje na našich robotoch.
$ 0 = 10 (krokový impulz, usec) $ 1 = 255 (oneskorenie nečinnosti kroku, ms) $ 2 = 7 (maska invertovania krokového portu: 00000111) $ 3 = 7 (maska invertovania smerového portu: 00000111) $ 4 = 0 (invertovať krok, povoliť) $ 5 = 0 (invertovanie limitných kolíkov, bool) $ 6 = 1 (invertovanie pinov sondy, bool) $ 10 = 3 (maska správy o stave: 00000011) $ 11 = 0,020 (odchýlka križovatky, mm) $ 12 = 0,002 (tolerancia oblúka, mm) $ 13 = 0 (správa palcov, bool) $ 20 = 0 (mäkké limity, bool) $ 21 = 0 (tvrdé limity, bool) $ 22 = 1 (cyklus navádzania, bool) $ 23 = 0 (maska invertovania homing dir: 00000000) 24 $ = 100 000 (navádzací posuv, mm/min) $ 25 = 500 000 (hľadanie navádzania, mm/min) 26 $ = 250 (odskok pri návrate domov, ms) 27 $ = 1 000 (vytiahnutie navádzania, mm) 100 $ = 250 000 (x, krok/mm) 101 $ = 250 000 (y, krok/mm) 102 dolárov = 250 000 (z, krok/mm) 110 dolárov = 500 000 (x maximálna rýchlosť, mm/min) 111 dolárov = 500 000 (maximálna rýchlosť y, mm/min) 112 dolárov = 500 000 (maximálna rýchlosť z, mm/min) 120 $ = 10 000 (x zrýchlenie, mm/s^2) 121 $ = 10 000 (y zrýchlenie, mm/s^2) 122 $ = 10 000 (z zrýchlenie, mm/s^2) 130 $ = 200 000 (x maximálny zdvih, mm) $ 131 = 200 000 (y maximálny zdvih, mm) 132 $ = 200 000 (z maximálny zdvih, mm)
Krok 8: Nahrajte konečný kód a skontrolujte virtuálny výsledok na softvérovom paneli Arduino Uno
// Jednotky: CM
float b_height = 0;
float a1 = 92;
float a2 = 86;
float snude_len = 20;
boolean doZ = false;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
float bx = 60; // = 25;
plávať podľa = 60; // = 0;
float bz = 60; // = 25;
plavák x = 60;
float y = 60;
float z = 60;
plavák q;
plavák c;
plavák V1;
plavák V2;
plavák V3;
plavák V4;
plavák V5;
neplatné nastavenie () {
veľkosť (700, 700, P3D);
cam = nový PeasyCam (tento, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
void draw () {
// ligninger:
y = (myšX - šírka/2)*(- 1);
x = (myšY - výška/2)*(- 1);
bz = z;
podľa = y;
bx = x;
float y3 = sqrt (bx*bx+od*podľa);
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_angle = q;
V4 = radiány (90,0) - q;
V5 = radiány (180) - V4 - radiány (90);
arm2_angle = radiány (180,0) - (V5 + V1);
base_angle = stupne (atan2 (bx, by));
arm1_angle = stupne (arm1_angle);
arm2_angle = stupne (arm2_angle);
// println (podľa, bz);
// arm1_angle = 90;
// arm2_angle = 45;
/*
arm2_angle = 23;
arm1_angle = 23;
arm2_angle = 23;
*/
// interaktivne:
// if (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
//} inak
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
draw_robot (base_angle,-(arm1_angle-90), arm2_angle+90-(-(arm1_angle-90)));
// println (base_angle + "," + arm1_angle + "," + arm2_angle);
}
neplatné draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotateX (1,2);
rotateZ (-1,2);
pozadie (0);
svetlá();
pushMatrix ();
// ZÁKLAD
výplň (150, 150, 150);
box_corner (50, 50, b_výška, 0);
rotate (radians (base_angle), 0, 0, 1);
// ARM 1
výplň (150, 0, 150);
box_corner (10, 10, a1, arm1_angle);
// ARM 2
výplň (255, 0, 0);
box_corner (10, 10, a2, arm2_angle);
// SNUD
výplň (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);
výplň (255, 255, 0);
krabica (20);
popMatrix ();
výplň (255, 255, 255, 50);
box (size_box_size, action_box_size, action_box_size);
popMatrix ();
}
neplatný box_corner (plavák w, float h, float d, float rotate)
{
rotate (radiány (rotácia), 1, 0, 0);
translate (0, 0, d/2);
box (š, v, h);
translate (0, 0, d/2);
}
prázdne tlačidlo Stlačené ()
{
if (key == 'z')
{
doZ =! doZ;
}
if (key == 'h')
{
// nastavte všetko na nulu
arm2_angle = 0;
arm1_angle = 90;
base_angle = 0;
}
if (key == 'g')
{
println (stupne (V1));
println (stupne (V5));
}
if (keyCode == UP)
{
z ++;
}
if (keyCode == DOWN)
{
z -;
}
if (key == 'o')
{
y = 50;
z = 50;
println (q);
println (c, "c");
println (V1, "V1");
println (V2);
println (V3);
println (arm1_angle);
println (V4);
println (V5);
println (arm2_angle);
}
}
Odporúča:
Text na reč Kliknite na ARM základne poháňanú UChip a ďalšie ARM základne poháňané SBC: 3 kroky
Prevod textu na reč Kliknite na ARMbasic Powered UChip a ďalšie ARMbasic poháňané SBC: Úvod: Dobrý deň. Volám sa Tod. Som profesionál v oblasti letectva a obrany, ktorý je tiež trochu geek. Inšpirácia: Pochádza z éry dial-up BBS, 8-bitových mikrokontrolérov, osobných počítačov Kaypro/Commodore/Tandy/TI-994A, keď R
UCL - vstavané - výber a umiestnenie: 4 kroky
UCL - Embedded - Pick and Place: Tento návod sa bude zaoberať tým, ako sa vytvára jednotka 2D pick and place a ako ju kódovať
Použitie Arduino Uno na XYZ Umiestnenie 6 robotických ramien DOF: 4 kroky
Použitie Arduino Uno na polohovanie XYZ 6 robotických ramien DOF: Tento projekt je o implementácii krátkeho a relatívne jednoduchého náčrtu Arduino na poskytnutie inverzného kinematického polohovania XYZ. Postavil som 6 servo robotických ramien, ale keď prišlo na nájdenie softvéru na jeho spustenie, nebolo tam toho veľa, okrem zákazníkov
Umiestnenie objektov AR na súradnice GPS v rozšírenej realite: 8 krokov (s obrázkami)
Umiestňovanie objektov AR na súradnice GPS v rozšírenej realite: Tento návod sa zameria na výrobu mobilnej aplikácie na umiestnenie objektov AR na súradnice GPS pomocou ARkit a ARCore pomocou Unity3D. Prevediem vás nastavením projektu, ktorý som urobil pomocou programu Mapbox, ktorý nám umožňuje označovať správy na konkrétnom G
Robot základne Arduino s automatickým nasmerovaním: 8 krokov (s obrázkami)
Robot Arduino Base Auto Direction Robot: je to robot, ktorý sa pohybuje vyhýbaním sa prekážkam. sníma predmet a priestorový pohľad a pokračuje tam, kde je k dispozícii voľné miesto