Агуулгын хүснэгт:
- Алхам 1: Бүрэлдэхүүн хэсгүүдэд тавигдах шаардлага
- Алхам 2: Gui татаж авах
- Алхам 3: Холболт
- Алхам 4: Firmware -ийг байршуулж, Arduino хяналтын самбарт кодын үр дүнг шалгана уу
- Алхам 5: Бүх хэсгийг фанер хуудсан дээр загварчилж, хэвлэх
- Алхам 6: Чуулган
- Алхам 7: GBRL тохиргоог тохируулна уу
- Алхам 8: Эцсийн кодыг байршуулж, Arduino Uno програм хангамжийн самбарт байгаа виртуал үр дүнг шалгана уу
Видео: Arduino баазыг сонгох ба байрлуулах робот: 8 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Би оюутнуудад илүү том хэмжээтэй робот техникийг хакердах, дотоодын жижиг үйлдвэрүүдийг банкаа эвдэхгүйгээр роботуудаа ашиглах боломжийг олгох үүднээс супер хямд (1000 доллараас бага) үйлдвэрлэлийн робот гар хийжээ. 15 -аас 50 насны хүмүүсийг бүтээх, бүтээхэд хялбар байдаг.
Алхам 1: Бүрэлдэхүүн хэсгүүдэд тавигдах шаардлага
1. Arduino + Shield + Pins + Cables
2. Мотор хянагч: dm860A (Ebay)
3. Steppermotor: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 боолт ба M8 боолт.
5. 12 мм фанер.
6. 5 мм нейлон.
7. Сохор угаагч 8мм.
8. Модон эрэг 4.5x40мм.
9. М3 тоолуур живсэн, 10. 12в цахилгаан хангамж
11. servo мотор жолооч arduino
Алхам 2: Gui татаж авах
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Алхам 3: Холболт
Зураг дээр заасан утсыг холбох нь танд илүү ойлгомжтой болно.
Бид мотор драйверийг Arduino болон таны роботын дагуу шаардлагатай бусад холбогчтой холбох хэрэгтэй.
Алхам 4: Firmware -ийг байршуулж, Arduino хяналтын самбарт кодын үр дүнг шалгана уу
Arduino - GRBL дээр програмыг суулгах:
github.com/grbl/grbl/wiki/Compiling-Grbl
Тэмдэглэл: Arduino дээр эмхэтгэх явцад зөрчилдөөн гарч болзошгүй. Номын сангийн фолдероос бусад бүх номын санг устгаарай (../documents/Arduino/libraries).
Програм хангамжийн тохиргоо
Идэвхжүүлэх тохиргоог шинэ завсарлагаанаар тохируулна уу. Цуваа холболт ашиглаад бичнэ үү:
$1=255
Хостыг тохируулах:
$22=1
Цувралыг baud: 115200 болгож тохируулахаа бүү мартаарай
Хэрэгтэй G кодууд
Роботын тэг цэгийг тохируулах:
G10 L2 Xnnn Ynnn Znnn
Тэг цэг ашиглах:
G54
Төв роботыг ердийн байдлаар эхлүүлэх:
G10 L2 X1.5 Y1.2 Z1.1
G54
Роботыг хурдан байрлалд шилжүүлэх:
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 гэсэн үндсэн нэгжүүд
Анхдагч алхам/нэгжийн тохиргоог (250 алхам/нэгж) ашиглахдаа GRBL болон
800 алхам/эргэлтэнд тохируулсан stepper drive нь бүх тэнхлэгт дараах нэгжүүдийг хэрэглэнэ.
+- 32 нэгж = +- 180 градус
Код боловсруулах жишээ:
Энэ код нь Arduino GRBL -тэй шууд холбогдох боломжтой.
github.com/damellis/gctrl
Цувралыг baud: 115200 болгож тохируулахаа бүү мартаарай
Ардунио дахь код uoload
java.awt.event. KeyEvent импортлох;
javax.swing. JOptionPane импортлох;
импорт боловсруулах.сериал.*;
Цуваа порт = null;
// өөрийн үйлдлийн системд тохирох мөрийг сонгож өөрчлөх
// интерактив портыг ашиглахын тулд null гэж үлдээнэ үү (програм дээр 'p' дарна уу)
String portname = null;
// String portname = Serial.list () [0]; // Mac OS X
// String portname = "/dev/ttyUSB0"; // Линукс
// String portname = "COM6"; // Windows
логик урсгал = худал;
хөвөх хурд = 0.001;
String gcode;
int i = 0;
хүчингүй openSerialPort ()
{
if (portname == null) буцах;
if (порт! = null) port.stop ();
порт = шинэ сериал (энэ, порт нэр, 115200);
port.bufferUntil ('\ n');
}
хоосон сонгохSerialPort ()
{
String үр дүн = (String) JOptionPane.showInputDialog (энэ, "Arduino самбартай тохирох цуваа портыг сонгоно уу.", "Цуваа порт сонгох", JOptionPane. PLAIN_MESSAGE, хоосон, Serial.list (), 0);
if (үр дүн! = тэг) {
порт нэр = үр дүн;
openSerialPort ();
}
}
хүчингүй тохиргоо ()
{
хэмжээ (500, 250);
openSerialPort ();
}
хоосон тэнцээ ()
{
дэвсгэр (0);
дүүргэх (255);
int y = 24, dy = 12;
текст ("Зааварчилгаа", 12, y); y += dy;
текст ("p: цуваа портыг сонгох", 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;
текст ("page up & page down: jog in z axis", 12, y); y += dy;
текст ("$: display grbl settings", 12, y); y+= dy;
текст ("h: гэртээ харих", 12, y); y += dy;
текст ("0: тэг машин (гэрийг одоогийн байршилд тохируулах)", 12, y); y += dy;
текст ("g: g-код файлыг дамжуулах", 12, y); y += dy;
текст ("x: g-кодыг цацахыг зогсоох (энэ нь шууд биш)", 12, y); y += dy;
y = өндөр - dy;
текст ("одоогийн гүйлтийн хурд:" + хурд + "инч тутамд", 12, y); y -= dy;
текст ("одоогийн цуваа порт:" + портын нэр, 12, y); y -= dy;
}
хоосон товчлуур дарагдсан ()
{
if (key == '1') speed = 0.001;
if (key == '2') speed = 0.01;
if (key == '3') speed = 0.1;
if (! урсгал) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + хурд + "Y0.000 Z0.000 / n");
if (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + хурд + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + хурд + "Z0.000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + хурд + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + хурд + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + хурд + "\ 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 (! урсгал && key == 'g') {
gcode = null; би = 0;
Файлын файл = null;
println ("Файлыг ачаалж байна …");
selectInput ("Боловсруулах файлыг сонгоно уу:", "fileSelected", файл);
}
if (key == 'x') урсгал = худал;
}
void fileSelected (Файлын сонголт) {
хэрэв (сонголт == null) {
println ("Цонх хаагдсан эсвэл хэрэглэгч цуцлах товчийг дарсан.");
} өөр {
println ("Хэрэглэгч сонгосон" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) буцах;
урсгал = үнэн;
урсгал ();
}
}
хоосон урсгал ()
{
хэрэв (! урсгал) буцах;
байхад (үнэн) {
хэрэв (i == gcode.length) {
урсгал = худал;
буцах;
}
if (gcode .trim (). length () == 0) i ++;
өөр завсарлага;
}
println (gcode );
port.write (gcode + '\ n');
би ++;
}
void serialEvent (Цуваа p)
{
String s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). beginWith ("ok")) stream ();
if (s.trim (). beginWith ("алдаа")) урсгал (); // XXX: үнэхээр үү?
}
Алхам 5: Бүх хэсгийг фанер хуудсан дээр загварчилж, хэвлэх
Роботын хэсэг, дизайныг AutoCAD дээр татаж аваад 12 мм фанер хуудас, өнгөлгөө, дизайны хэсгийг хэвлэ. Хэрэв хэн нэгэн cad файл хэрэгтэй бол сэтгэгдлээ коммент хэсэгт бичээрэй, би танд шууд илгээх болно.
Алхам 6: Чуулган
бүх хэсгийг цуглуулж, өгөгдсөн зургийн дарааллаар байрлуулж, зургийн диаграмыг дагана уу.
Алхам 7: GBRL тохиргоог тохируулна уу
Энэ тохиргоо нь манай робот дээр ажилладаг болох нь батлагдсан.
$ 0 = 10 (алхам импульс, usec) $ 1 = 255 (алхам сул зогсолт, msec) $ 2 = 7 (алхам порт урвуу маск: 00000111) $ 3 = 7 (dir порт урвуу маск: 00000111) $ 4 = 0 (алхамыг идэвхжүүлэх, bool $ 5 = 0 (хязгаар зүү урвуу, bool) $ 6 = 1 (зүү зүү invert, bool) $ 10 = 3 (статусын тайлангийн маск: 00000011) $ 11 = 0.020 (уулзварын хазайлт, мм) $ 12 = 0.002 (нумын хүлцэл, мм) $ 13 = 0 (тайлан инч, bool) $ 20 = 0 (зөөлөн хязгаар, bool) $ 21 = 0 (хатуу хязгаар, bool) $ 22 = 1 (homing мөчлөг, bool) $ 23 = 0 (homing dir invert mask: 00000000) $ 24 = 100.000 (homing feed, mm/min) $ 25 = 500.000 (homing search, mm/min) $ 26 = 250 (homing debounce, msec) $ 27 = 1.000 (homing pull-off, mm) $ 100 = 250.000 (x, step/mm) $ 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 accel, 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: Эцсийн кодыг байршуулж, Arduino Uno програм хангамжийн самбарт байгаа виртуал үр дүнг шалгана уу
// Нэгжүүд: CM
хөвөх b_height = 0;
хөвөх a1 = 92;
хөвөх a2 = 86;
float snude_len = 20;
boolean doZ = худал;
float base_angle; // = 0;
хөвөх гар1_angle; // = 0;
хөвөх гар2_angle; // = 0;
хөвөх bx = 60; // = 25;
хөвөх = 60; // = 0;
float bz = 60; // = 25;
хөвөх x = 60;
хөвөх y = 60;
хөвөх z = 60;
хөвөх q;
хөвөх в;
хөвөх V1;
хөвөх V2;
хөвөх V3;
хөвөх V4;
хөвөх V5;
хүчингүй тохиргоо () {
хэмжээ (700, 700, P3D);
cam = шинэ PeasyCam (энэ, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
хүчингүй сугалаа () {
// холбогч:
y = (mouseX - өргөн/2)*(- 1);
x = (mouseY - өндөр/2)*(- 1);
bz = z;
by = 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 = радиан (90.0) - q;
V5 = радиан (180) - V4 - радиан (90);
arm2_angle = radians (180.0) - (V5 + V1);
base_angle = градус (atan2 (bx, by));
arm1_angle = градус (arm1_angle);
arm2_angle = градус (arm2_angle);
// println (by, 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);
}
Void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotateX (1.2);
эргүүлэхZ (-1.2);
дэвсгэр (0);
гэрэл ();
pushMatrix ();
// СУУРЬ
дүүргэх (150, 150, 150);
хайрцагны булан (50, 50, b_ өндөр, 0);
эргүүлэх (радианууд (суурь_аглан), 0, 0, 1);
// ARM 1
дүүргэх (150, 0, 150);
хайрцагны булан (10, 10, a1, arm1_angle);
// ARM 2
бөглөх (255, 0, 0);
хайрцагны булан (10, 10, a2, arm2_angle);
// УХАА
дүүргэх (255, 150, 0);
хайрцагны булан (10, 10, snude_len, -arm1_angle -arm2_angle+90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
орчуулах (0, -актив_боксын_хэмжээ/2, үйлдлийн_боксын_хэмжээ/2+b_ өндөр);
pushMatrix ();
орчуулах (x, action_box_size- y-action_box_size/2, z-action_box_size/2);
дүүргэх (255, 255, 0);
хайрцаг (20);
popMatrix ();
дүүргэх (255, 255, 255, 50);
хайрцаг (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float эргүүлэх)
{
эргүүлэх (радиан (эргүүлэх), 1, 0, 0);
орчуулах (0, 0, d/2);
хайрцаг (w, h, d);
орчуулах (0, 0, d/2);
}
хоосон товчлуур дарагдсан ()
{
хэрэв (түлхүүр == 'z')
{
doZ =! doZ;
}
хэрэв (түлхүүр == 'h')
{
// бүгдийг тэг болгох
arm2_angle = 0;
arm1_angle = 90;
base_angle = 0;
}
хэрэв (түлхүүр == 'g')
{
println (градус (V1));
println (градус (V5));
}
хэрэв (keyCode == UP)
{
z ++;
}
хэрэв (keyCode == DOWN)
{
z -;
}
хэрэв (түлхүүр == 'o')
{
y = 50;
z = 50;
хэвлэх (q);
println (c, "c");
println (V1, "V1");
println (V2);
println (V3);
println (arm1_angle);
println (V4);
хэвлэх (V5);
println (arm2_angle);
}
}
Зөвлөмж болгож буй:
Arduino зогсоолын туслах - Машинаа зөв байрлуулах болгондоо: 5 алхам (зурагтай)
Arduino зогсоолын туслах ажилтан - Машинаа зөв цэг дээр байрлуулах: Энэ төсөлд би Arudino ашиглан машины зогсоолын туслахаа хэрхэн яаж хийхийг танд үзүүлэх болно. Энэхүү зогсоолын туслах нь таны машин хүртэлх зайг хэмжиж, LCD дэлгэцийн уншилт, LED ашиглан зөв газарт байрлуулахад тань туслах болно
RFID дээр суурилсан сонгох ба байрлуулах робот: 4 алхам
RFID дээр суурилсан сонгох ба байрлуулах робот: Олон жилийн турш хүмүүс хүний ажлыг машинаар солихыг оролдож ирсэн. Робот гэж нэрлэгддэг машинууд хүмүүсээс илүү хурдан бөгөөд илүү үр дүнтэй байдаг. Робот техник гэдэг нэр томъёог практикт роботын системийг судлах, зохион бүтээх, ашиглах гэж тодорхойлдог. Роботууд бол
Arduino автомат сүүдэрлэх дэлгэцийн төсөлд алхам алхмаар мотор, жолооч сонгох: 12 алхам (зурагтай)
Arduino автоматжуулсан сүүдэртэй дэлгэцийн төслийн алхам ба моторыг сонгох: Энэхүү зааварчилгаанд би Автомат Сүүдэрт Дэлгэцийн прототипийн төслийн хувьд шаталсан мотор ба драйверыг сонгох алхамуудыг хийх болно. Сүүдэр дэлгэц нь гараар хийсэн хамгийн алдартай, хямд Coolaroo загварууд бөгөөд би үүнийг солихыг хүссэн
UCL - Суулгасан - Сонгох ба байрлуулах: 4 алхам
UCL - Embedded - Pick and Place: Энэхүү зааварчилгаа нь 2D -ийг хэрхэн сонгох, хэрхэн байрлуулах, хэрхэн кодлох талаар өгүүлэх болно
Ipod Dock -ийн баазыг бий болго (2 санаа): 7 алхам
Ipod Dock (2 санаа): хуванцар нэг үзэг хуванцар саванд хэрэгтэй хутганы үзэг ipod (үгүй ээ: P)