ዝርዝር ሁኔታ:

የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት 8 ደረጃዎች
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት 8 ደረጃዎች
Anonim
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት
የአርዱዲኖ ቤዝ ምርጫ እና ቦታ ሮቦት

ተማሪዎች ትልልቅ ሮቦቶችን ለመጥለፍ እና አነስተኛ የአገር ውስጥ ምርቶች ባንኩን ሳይሰብሩ በሂደት ውስጥ ሮቦቶችን እንዲጠቀሙ ለማስቻል እጅግ በጣም ርካሽ (ከ 1000 ዶላር ያነሰ) የኢንዱስትሪ ሮቦት ክንድ ሰርቻለሁ። የእሷ ቡድን ከ 15 እስከ 50 ዓመት የዕድሜ ክልል ሰዎችን ለመገንባት እና ለማድረግ።

ደረጃ 1 የአካል ክፍሎች አስፈላጊነት

የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት
የአካል ክፍሎች አስፈላጊነት

1. አርዱinoኖ + ጋሻ + ፒን + ኬብሎች

2. የሞተር መቆጣጠሪያ - dm860A (ኢባይ)

3. Steppermotor: 34hs5435c-37b2 (Ebay)

4. M8x45+60+70 ብሎኖች እና M8 ብሎኖች።

5. 12 ሚሜ ፓምፕ።

6. 5 ሚሜ ናይሎን።

7. ዓይነ ስውራን ማጠቢያዎች 8 ሚሜ።

8. የእንጨት ስሮች 4.5x40 ሚ.ሜ.

9. M3 ቆጣሪ ሰመጠ ፣

10. 12v የኃይል አቅርቦት

11. ሰርቮ ሞተር ሾፌር አርዱinoኖ

ደረጃ 2 Gui ን ያውርዱ

zapmaker.org/projects/grbl-controller-3-0/

github.com/grbl/grbl/wiki/Using-Grbl

ደረጃ 3: ግንኙነት

ግንኙነት
ግንኙነት
ግንኙነት
ግንኙነት
ግንኙነት
ግንኙነት

በምስሉ ውስጥ የተሰጡትን ሽቦዎች ያገናኙ ለእርስዎ የበለጠ ግንዛቤ ነው።

በሮቦትዎ መሠረት የሞተር ሾፌሩን ከአርዲኖ እና ከሌሎች አያያorsች ጋር ማገናኘት አለብን።

ደረጃ 4 firmware ን ይስቀሉ እና በአርዱዲኖ ዳሽቦርድ ውስጥ የኮዱን ውጤት ያረጋግጡ

በአርዱዲኖ ላይ firmware ን መጫን - GRBL:

github.com/grbl/grbl/wiki/Compiling-Grbl

ማሳሰቢያ - በአርዱዲኖ ውስጥ ሲሰበሰቡ ግጭት ሊያጋጥምዎት ይችላል። ሁሉንም ሌሎች ቤተ -መጽሐፍት ከቤተ -መጽሐፍት አቃፊዎ (../documents/Arduino/libraries) ያስወግዱ።

የጽኑዌር ማዋቀር

ለአዲስ ጊዜ ማብቂያ ያዘጋጁን ያንቁ። ተከታታይ ግንኙነትን ይጠቀሙ እና ይፃፉ

$1=255

ሆም ማዘጋጀት ፦

$22=1

ወደ ባውድ ተከታታይ ማዘጋጀቱን ያስታውሱ - 115200

ጠቃሚ ጂ-ኮዶች

ለሮቦት ዜሮ ነጥብ ያዘጋጁ

G10 L2 Xnnn Ynnn Znnn

ዜሮ ነጥብን ይጠቀሙ

ግ 54

ለመሃል ሮቦት የተለመደው ጅምር -

G10 L2 X1.5 Y1.2 Z1.1

ግ 54

ሮቦትን በፍጥነት ወደ ቦታው ያንቀሳቅሱት ፦

G0 Xnnn Ynnn Znnn

ለምሳሌ:

G0 X10.0 Y3.1 Z4.2 (ተመላሽ)

ሮቦትን በተወሰነ ፍጥነት ወደ ቦታው ያንቀሳቅሱት ፦

G1 Xnnn Ynnn Znnn Fnnn

G1 X11 Y3 Z4 F300 (ተመላሽ)

F በ 10 (slooooow) እና በ 600 (ፈጣን) መካከል መሆን አለበት

ለ X ፣ Y እና Z ነባሪ አሃዶች

ለ GRBL ነባሪ ደረጃ/አሃዶች ቅንብሮችን (250 ደረጃ/አሃድ) ሲጠቀሙ

ስቴፐር ድራይቭ ለ 800 ደረጃ ተዘጋጅቷል/የሚከተሉትን ክፍሎች ለሁሉም ዘንግ ይተገበራል

+- 32 ክፍሎች = +-- 180 ዲግሪዎች

የኮድ ምሳሌ ምሳሌ ፦

ይህ ኮድ በቀጥታ ከ Arduino GRBL ጋር መገናኘት ይችላል።

github.com/damellis/gctrl

ወደ ባውድ ተከታታይ ማዘጋጀቱን ያስታውሱ - 115200

በአርዱኒዮ ውስጥ ኮድ ይጫኑ

አስመጪ java.awt.event. KeyEvent;

ማስመጣት javax.swing. JOptionPane;

የማስመጣት ሂደት።

ተከታታይ ወደብ = ባዶ;

// ለስርዓተ ክወናዎ ተገቢውን መስመር ይምረጡ እና ያሻሽሉ

// በይነተገናኝ ወደብ ለመጠቀም እንደ ባዶ ሆኖ ይተው (በፕሮግራሙ ውስጥ 'p' ን ይጫኑ)

ሕብረቁምፊ የወደብ ስም = ባዶ;

// ሕብረቁምፊ ወደብ ስም = Serial.list () [0]; // ማክ ኦኤስ ኤክስ

// ሕብረቁምፊ የወደብ ስም = "/dev/ttyUSB0"; // ሊኑክስ

// ሕብረቁምፊ የወደብ ስም = "COM6"; // ዊንዶውስ

ቡሊያን ዥረት = ሐሰት;

የመንሳፈፍ ፍጥነት = 0.001;

ሕብረቁምፊ gcode;

int i = 0;

ባዶ ክፍትSerialPort ()

{

(portname == null) ከተመለሰ;

ከሆነ (ወደብ! = ባዶ) port.stop ();

ወደብ = አዲስ ተከታታይ (ይህ ፣ የወደብ ስም ፣ 115200);

port.bufferUntil ('\ n');

}

ባዶ ይምረጡSerialPort ()

{

ሕብረቁምፊ ውጤት = (ሕብረቁምፊ) JOptionPane.showInputDialog (ይህ ፣

ከአርዲኖ ቦርድዎ ጋር የሚስማማውን ተከታታይ ወደብ ይምረጡ።

"ተከታታይ ወደብ ይምረጡ" ፣

JOptionPane. PLAIN_MESSAGE ፣

ባዶ ፣

Serial.list () ፣

0);

ከሆነ (ውጤት! = ባዶ) {

portname = ውጤት;

openSerialPort ();

}

}

ባዶነት ማዋቀር ()

{

መጠን (500, 250);

openSerialPort ();

}

ባዶ እጣ ()

{

ዳራ (0);

መሙላት (255);

int y = 24 ፣ dy = 12;

ጽሑፍ ("መመሪያዎች" ፣ 12 ፣ y) ፤ y += dy;

ጽሑፍ ("ገጽ: ተከታታይ ወደብ ይምረጡ" ፣ 12 ፣ y) ፤ y += dy;

ጽሑፍ ("1: ፍጥነት በ 0.001 ኢንች (1 ማይል) በአንድ ሩጫ" ፣ 12 ፣ y) ፤ y += dy;

ጽሑፍ ("2: ፍጥነት በ 0.010 ኢንች (10 ሚሊ ሜትር) በአንድ ሩጫ" ፣ 12 ፣ y) ፤ y += dy;

ጽሑፍ ("3: ፍጥነት በ 0.100 ኢንች (100 ሚሊ ሜትር) በአንድ ሩጫ" ፣ 12 ፣ y) ፤ y += dy;

ጽሑፍ (“የቀስት ቁልፎች-በ x-y አውሮፕላን ውስጥ መሮጥ” ፣ 12 ፣ y); y += dy;

ጽሑፍ (“ገጽ ወደ ላይ እና ገጽ ወደ ታች - በ z ዘንግ ውስጥ መሮጥ” ፣ 12 ፣ y); y += dy;

ጽሑፍ ("$: የ grbl ቅንብሮችን አሳይ" ፣ 12 ፣ y) ፤ y+= dy;

ጽሑፍ ("ሸ: ወደ ቤት ሂድ", 12, y); y += dy;

ጽሑፍ ("0: ዜሮ ማሽን (ወደ የአሁኑ ቦታ ቤት ያዘጋጁ)" ፣ 12 ፣ y); y += dy;

ጽሑፍ ("g: g-code ፋይል ዥረት" ፣ 12 ፣ y) ፤ y += dy;

ጽሑፍ ("x: g-code ን መልቀቅ ያቁሙ (ይህ ወዲያውኑ አይደለም)" ፣ 12 ፣ y) ፤ y += dy;

y = ቁመት - dy;

ጽሑፍ (“የአሁኑ ሩጫ ፍጥነት” + + ፍጥነት + “ኢንች በየደረጃው” ፣ 12 ፣ y); y -= dy;

ጽሑፍ ("የአሁኑ ተከታታይ ወደብ:" + portname, 12, y); y -= dy;

}

ባዶ ባዶ ተጭኗል ()

{

ከሆነ (ቁልፍ == '1') ፍጥነት = 0.001;

ከሆነ (ቁልፍ == '2') ፍጥነት = 0.01;

ከሆነ (ቁልፍ == '3') ፍጥነት = 0.1;

ከሆነ (! ዥረት) {

ከሆነ (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + speed + "Y0.000 Z0.000 / n");

ከሆነ (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + speed + "Y0.000 Z0.000 / n");

ከሆነ (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + speed + "Z0.000 / n");

ከሆነ (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + + speed + "Z0.000 / n");

ከሆነ (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + speed + "\ n");

ከሆነ (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + speed + "\ n");

// ከሆነ (ቁልፍ == 'ሸ') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");

ከሆነ (ቁልፍ == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");

// ከሆነ (ቁልፍ == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n");

ከሆነ (ቁልፍ == 's') port.write ("$ 3 = 10 / n");

ከሆነ (ቁልፍ == 'e') port.write ("$ 16 = 1 / n");

ከሆነ (ቁልፍ == 'd') port.write ("$ 16 = 0 / n");

ከሆነ (ቁልፍ == '0') openSerialPort ();

ከሆነ (ቁልፍ == 'p') ይምረጡSerialPort ();

ከሆነ (ቁልፍ == '$') port.write ("$$ / n");

ከሆነ (ቁልፍ == 'h') port.write ("$ H / n");

}

ከሆነ (! ዥረት && ቁልፍ == 'g') {

gcode = ባዶ; እኔ = 0;

ፋይል ፋይል = ባዶ;

println ("ፋይል በመጫን ላይ …");

ግብዓት ይምረጡ (“ለማስኬድ ፋይል ይምረጡ -” ፣ “ፋይል የተመረጠ” ፣ ፋይል);

}

ከሆነ (ቁልፍ == 'x') ዥረት = ሐሰት;

}

ባዶ ፋይል የተመረጠ (የፋይል ምርጫ) {

ከሆነ (ምርጫ == ባዶ) {

println ("መስኮቱ ተዘግቷል ወይም ተጠቃሚው ሰርዝ");

} ሌላ {

println ("ተጠቃሚ ተመርጧል" + selection.getAbsolutePath ());

gcode = loadStrings (selection.getAbsolutePath ());

(gcode == null) ከተመለሰ;

ዥረት = እውነት;

ዥረት ();

}

}

ባዶ ዥረት ()

{

(! ዥረት) ከተመለሰ;

(እውነት) {

ከሆነ (i == gcode.length) {

ዥረት = ሐሰት;

መመለስ;

}

ከሆነ (gcode .trim (). ርዝመት () == 0) i ++;

ሌላ እረፍት;

}

println (gcode );

port.write (gcode + '\ n'));

i ++;

}

ባዶነት ተከታታይ ክስተት (ተከታታይ ገጽ)

{

ሕብረቁምፊ s = p.readStringUntil ('\ n');

println (s.trim ());

ከሆነ (s.trim ()። በጀምር (“እሺ”)) ዥረት ();

ከሆነ (s.trim (). startWith ("ስህተት")) ዥረት (); // XXX: በእውነቱ?

}

ደረጃ 5: ሁሉንም ክፍል በፕላስተር ወረቀት ውስጥ ዲዛይን ያድርጉ እና ያትሙ

በፓነል ወረቀት ውስጥ ሁሉንም ክፍል ዲዛይን ያድርጉ እና ያትሙ
በፓነል ወረቀት ውስጥ ሁሉንም ክፍል ዲዛይን ያድርጉ እና ያትሙ

የሮቦቱን ክፍል እና ዲዛይን በ AutoCAD ውስጥ ያውርዱ እና በ 12 ሚሜ የፓምፕ ወረቀት ላይ ያትሙ እና ጨርስ እና ዲዛይን ክፍል። ካድ ፋይል የሚፈልግ ካለ አስተያየቱን በአስተያየት ክፍል ሳጥን ውስጥ ይተዉት እኔ በቀጥታ እልክልዎታለሁ።

ደረጃ 6 - ስብሰባ

ስብሰባ
ስብሰባ
ስብሰባ
ስብሰባ

ሁሉንም ክፍል ይሰብስቡ እና በተሰጠው ምስል ላይ በቅደም ተከተል ያዘጋጁ እና የምስል ንድፉን ይከተሉ።

ደረጃ 7 የ GBRL ቅንብሮችን ያዋቅሩ

በእኛ ሮቦቶች ላይ መስራቱን ያረጋገጠ ቅንብር።

$ 0 = 10 (የእርምጃ ምት ፣ አጠቃቀም) $ 1 = 255 (የእርምጃ ፈት መዘግየት ፣ msec) $ 2 = 7 (የእርከን ወደብ የተገላቢጦሽ ጭንብል 00000111) $ 3 = 7 (የዲር ወደብ የተገላቢጦሽ ጭንብል 00000111) $ 4 = 0 (ደረጃን ማንቃት ፣ bool) $ 5 = 0 (ገደብ ፒኖች ተገላቢጦሽ ፣ ቡል) $ 6 = 1 (የጥናት ፒን ተገላቢጦሽ ፣ ቡል) $ 10 = 3 (የሁኔታ ሪፖርት ጭምብል 00000011) $ 11 = 0.020 (የመገጣጠሚያ ልዩነት ፣ ሚሜ) $ 12 = 0.002 (ቅስት መቻቻል ፣ ሚሜ) $ 13 = 0 (ሪፖርት ኢንች ፣ ገንዳ) $ 20 = 0 (ለስላሳ ገደቦች ፣ ገንዳ) $ 21 = 0 (ጠንካራ ገደቦች ፣ ቦል) $ 22 = 1 (የሆሚንግ ዑደት ፣ ቡል) $ 23 = 0 (የሆሚንግ ዲ ኢንቬስተር ጭንብል ፦ 00000000) $ 24 = 100.000 (የሆሚንግ ምግብ ፣ ሚሜ/ደቂቃ) $ 25 = 500.000 (ሆሚንግ ፍለጋ ፣ ሚሜ/ደቂቃ) $ 26 = 250 (ሆሚንግ ዲቦዚንግ ፣ ሚሴሴ) $ 27 = 1.000 (ሆሚንግ መጎተት ፣ ሚሜ) $ 100 = 250.000 (x ፣ ደረጃ/ሚሜ) $ 101 = 250.000 (y, step/mm) $ 102 = 250.000 (z, step/mm) $ 110 = 500.000 (x max rate, mm/min) $ 111 = 500.000 (y max rate, mm/min) $ 112 = 500.000 (z max rate, ሚሜ/ደቂቃ) $ 120 = 10.000 (x accel ፣ mm/sec^2) $ 121 = 10.000 (y acel ፣ mm/sec^2) $ 122 = 10.000 (z accel ፣ mm/sec^2) $ 130 = 200.000 (x max travel ፣ ሚሜ) $ 131 = 200.000 (ከፍተኛ ጉዞ ፣ ሚሜ) $ 132 = 200.000 (z ከፍተኛ ጉዞ ፣ ሚሜ)

ደረጃ 8: የመጨረሻውን ኮድ ይስቀሉ እና በአርዱዲኖ ኡኖ ሶፍትዌር ዳሽቦርድ ውስጥ ያለውን ምናባዊ ውጤት ይመልከቱ

// አሃዶች CM

ተንሳፋፊ b_height = 0;

ተንሳፋፊ a1 = 92;

ተንሳፋፊ a2 = 86;

ተንሳፋፊ snude_len = 20;

ቡሊያን doZ = ሐሰት;

ተንሳፋፊ base_angle; // = 0;

ተንሳፋፊ ክንድ1_አንግል; // = 0;

ተንሳፋፊ ክንድ 2_አንግል; // = 0;

ተንሳፋፊ bx = 60; // = 25;

በ 60 ተንሳፈፈ; // = 0;

ተንሳፋፊ bz = 60; // = 25;

ተንሳፋፊ x = 60;

ተንሳፋፊ y = 60;

ተንሳፋፊ z = 60;

ተንሳፋፊ q;

ተንሳፋፊ ሐ;

ተንሳፋፊ V1;

ተንሳፋፊ V2;

ተንሳፋፊ V3;

ተንሳፋፊ V4;

ተንሳፋፊ V5;

ባዶነት ማዋቀር () {

መጠን (700 ፣ 700 ፣ P3D);

ካሜራ = አዲስ PeasyCam (ይህ ፣ 300);

cam.setMinimumDistance (50);

cam.setMaximumDistance (500);

}

ባዶ ባዶ ()

// ligninger:

y = (mouseX - ስፋት/2)*(- 1);

x = (mouseY - ቁመት/2)*(- 1);

bz = z;

በ = y;

bx = x;

ተንሳፋፊ 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 = ራዲያን (90.0) - q;

ቪ 5 = ራዲየኖች (180) - ቪ 4 - ራዲየኖች (90);

arm2_angle = radians (180.0) - (V5 + V1);

base_angle = ዲግሪዎች (atan2 (bx ፣ በ));

arm1_angle = ዲግሪ (arm1_angle);

arm2_angle = ዲግሪ (arm2_angle);

// println (በ ፣ bz);

// arm1_angle = 90;

// arm2_angle = 45;

/*

arm2_angle = 23;

arm1_angle = 23;

arm2_angle = 23;

*/

// በይነተገናኝ:

// ከሆነ (doZ)

//

// {

// base_angle = base_angle+ mouseX-pmouseX;

//} ሌላ

// {

// 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);

}

ባዶ Draw_robot (ተንሳፋፊ base_angle ፣ ተንሳፋፊ ክንድ 1_አንግል ፣ ተንሳፋፊ ክንድ 2_አንግል)

{

rotateX (1.2);

rotateZ (-1.2);

ዳራ (0);

መብራቶች ();

pushMatrix ();

// መሠረት

መሙላት (150 ፣ 150 ፣ 150);

የሳጥን_ኮርነር (50 ፣ 50 ፣ b_height ፣ 0);

ማሽከርከር (ራዲያን (ቤዝ_አንግል) ፣ 0 ፣ 0 ፣ 1);

// አርማ 1

መሙላት (150 ፣ 0 ፣ 150);

የሳጥን_ኮርነር (10 ፣ 10 ፣ a1 ፣ ክንድ1_አንግል);

// አርማ 2

መሙላት (255 ፣ 0 ፣ 0);

ሣጥን_ኮርነሪ (10 ፣ 10 ፣ a2 ፣ arm2_angle);

// SNUDE

መሙላት (255 ፣ 150 ፣ 0);

የሳጥን_ኮርነር (10 ፣ 10 ፣ snude_len ፣ -arm1_angle -arm2_angle+90);

ፖፕ ማትሪክስ ();

pushMatrix ();

ተንሳፋፊ action_box_size = 100;

መተርጎም (0, -action_box_size/2, action_box_size/2+b_ight);

pushMatrix ();

መተርጎም (x ፣ action_box_size- y-action_box_size/2 ፣ z-action_box_size/2);

መሙላት (255 ፣ 255 ፣ 0);

ሳጥን (20);

ፖፕ ማትሪክስ ();

መሙላት (255 ፣ 255 ፣ 255 ፣ 50);

ሳጥን (የድርጊት_ቦክስ_መጠን ፣ የድርጊት_ቦክስ_መጠን ፣ የድርጊት_ቦክስ_መጠን);

ፖፕ ማትሪክስ ();

}

ባዶ ሣጥን_ኮርነር (ተንሳፋፊ ወ ፣ ተንሳፋፊ ሸ ፣ ተንሳፋፊ መ ፣ ተንሳፋፊ አሽከርክር)

{

ማሽከርከር (ራዲያን (አሽከርክር) ፣ 1 ፣ 0 ፣ 0);

መተርጎም (0 ፣ 0 ፣ መ/2);

ሳጥን (ወ ፣ ሸ ፣ መ);

መተርጎም (0 ፣ 0 ፣ መ/2);

}

ባዶ ባዶ ተጭኗል ()

{

ከሆነ (ቁልፍ == 'z')

{

doZ =! doZ;

}

ከሆነ (ቁልፍ == 'ሸ')

{

// ሁሉንም ወደ ዜሮ ያዘጋጁ

arm2_angle = 0;

arm1_angle = 90;

base_angle = 0;

}

ከሆነ (ቁልፍ == 'g')

{

println (ዲግሪዎች (V1));

println (ዲግሪዎች (V5));

}

ከሆነ (የቁልፍ ኮድ == ላይ)

{

z ++;

}

ከሆነ (የቁልፍ ኮድ == ታች)

{

z -;

}

ከሆነ (ቁልፍ == 'o')

{

y = 50;

z = 50;

println (q);

println (ሐ ፣ “ሐ”);

println (V1 ፣ “V1”);

println (V2);

println (V3);

println (arm1_angle);

println (V4);

println (V5);

println (arm2_angle);

}

}

የሚመከር: