Mündəricat:
- Addım 1: Komponent tələbləri
- Addım 2: Gui yükləyin
- Addım 3: Bağlantı
- Addım 4: Firmware yükləyin və Arduino Tablosunda Kod Nəticəsini yoxlayın
- Addım 5: Kontrplak vərəqdə bütün hissələri dizayn edin və çap edin
- Addım 6: Quraşdırma
- Addım 7: GBRL Ayarlarını Qurun
- Addım 8: Son Kodu Yükləyin və Arduino Uno Proqram Tablosunda Virtual Nəticəni yoxlayın
Video: Arduino Əsas Seçim və Yerləşdirmə Robotu: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Tələbələrə daha geniş miqyaslı robot texnikasını sındırmaq və kiçik yerli istehsalların bankları pozmadan robotları proseslərində istifadə etmələrini təmin etmək üçün super ucuz (1000 dollardan az) sənaye robot qolu hazırladım. 15 yaşdan 50 yaşa qədər olan insanları qurmaq və etmək çox asandır.
Addım 1: Komponent tələbləri
1. Arduino + Shield + Pins + Kabellər
2. Motor nəzarətçisi: dm860A (Ebay)
3. Steppermotor: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 boltlar və M8 boltlar.
5. 12 mm Kontrplak.
6. 5 mm neylon.
7. Kor yuyucular 8 mm.
8. Taxta Vintlər 4.5x40mm.
9. M3 sayğac batdı, 10. 12v enerji təchizatı
11. servo motor sürücüsü arduino
Addım 2: Gui yükləyin
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Addım 3: Bağlantı
Şəkildə verilən telləri bağlamaq sizin üçün daha yaxşı bir anlayışdır.
Motor sürücüsünü Arduino və robotunuza uyğun olaraq lazım olan digər bağlayıcılara bağlamalıyıq.
Addım 4: Firmware yükləyin və Arduino Tablosunda Kod Nəticəsini yoxlayın
Arduino - GRBL -də firmware qurmaq:
github.com/grbl/grbl/wiki/Compiling-Grbl
Qeyd: Arduinoda tərtib edərkən bir münaqişə yarana bilər. Bütün digər kitabxanaları kitabxana qovluğunuzdan silin (../documents/Arduino/libraries).
Firmware quraşdırılması
Daha yeni bir zaman aşımına icazə verin. Bir serial bağlantısı istifadə edin və yazın:
$1=255
Sahibliyi təyin edin:
$22=1
Seriyanı baud olaraq təyin etməyi unutmayın: 115200
Faydalı G kodları
Robot üçün sıfır nöqtəsini təyin edin:
G10 L2 Xnnn Ynnn Znnn
Sıfır nöqtəsini istifadə edin:
G54
Orta robotun tipik başlanğıcı:
G10 L2 X1.5 Y1.2 Z1.1
G54
Robotu sürətlə mövqeyinə keçirin:
G0 Xnnn Ynnn Znnn
Misal:
G0 X10.0 Y3.1 Z4.2 (qaytar)
Robotu müəyyən bir sürətlə mövqeyə aparın:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (dönüş)
F 10 (slooooow) ilə 600 (sürətli) arasında olmalıdır
X, Y və Z üçün standart vahidlər
GRBL və
800 addım/devir üçün qurulan step sürücü, bütün oxlar üçün aşağıdakı vahidləri tətbiq edir:
+- 32 ədəd = +- 180 dərəcə
Kod işləmə nümunəsi:
Bu kod birbaşa Arduino GRBL ilə əlaqə qura bilər.
github.com/damellis/gctrl
Seriyanı baud olaraq təyin etməyi unutmayın: 115200
Arduino -da kod uoload
java.awt.event. KeyEvent daxil edin;
javax.swing. JOptionPane idxal edin;
idxal emalı.serial.*;
Serial port = null;
// əməliyyat sisteminizə uyğun xətti seçin və dəyişdirin
// interaktiv portdan istifadə etmək üçün sıfır olaraq buraxın (proqramda 'p' düyməsini basın)
String port adı = null;
// String portname = Serial.list () [0]; // Mac OS X
// String port adı = "/dev/ttyUSB0"; // Linux
// String port adı = "COM6"; // Windows
boolean axını = yalan;
üzmə sürəti = 0.001;
String gcode;
int i = 0;
void openSerialPort ()
{
if (portname == null) qayıtmaq;
if (port! = null) port.stop ();
port = yeni Serial (bu, port adı, 115200);
port.bufferUntil ('\ n');
}
etibarsız selectSerialPort ()
{
String nəticə = (String) JOptionPane.showInputDialog (bu, "Arduino lövhənizə uyğun olan serial portunu seçin.", "Serial portu seçin", JOptionPane. PLAIN_MESSAGE, sıfır, Serial.list (), 0);
if (nəticə! = sıfır) {
port adı = nəticə;
openSerialPort ();
}
}
boş quraşdırma ()
{
ölçü (500, 250);
openSerialPort ();
}
boş çəkiliş ()
{
fon (0);
doldurun (255);
int y = 24, dy = 12;
mətn ("TƏLİMATLAR", 12, y); y += dy;
mətn ("p: serial portunu seçin", 12, y); y += dy;
mətn ("1: sürəti hər qaçış üçün 0,001 düym (1 mil) olaraq təyin et", 12, y); y += dy;
mətn ("2: hər qaçışda sürəti 0.010 düym (10 mil) olaraq təyin et", 12, y); y += dy;
mətn ("3: hər qaçışda sürəti 0.100 düym (100 mil) olaraq təyin et", 12, y); y += dy;
mətn ("ox düymələri: x-y müstəvisində qaçış", 12, y); y += dy;
mətn ("səhifə yuxarı və səhifə aşağı: z oxunda qaçış", 12, y); y += dy;
mətn ("$: display grbl settings", 12, y); y+= dy;
mətn ("h: evə get", 12, y); y += dy;
mətn ("0: sıfır maşın (cari yerə ev təyin)", 12, y); y += dy;
mətn ("g: g-kod faylını axın et", 12, y); y += dy;
mətn ("x: g-kodu axını dayandır (bu dərhal deyil)", 12, y); y += dy;
y = hündürlük - dy;
mətn ("cari qaçış sürəti:" + sürət + "addım başına düym", 12, y); y -= dy;
mətn ("cari serial port:" + port adı, 12, y); y -= dy;
}
void key Pressed ()
{
if (key == '1') sürət = 0.001;
if (key == '2') sürət = 0.01;
if (key == '3') sürət = 0.1;
if (! axın) {
əgər (keyCode == SOL) port.write ("G91 / nG20 / nG00 X-" + sürət + "Y0.000 Z0.000 / n");
əgər (keyCode == SAĞ) port.write ("G91 / nG20 / nG00 X" + sürət + "Y0.000 Z0.000 / n");
əgər (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + sürət + "Z0.000 / n");
əgər (keyCode == AŞAĞI) port.write ("G91 / nG20 / nG00 X0.000 Y-" + sürət + "Z0.000 / n");
əgər (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + sürət + "\ n");
əgər (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + sürət + "\ n");
// if (key == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");
əgər (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");
əgər (key == 'e') port.write ("$ 16 = 1 / n");
əgər (key == 'd') port.write ("$ 16 = 0 / n");
if (key == '0') openSerialPort ();
if (key == 'p') selectSerialPort ();
əgər (açar == '$') port.write ("$$ / n");
əgər (key == 'h') port.write ("$ H / n");
}
if (! axın && key == 'g') {
gcode = sıfır; i = 0;
Fayl faylı = null;
println ("Fayl yüklənir …");
selectInput ("İşlənəcək bir fayl seçin:", "fileSelected", fayl);
}
if (key == 'x') axın = yalan;
}
void fileSelected (Fayl seçimi) {
əgər (seçim == null) {
println ("Pəncərə bağlandı və ya istifadəçi ləğv etdi");
} başqa {
println ("İstifadəçi seçildi" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
əgər (gcode == null) qayıt;
axın = doğru;
axın ();
}
}
boş axın ()
{
əgər (! axın) qayıtsa;
while (doğru) {
əgər (i == gcode.length) {
axın = yalan;
qayıtmaq;
}
if (gcode .trim (). length () == 0) i ++;
başqa qırmaq;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
boş serialEvent (Serial p)
{
String s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). başlayırWith ("ok")) stream ();
if (s.trim (). startWith ("error")) stream (); // XXX: həqiqətən?
}
Addım 5: Kontrplak vərəqdə bütün hissələri dizayn edin və çap edin
Robot hissəsini və dizaynını AutoCAD -də yükləyin və 12 mm kontrplak təbəqəyə, bitirmə və dizayn hissəsinə çap edin. Hər kəsin cad faylına ehtiyacı varsa, şərh bölməsinə yazın.
Addım 6: Quraşdırma
bütün hissələri toplayın və verilən şəkildəki ardıcıllıqla düzün və şəkil sxeminə əməl edin.
Addım 7: GBRL Ayarlarını Qurun
Robotlarımızda işlədiyini sübut edən bir quruluş.
$ 0 = 10 (addım pulse, usec) $ 1 = 255 (addım boş gecikmə, msec) $ 2 = 7 (addım port invert maskası: 00000111) $ 3 = 7 (dir port invert maskası: 00000111) $ 4 = 0 (add invert, bool $ 5 = 0 (limit pinləri invert, bool) $ 6 = 1 (prob pin invert, bool) $ 10 = 3 (status hesabat maskası: 00000011) $ 11 = 0.020 (qovşağın sapması, mm) $ 12 = 0.002 (qövs tolerantlığı, mm) $ 13 = 0 (hesabat düymləri, bool) $ 20 = 0 (yumşaq məhdudiyyətlər, bool) $ 21 = 0 (sərt limitlər, bool) $ 22 = 1 (homing dövrü, bool) $ 23 = 0 (homing dir invert maskası: 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, addım/mm) $ 102 = 250.000 (z, addım/mm) $ 110 = 500.000 (x max dərəcəsi, mm/dəq) $ 111 = 500.000 (y max dərəcəsi, mm/dəq) $ 112 = 500.000 (z max dərəcəsi, mm/dəq) $ 120 = 10.000 (x sürət, mm/san^2) $ 121 = 10.000 (y sürət, mm/san^2) $ 122 = 10.000 (z sürət, mm/san^2) $ 130 = 200.000 (x maksimum səyahət, mm) $ 131 = 200.000 (y max səyahət, mm) $ 132 = 200.000 (z max səyahət, mm)
Addım 8: Son Kodu Yükləyin və Arduino Uno Proqram Tablosunda Virtual Nəticəni yoxlayın
// Vahidlər: CM
float b_height = 0;
float a1 = 92;
float a2 = 86;
float snude_len = 20;
boolean doZ = yalan;
float base_angle; // = 0;
üzən qol1_angle; // = 0;
üzən qol2_angle; // = 0;
float bx = 60; // = 25;
float = 60; // = 0;
float bz = 60; // = 25;
float x = 60;
float y = 60;
float z = 60;
üzmək q;
üzmək c;
üzən V1;
üzən V2;
float V3;
üzən V4;
üzən V5;
boş quraşdırma () {
ölçü (700, 700, P3D);
cam = yeni PeasyCam (bu, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
boş çəkmə () {
// bağlayıcı:
y = (mouseX - eni/2)*(- 1);
x = (mouseY - hündürlük/2)*(- 1);
bz = z;
ilə = 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;
qol1_angle = q;
V4 = radian (90.0) - q;
V5 = radian (180) - V4 - radian (90);
arm2_angle = radian (180.0) - (V5 + V1);
base_angle = dərəcə (atan2 (bx, by));
qol1_angle = dərəcə (qol1_angle);
arm2_angle = dərəcə (qol2_angle);
// println (by, bz);
// qol1_angle = 90;
// qol2_angle = 45;
/*
qol2_angle = 23;
qol1_angle = 23;
qol2_angle = 23;
*/
// interaktiv:
// əgər (doZ)
//
// {
// təməl_bucaq = baza_bucağı+ mouseX-pmouseX;
//} başqa
// {
// qol1_angle = qol1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
draw_robot (əsas_angle,-(qol1_angle-90), qol2_angle+90-(-(qol1_angle-90)));
// println (əsas_bucaq + "," + qol1_angle + "," + qol2_angle);
}
Void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
rotateX (1.2);
rotateZ (-1.2);
fon (0);
işıqlar ();
pushMatrix ();
// BAZA
doldurun (150, 150, 150);
box_corner (50, 50, b_height, 0);
döndür (radianlar (əsas_bucaq), 0, 0, 1);
// QOL 1
doldurun (150, 0, 150);
box_corner (10, 10, a1, qol1_angle);
// Qol 2
doldurun (255, 0, 0);
box_corner (10, 10, a2, arm2_angle);
// QARŞI
doldurun (255, 150, 0);
box_corner (10, 10, snude_len, -arm1_angle -arm2_angle+90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
tərcümə (0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix ();
tərcümə (x, action_box_size- y-action_box_size/2, z-action_box_size/2);
doldurun (255, 255, 0);
qutu (20);
popMatrix ();
doldurun (255, 255, 255, 50);
qutu (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float rotate)
{
döndür (radianlar (döndür), 1, 0, 0);
tərcümə (0, 0, d/2);
qutu (w, h, d);
tərcümə (0, 0, d/2);
}
void key Pressed ()
{
əgər (açar == 'z')
{
doZ =! doZ;
}
əgər (açar == 'h')
{
// hamısını sıfıra qoyun
qol2_angle = 0;
qol1_angle = 90;
base_angle = 0;
}
əgər (açar == 'g')
{
println (dərəcə (V1));
println (dərəcə (V5));
}
əgər (keyCode == YUKARI)
{
z ++;
}
əgər (keyCode == AŞAĞI)
{
z -;
}
əgər (açar == 'o')
{
y = 50;
z = 50;
println (q);
println (c, "c");
println (V1, "V1");
println (V2);
println (V3);
println (qol1_angle);
println (V4);
println (V5);
println (qol2_angle);
}
}
Tövsiyə:
Telepresence Robotu: Əsas Platforma (Part 1): 23 Addım (Şəkillərlə)
Telepresence Robotu: Əsas Platforma (1 -ci hissə): Telepresensiya robotu, internet üzərindən uzaqdan idarə oluna bilən və başqa bir yerdə bir vəkil olaraq işləyə bilən bir robot növüdür. Məsələn, Nyu -Yorkdasınızsa, ancaq Californdakı bir qrup insanla fiziki olaraq ünsiyyət qurmaq istəyirsinizsə
Avtomatik Yerləşdirmə Sistemi: 11 addım
Sistemin Avtomatik Yerləşdirilməsi Yerli Vəzifələr: Bu proqramlar heç kim tərəfindən yoxlanılmamış, heç bir yerdə yoxlanılmamış, sensor sensoru ilə təchiz olunmuşdur. proses və ya proses
UWB Yerləşdirmə Tüyü: 6 addım
UWB Localization Feather: Ultra-WideBand Feather, Decawave DWM1000 modulunu və ATSAMD21 ARM Cortex M0-ı Adafruit lələk form faktoruna daxil edir. DWM1000 modulu IEEE802.15.4-2011 UWB ilə uyğun olan, qapalı yerlərdə dəqiq yerləşdirmə qabiliyyətinə malik simsiz moduldur
RFID əsaslı seçmə və yerləşdirmə robotu: 4 addım
RFID əsaslı seçmə və yerləşdirmə robotu: Uzun illərdir ki, insanlar insan işlərini maşınlarla əvəz etməyə çalışırlar. Robotlar adlanan maşınlar insanlardan daha sürətli və daha təsirli olur. Robototexnika termini praktiki olaraq robot sistemlərinin istehsalı üçün öyrənilməsi, dizaynı və istifadəsi olaraq təyin olunur. Robotlar g
[Arduino Robotu] Bir Motion Capture Robotu Necə Hazırlanır - Başparmak Robotu - Servo Motor - Mənbə Kodu: 26 Adım (Şəkillərlə birlikdə)
[Arduino Robotu] Bir Motion Capture Robotu Necə Hazırlanır | Başparmak Robotu | Servo Motor | Mənbə Kodu: Başparmak Robotu. MG90S servo motor potensialiometrindən istifadə olunub. Çox əyləncəli və asandır! Kod çox sadədir. Cəmi 30 sətirdir. Bir hərəkətə bənzəyir. Hər hansı bir sualınız və ya geribildiriminizi bildirin! [Təlimat] Mənbə Kodu https: //github.c