Sisukord:
- 1. samm: komponentide nõuded
- Samm: laadige alla Gui
- 3. samm: ühendamine
- Samm: laadige püsivara üles ja kontrollige koodi tulemust Arduino armatuurlaual
- Samm: kujundage ja printige kõik osad vineerilehele
- 6. samm: kokkupanek
- Samm: seadistage GBRL -i sätted
- Samm: laadige üles lõplik kood ja kontrollige virtuaalset tulemust Arduino Uno tarkvara juhtpaneelil
Video: Arduino aluse valimine ja paigutamine robot: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Olen teinud üliodava (alla 1000 dollari) tööstusroboti käe, et võimaldada õpilastel häkkida suuremahulist robootikat ja võimaldada kohalikel väikestel tootmistel kasutada oma protsessides roboteid ilma panka purustamata. Selle lihtsus on ehitada ja muuta vanuserühmaks inimesed vanuses 15 kuni 50 aastat.
1. samm: komponentide nõuded
1. Arduino + kilp + tihvtid + kaablid
2. Mootorikontroller: dm860A (Ebay)
3. Steppmootor: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 poldid ja M8 poldid.
5. 12mm vineer.
6. 5mm nailon.
7. Pimedad seibid 8mm.
8. Puukruvid 4,5x40mm.
9. M3 loendur on vajunud, 10. 12v toide
11. servomootori juht arduino
Samm: laadige alla Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
3. samm: ühendamine
Pildil toodud juhtmete ühendamine aitab teil paremini aru saada.
peame ühendama mootori draiveri Arduino ja muude pistikutega, mida teie robot vajab.
Samm: laadige püsivara üles ja kontrollige koodi tulemust Arduino armatuurlaual
Püsivara installimine Arduino - GRBL -i:
github.com/grbl/grbl/wiki/Compiling-Grbl
Märkus: Arduinos koostamisel võib tekkida konflikt. Eemaldage oma raamatukogu kaustast kõik muud teegid (../documents/Arduino/libraries).
Püsivara seadistamine
Määrake lubamine uuemale ajalõpule. Kasutage jadaühendust ja kirjutage:
$1=255
Seadistage:
$22=1
Pidage meeles, et seeria on seadistatud baudiks: 115200
Kasulikud G-koodid
Roboti jaoks nullpunkti määramine:
G10 L2 Xnnn Ynnn Znnn
Kasutage nullpunkti:
G54
Keskmise roboti tüüpiline lähtestamine:
G10 L2 X1.5 Y1.2 Z1.1
G54
Liigutage robot kiiresti asendisse:
G0 Xnnn Ynnn Znnn
Näide:
G0 X10.0 Y3.1 Z4.2 (tagasitulek)
Liigutage robot kindla kiirusega asendisse:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (tagasi)
F peaks olema vahemikus 10 (slooooow) kuni 600 (kiire)
X, Y ja Z vaikeühikud
Kui kasutate GRBL ja
samm -ajam, mis on seadistatud kiirusele 800 sammu/pööret, kehtivad kõikide telgede jaoks järgmised ühikud:
+- 32 ühikut = +- 180 kraadi
Töötluskoodi näide:
See kood võib suhelda otse Arduino GRBL -iga.
github.com/damellis/gctrl
Ärge unustage seeriat seadistada baudiks: 115200
Kood udolaadimine ardunios
import java.awt.event. KeyEvent;
import javax.swing. JOptionPane;
impordi töötlemine.seriaalne.*;
Jadaport = null;
// valige ja muutke oma operatsioonisüsteemi jaoks sobivat rida
// jätke interaktiivse pordi kasutamiseks tühjaks (vajutage programmis 'p')
Stringi pordi nimi = null;
// Stringi portinimi = Serial.list () [0]; // Mac OS X
// Stringi portinimi = "/dev/ttyUSB0"; // Linux
// Stringi portinimi = "COM6"; // Windows
boolean streaming = vale;
ujuki kiirus = 0,001;
String gcode;
int i = 0;
tühine openSerialPort ()
{
if (pordi nimi == null) return;
if (port! = null) port.stop ();
port = uus seeria (see, pordi nimi, 115200);
port.bufferUntil ('\ n');
}
tühine selectSerialPort ()
{
Stringi tulemus = [String] JOptionPane.showInputDialog (see, "Valige jadaport, mis vastab teie Arduino plaadile.", "Valige jadaport", JOptionPane. PLAIN_MESSAGE, null, Serial.list (), 0);
kui (tulemus! = null) {
pordi nimi = tulemus;
openSerialPort ();
}
}
tühine seadistus ()
{
suurus (500, 250);
openSerialPort ();
}
tühine viik ()
{
taust (0);
täitma (255);
int y = 24, dy = 12;
tekst ("JUHISED", 12, y); y += dy;
tekst ("p: valige jadaport", 12, y); y += dy;
tekst ("1: seadke kiiruseks 0,001 tolli (1 mil) jooksu kohta", 12, y); y += dy;
tekst ("2: seadke kiiruseks 0,010 tolli (10 mil) jooksu kohta", 12, y); y += dy;
tekst ("3: seadke kiiruseks 10000 tolli (100 mil) jooksu kohta", 12, y); y += dy;
tekst ("nooleklahvid: jooks x-y tasapinnas", 12, y); y += dy;
tekst ("leht üles ja leht alla: jooks z -teljel", 12, y); y += dy;
text ("$: display grbl settings", 12, y); y+= dy;
tekst ("h: mine koju", 12, y); y += dy;
text ("0: nullmasin (seadistage kodu praegusele asukohale)", 12, y); y += dy;
tekst ("g: voogesitage g-koodifaili", 12, y); y += dy;
text ("x: lõpetage g-koodi voogesitus (see EI OLE kohe)", 12, y); y += dy;
y = kõrgus - dy;
tekst ("praegune jooksukiirus:" + kiirus + "tolli sammu kohta", 12, y); y -= dy;
tekst ("praegune jadaport:" + pordi nimi, 12, y); y -= dy;
}
tühi võti Vajutatud ()
{
kui (võti == '1') kiirus = 0,001;
kui (võti == '2') kiirus = 0,01;
kui (võti == '3') kiirus = 0,1;
kui (! voogesitus) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + kiirus + "Y0.000 Z0.000 / n");
if (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + kiirus + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + kiirus + "Z0.000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + kiirus + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + kiirus + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + kiirus + "\ n");
// if (võti == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");
if (võti == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");
// if (võti == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n");
if (võti == 's') port.write ("$ 3 = 10 / n");
if (võti == 'e') port.write ("$ 16 = 1 / n");
if (võti == 'd') port.write ("$ 16 = 0 / n");
if (võti == '0') openSerialPort ();
if (võti == 'p') selectSerialPort ();
if (võti == '$') port.write ("$$ / n");
if (võti == 'h') port.write ("$ H / n");
}
if (! streaming && key == 'g') {
gcode = null; i = 0;
Failifail = null;
println ("Faili laadimine …");
selectInput ("Vali töödeldav fail:", "fileSelected", fail);
}
if (võti == 'x') voogesitus = vale;
}
tühine failValitud (faili valik) {
if (valik == null) {
println ("Aken suleti või kasutaja vajutas tühista.");
} muud {
println ("Kasutaja valitud" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) return;
voogesitus = tõsi;
oja ();
}
}
tühi voog ()
{
kui (! voogesitus) naaseb;
samas (tõsi) {
kui (i == gcode.length) {
voogesitus = vale;
tagasipöördumine;
}
kui (gcode .trim (). pikkus () == 0) i ++;
muidu murda;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
void serialEvent (jada p)
{
String s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startsWith ("ok")) stream ();
if (s.trim (). startsWith ("error")) stream (); // XXX: tõesti?
}
Samm: kujundage ja printige kõik osad vineerilehele
Laadige robotiosa ja disain AutoCAD -i alla ning printige 12 mm vineerilehele ning viimistlus- ja kujundusosale. Kui kellelgi on vaja cad -faili plz, jätke kommentaar kommentaaride lahtrisse, saadan selle teile otse.
6. samm: kokkupanek
koguge kõik osad kokku ja korraldage etteantud järjekorras ning järgige pildiskeemi.
Samm: seadistage GBRL -i sätted
Seade, mis on tõestanud meie robotite tööd.
$ 0 = 10 (sammimpulss, usec) $ 1 = 255 (samm tühikäigu viivitus, msek)) $ 5 = 0 (piiravad tihvtid ümber, bool) $ 6 = 1 (sondi tihvti ümberpööramine, bool) $ 10 = 3 (olekuaruande mask: 00000011) $ 11 = 0,020 (ristmiku hälve, mm) $ 12 = 0,002 (kaare tolerants, mm) $ 13 = 0 (aruande tolli, bool) $ 20 = 0 (pehmed piirid, bool) $ 21 = 0 (kõvad piirid, bool) $ 22 = 1 (homing tsükkel, bool) $ 23 = 0 (homing dir invert mask: 00000000) $ 24 = 100.000 (suunamisvoog, mm/min) $ 25 = 500.000 (sihtimisotsing, mm/min) $ 26 = 250 (suunamise tagasilöök, ms) $ 27 = 1.000 (väljatõmbetõmme, mm) $ 100 = 250.000 (x, samm/mm) $ 101 = 250.000 (y, samm/mm) $ 102 = 250.000 (z, samm/mm) $ 110 = 500.000 (x max kiirus, mm/min) $ 111 = 500.000 (y max kiirus, mm/min) $ 112 = 500.000 (z max määr, mm/min) $ 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 käik, mm) $ 131 = 200 000 (y max käik, mm) $ 132 = 200 000 (z max käik, mm)
Samm: laadige üles lõplik kood ja kontrollige virtuaalset tulemust Arduino Uno tarkvara juhtpaneelil
// Ühikud: CM
ujuk b_kõrgus = 0;
ujuk a1 = 92;
ujuk a2 = 86;
float snude_len = 20;
boolean doZ = vale;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
ujuk bx = 60; // = 25;
hõljuda = 60; // = 0;
ujuk bz = 60; // = 25;
ujuk x = 60;
ujuk y = 60;
ujuk z = 60;
ujuk q;
ujuk c;
ujuk V1;
ujuk V2;
ujuk V3;
ujuk V4;
ujuk V5;
tühine seadistus () {
suurus (700, 700, P3D);
nukk = uus PeasyCam (see, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
tühine viik () {
// ligninger:
y = (hiirX - laius/2)*(- 1);
x = (hiirY - kõrgus/2)*(- 1);
bz = z;
poolt = y;
bx = x;
ujuk 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;
käe_nurk = q;
V4 = radiaanid (90,0) - q;
V5 = radiaanid (180) - V4 - radiaanid (90);
arm2_angle = radiaanid (180,0) - (V5 + V1);
alusnurk = kraadid (atan2 (bx, by));
arm1_angle = kraadid (arm1_angle);
arm2_angle = kraadid (arm2_angle);
// println (by, bz);
// arm1_angle = 90;
// arm2_angle = 45;
/*
arm2_angle = 23;
käe_nurk = 23;
arm2_angle = 23;
*/
// interaktiivne:
// kui (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
//} muud
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
joonistusrobot (alusnurk,-(käe_nurk-90), käe_nurk+90-(-(käe_nurk-90)));
// println (base_angle + "," + arm1_angle + "," + arm2_angle);
}
void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotateX (1.2);
rotateZ (-1,2);
taust (0);
valgus();
pushMatrix ();
// ALUS
täitke (150, 150, 150);
kasti_nurk (50, 50, b_height, 0);
pöörlema (radiaanid (alusnurk), 0, 0, 1);
// ARM 1
täitke (150, 0, 150);
kast_nurk (10, 10, a1, käe_nurk);
// ARM 2
täitke (255, 0, 0);
kast_nurk (10, 10, a2, arm2_angle);
// SUDE
täitke (255, 150, 0);
kast_nurk (10, 10, snude_len, -arm1_angle -arm2_angle+90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
tõlkima (0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix ();
tõlkima (x, action_box_size- y-action_box_size/2, z-action_box_size/2);
täitke (255, 255, 0);
kast (20);
popMatrix ();
täitke (255, 255, 255, 50);
kast (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (ujuk w, ujuk h, ujuk d, ujukpööre)
{
pöörlema (radiaanid (pöörlema), 1, 0, 0);
tõlkima (0, 0, d/2);
kast (w, h, d);
tõlkima (0, 0, d/2);
}
tühi võti Vajutatud ()
{
kui (võti == 'z')
{
doZ =! doZ;
}
kui (võti == 'h')
{
// seadke kõik nulli
arm2_angle = 0;
käe_nurk = 90;
alusnurk = 0;
}
kui (võti == 'g')
{
println (kraadid (V1));
println (kraadid (V5));
}
if (keyCode == ÜLES)
{
z ++;
}
if (keyCode == ALLA)
{
z -;
}
kui (võti == '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);
}
}
Soovitan:
RFID -põhine roboti valimine ja paigutamine: 4 sammu
RFID -põhine valimis- ja paigutusrobot: juba aastaid on inimesed püüdnud inimeste tööd masinatega asendada. Masinad, mida nimetatakse robotiteks, on kiiremad ja tõhusamad kui inimesed. Mõiste robootika on praktiliselt määratletud kui robotite süsteemide uurimine, projekteerimine ja kasutamine tootmiseks. Robotid on
2D kunst programmeeritavate LED -ide ning kohandatava aluse ja logoga: 5 sammu (piltidega)
2D kunst programmeeritavate LED -ide ning kohandatava aluse ja logoga: Tere tulemast juhendatava juurde! Täna näitan teile, kuidas teha 2D kunstiprojekti teie valitud logo ja üldise kujundusega. Tegin selle projekti, sest see võib õpetada inimestele paljusid oskusi, nagu programmeerimine, juhtmestik, 3D -modelleerimine ja muud. See
Kuidas teha oma lõkkeukse oma aluse kaitsmiseks !!!: 6 sammu
Kuidas teha oma baasi kaitsmiseks lõksuks !!!: Täna kavatsesime õppida, kuidas teha oma baasi kaitsmiseks vinge TRAP -uks
AR -objektide paigutamine GPS -koordinaatidele liitreaalsuses: 8 sammu (piltidega)
AR -objektide paigutamine liitreaalsuse GPS -koordinaatidele: see juhend annab ülevaate mobiilirakenduse loomisest AR -objektide paigutamiseks GPS -koordinaatidele koos ARkiti ja ARCore'iga, kasutades Unity3D -d. Ma juhendan teid Mapboxi abil tehtud projekti seadistamisel, mis võimaldab meil märkida sõnumid teatud G
Kuidas: Bändimängijate paigutamine oma MySpace'i: 5 sammu
Kuidas: Bändimängijate paigutamine oma Myspace'i: Selles juhendis õpetan teile, kuidas Myspace Bandi muusikamängijad oma Myspace'i profiilile lisada. märkus: see on minu esimene juhendatav