Sisällysluettelo:
- Vaihe 1: Komponenttivaatimus
- Vaihe 2: Lataa Gui
- Vaihe 3: Yhteys
- Vaihe 4: Lataa laiteohjelmisto ja tarkista kooditulos Arduino Dashboardista
- Vaihe 5: Suunnittele ja tulosta kaikki osat vanerilevylle
- Vaihe 6: Kokoonpano
- Vaihe 7: Määritä GBRL -asetukset
- Vaihe 8: Lataa lopullinen koodi ja tarkista virtuaalitulos Arduino Uno -ohjelmiston hallintapaneelista
Video: Arduino Base Pick and Place Robot: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Olen tehnyt erittäin halvan (alle 1000 dollarin) teollisen robottivarren, jonka avulla opiskelijat voivat hakkeroida suurempaa robotiikkaa ja jotta pienet paikalliset tuotannot voivat käyttää robotteja prosesseissaan rikkomatta pankkia. Sen Eassy on rakentaa ja tehdä ikäryhmistä 15-50 -vuotiaita ihmisiä.
Vaihe 1: Komponenttivaatimus
1. Arduino + kilpi + nastat + kaapelit
2. moottorinohjain: dm860A (Ebay)
3. Steppomoottori: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 pultit ja M8 pultit.
5. 12mm vaneri.
6. 5 mm nailonia.
7. Sokeat aluslevyt 8 mm.
8. Puuruuvit 4,5x40mm.
9. M3 -laskuri upotettu, 10. 12V virtalähde
11. servomoottorin kuljettaja arduino
Vaihe 2: Lataa Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Vaihe 3: Yhteys
Yhdistä kuvassa annetut johdot, jotta ymmärrät paremmin.
meidän on kytkettävä moottorin ohjain Arduinoon ja muihin liittimiin, joita vaaditaan robotin mukaan.
Vaihe 4: Lataa laiteohjelmisto ja tarkista kooditulos Arduino Dashboardista
Laiteohjelmiston asentaminen Arduinoon - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Huomaa: Saatat saada ristiriidan, kun käännät Arduinossa. Poista kaikki muut kirjastot kirjastokansiostasi (../documents/Arduino/libraries).
Laiteohjelmiston asennus
Aseta käyttöönotto uudempaan aikakatkaisuun. Käytä sarjayhteyttä ja kirjoita:
$1=255
Aseta kotiutus:
$22=1
Muista asettaa sarjaksi baud: 115200
Hyödyllisiä G-koodeja
Aseta nollapiste robotille:
G10 L2 Xnnn Ynnn Znnn
Käytä nollapistettä:
G54
Tyypillinen alustaminen keskirobotille:
G10 L2 X1.5 Y1.2 Z1.1
G54
Siirrä robotti nopeasti paikalleen:
G0 Xnnn Ynnn Znnn
Esimerkki:
G0 X10.0 Y3.1 Z4.2 (paluu)
Siirrä robotti tiettyyn nopeuteen:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (paluu)
F: n tulisi olla välillä 10 (slooooow) ja 600 (nopea)
Oletusyksiköt X: lle, Y: lle ja Z: lle
Käytettäessä askel/yksiköt oletusasetuksia (250 askelta/yksikkö) GRBL: lle ja
askelmoottori 800 askelta/kierrosta varten seuraavat yksiköt koskevat kaikkia akseleita:
+- 32 yksikköä = +- 180 astetta
Esimerkki käsittelykoodista:
Tämä koodi voi kommunikoida suoraan Arduino GRBL: n kanssa.
github.com/damellis/gctrl
Muista asettaa sarjaksi baud: 115200
Koodin lataaminen arduniossa
tuo java.awt.event. KeyEvent;
tuo javax.swing. JOptionPane;
tuonti käsittely. sarja.*;
Sarjaportti = null;
// valitse ja muokkaa käyttöjärjestelmääsi sopiva rivi
// jätä tyhjäksi käyttääksesi interaktiivista porttia (paina 'p' ohjelmassa)
Merkkijonon portin nimi = null;
// Merkkijonon portin nimi = Sarja.lista () [0]; // Mac-käyttöjärjestelmän kymmenes versio
// Merkkijonon portin nimi = "/dev/ttyUSB0"; // Linux
// Merkkijonon portin nimi = "COM6"; // Windows
boolen suoratoisto = false;
uimurin nopeus = 0,001;
Jono gcode;
int i = 0;
tyhjä openSerialPort ()
{
if (portin nimi == null) return;
if (portti! = null) port.stop ();
portti = uusi sarja (tämä, portin nimi, 115200);
port.bufferUntil ('\ n');
}
void selectSerialPort ()
{
Merkkijonon tulos = (merkkijono) JOptionPane.showInputDialog (tämä, "Valitse sarjaportti, joka vastaa Arduino -korttiasi.", "Valitse sarjaportti", JOptionPane. PLAIN_MESSAGE, tyhjä, Serial.list (), 0);
jos (tulos! = nolla) {
portin nimi = tulos;
openSerialPort ();
}
}
mitätön asennus ()
{
koko (500, 250);
openSerialPort ();
}
mitätön tasapeli ()
{
tausta (0);
täyttö (255);
int y = 24, dy = 12;
teksti ("OHJEET", 12, y); y += dy;
teksti ("p: valitse sarjaportti", 12, y); y += dy;
teksti ("1: aseta nopeudeksi 0,001 tuumaa (1 mil) per lenkki", 12, y); y += dy;
teksti ("2: aseta nopeudeksi 0,010 tuumaa (10 mil) per lenkki", 12, y); y += dy;
teksti ("3: aseta nopeudeksi 10000 tuumaa (100 mil) per lenkki", 12, y); y += dy;
teksti ("nuolinäppäimet: lenkki x-y-tasossa", 12, y); y += dy;
teksti ("sivu ylös ja sivu alas: lenkki z -akselilla", 12, y); y += dy;
teksti ("$: display grbl settings", 12, y); y+= dy;
teksti ("h: mene kotiin", 12, y); y += dy;
teksti ("0: nolla kone (aseta kotiin nykyiseen sijaintiin)", 12, y); y += dy;
teksti ("g: striimaa g-kooditiedosto", 12, y); y += dy;
text ("x: lopeta g-koodin suoratoisto (tämä EI ole välitöntä)", 12, y); y += dy;
y = korkeus - dy;
teksti ("nykyinen jog -nopeus:" + nopeus + "tuumaa askelta kohden", 12, y); y -= dy;
text ("nykyinen sarjaportti:" + portin nimi, 12, y); y -= dy;
}
tyhjä avainPainettu ()
{
jos (näppäin == '1') nopeus = 0,001;
jos (näppäin == '2') nopeus = 0,01;
jos (näppäin == '3') nopeus = 0,1;
jos (! suoratoisto) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + nopeus + "Y0.000 Z0.000 / n");
if (keyCode == OIKEA) port.write ("G91 / nG20 / nG00 X" + nopeus + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + nopeus + "Z0.000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + nopeus + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + nopeus + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + nopeus + "\ 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 (avain == 'd') port.write ("$ 16 = 0 / n");
if (avain == '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;
Tiedostotiedosto = null;
println ("Ladataan tiedostoa …");
selectInput ("Valitse käsiteltävä tiedosto:", "fileSelected", tiedosto);
}
if (key == 'x') streaming = false;
}
void fileSelected (Tiedoston valinta) {
if (valinta == null) {
println ("Ikkuna suljettiin tai käyttäjä osui peruuta.");
} muuta {
println ("Käyttäjä valitsi" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) return;
suoratoisto = totta;
virta ();
}
}
tyhjä virta ()
{
jos (! suoratoisto) palaa;
while (totta) {
jos (i == gcode.length) {
suoratoisto = epätosi;
palata;
}
jos (gcode .trim (). length () == 0) i ++;
muu tauko;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
void serialEvent (Sarja p)
{
Merkkijono s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startsWith ("ok")) stream ();
if (s.trim (). startsWith ("error")) stream (); // XXX: oikeasti?
}
Vaihe 5: Suunnittele ja tulosta kaikki osat vanerilevylle
Lataa robottiosa ja suunnittelu AutoCADissa ja tulosta 12 mm: n vanerilevylle ja viimeistely- ja muotoiluosalle. Jos joku tarvitsee cad -tiedostoa, jätä kommentti kommenttikenttään, niin lähetän sen suoraan.
Vaihe 6: Kokoonpano
kerää kaikki osat ja järjestä ne järjestyksessä annettuun kuvaan ja noudata kuvakaaviota.
Vaihe 7: Määritä GBRL -asetukset
Asetus, joka on osoittautunut toimivaksi roboteissamme.
$ 0 = 10 (askelpulssi, käytäc) $ 1 = 255 (askeleen tyhjäkäynnin viive, ms) $ 2 = 7 (askelportin käänteismaski: 00000111) $ 3 = 7 (portin käänteismaski: 00000111) $ 4 = 0) $ 5 = 0 (rajanapit käänteinen, bool) $ 6 = 1 (anturin nasta käänteinen, bool) $ 10 = 3 (tilaraportin peite: 00000011) $ 11 = 0,020 (risteyspoikkeama, mm) $ 12 = 0,002 (kaaren toleranssi, mm) $ 13 = 0 (raportin tuumaa, bool) $ 20 = 0 (pehmeät rajat, bool) $ 21 = 0 (kovat rajat, bool) $ 22 = 1 (aloitusjakso, bool) $ 23 = 0 (homing dir invert mask: 00000000) $ 24 = 100.000 (aloitussyöttö, mm/min) $ 25 = 500.000 (kotiutus, mm/min) $ 26 = 250 (kotiutuksen poistuminen, ms) 27 $ = 1.000 (ulosveto, mm) $ 100 = 250.000 (x, askel/mm) $ 101 = 250.000 (y, askel/mm) $ 102 = 250.000 (z, askel/mm) $ 110 = 500.000 (x maksiminopeus, mm/min) $ 111 = 500.000 (y maksiminopeus, mm/min) $ 112 = 500.000 (z max, 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 matka, mm) $ 131 = 200.000 (y maksimi liike, mm) $ 132 = 200.000 (z max liike, mm)
Vaihe 8: Lataa lopullinen koodi ja tarkista virtuaalitulos Arduino Uno -ohjelmiston hallintapaneelista
// Yksiköt: CM
float b_height = 0;
float a1 = 92;
kelluva a2 = 86;
float snude_len = 20;
boolean doZ = epätosi;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
float bx = 60; // = 25;
kellua = 60; // = 0;
kellua bz = 60; // = 25;
float x = 60;
float y = 60;
kellua z = 60;
kellua q;
kellua c;
uimuri V1;
uimuri V2;
uimuri V3;
kelluke V4;
kelluke V5;
void setup () {
koko (700, 700, P3D);
nokka = uusi PeasyCam (tämä, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
void draw () {
// ligninger:
y = (hiiriX - leveys/2)*(- 1);
x = (hiiriY - korkeus/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;
arm1_angle = q;
V4 = radiaanit (90,0) - q;
V5 = radiaanit (180) - V4 - radiaanit (90);
arm2_angle = radiaanit (180,0) - (V5 + V1);
base_angle = astetta (atan2 (bx, by));
arm1_angle = astetta (arm1_angle);
arm2_angle = astetta (arm2_angle);
// println (by, bz);
// käsivarsi_kulma = 90;
// arm2_angle = 45;
/*
arm2_angle = 23;
varsi_kulma = 23;
arm2_angle = 23;
*/
// interaktiivinen:
// jos (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
//} muuta
// {
// 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);
}
void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotateX (1.2);
rotateZ (-1,2);
tausta (0);
valot ();
pushMatrix ();
// BASE
täyttö (150, 150, 150);
laatikkokulma (50, 50, b_height, 0);
kiertää (radiaanit (pohja_kulma), 0, 0, 1);
// ARM 1
täyttö (150, 0, 150);
laatikkokulma (10, 10, a1, varsi1_kulma);
// ARM 2
täyttö (255, 0, 0);
laatikkokulma (10, 10, a2, varsi2_kulma);
// SUDE
täyttö (255, 150, 0);
laatikkokulma (10, 10, snude_len, -arm1_angle -arm2_angle+90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
kääntää (0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix ();
kääntää (x, action_box_size- y-action_box_size/2, z-action_box_size/2);
täyttö (255, 255, 0);
laatikko (20);
popMatrix ();
täyttö (255, 255, 255, 50);
laatikko (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float rotate)
{
kiertää (radiaaneja (kiertää), 1, 0, 0);
kääntää (0, 0, d/2);
laatikko (w, h, d);
kääntää (0, 0, d/2);
}
tyhjä avainPainettu ()
{
jos (avain == 'z')
{
doZ =! doZ;
}
jos (avain == 'h')
{
// nollaa kaikki
arm2_angle = 0;
käsivarsi_kulma = 90;
pohja_kulma = 0;
}
jos (avain == 'g')
{
println (astetta (V1));
println (astetta (V5));
}
jos (keyCode == YLÖS)
{
z ++;
}
jos (keyCode == DOWN)
{
z -;
}
jos (avain == '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);
}
}
Suositeltava:
Pick-a-Player: 4 vaihetta
Pick-a-Player: Tämä ohje opastaa sinua tekemään päätöksentekijän Arduinon. Painikkeen painalluksella LEDit syttyvät satunnaisessa järjestyksessä. Muutaman sekunnin kuluttua yksi LED -valo syttyy. Tämä on Arduinon viimeinen päätös
Super Secret Base: 5 vaihetta
Super Secret Base: On aina tärkeää, että sinulla on salainen tukikohta, etenkin moninpelissä. Perusteet ovat välttämättömiä tavaroiden piilottamiselle ja piilottamiselle väkijoukkojen ja muiden pelaajien puolesta
DIY "PC -käyttömittari ROG Base" Arduinon ja Pythonin avulla: 5 vaihetta (kuvien kanssa)
DIY "PC -käyttömittari ROG Base" Arduinon ja Pythonin avulla: ************************************* +Ensinnäkin tämän ohjeen oli kirjoittanut muu kuin äidinkielenään englantilainen puhuja …… Ei englantilainen professori, joten ilmoita kaikista kieliopillisista virheistä ennen kuin teet minusta hauskaa.: P +Ja älä jäljittele
Robot Gong: Ultimate Hackaton Project Idea for Sales and Product Geeks (Koodausta ei tarvita): 17 vaihetta (kuvilla)
Robot Gong: Ultimate Hackaton Project Idea for Sales and Product Geeks (Koodausta ei tarvita): Rakennetaan robottimusiikki, joka käynnistyy sähköpostilla. Tämän avulla voit määrittää automaattiset sähköpostihälytykset laukaisemaan gongit … (SalesForcen, Trellon, Basecampin kautta …) Tiimisi ei koskaan unohda " GONGGG " kun uusi koodi ilmestyy, niin
Arduino Base Auto Direction Robot: 8 vaihetta (kuvilla)
Arduino Base Auto Direction Robot: robotti liikkuu välttämällä esteitä. se tunnistaa kohteen ja näkymän ympäröivän alueen ja jatkaa matkaansa siellä, missä on vapaata tilaa