İçindekiler:
- Adım 1: Bileşen Gereksinimi
- 2. Adım: Gui'yi İndirin
- 3. Adım: Bağlantı
- Adım 4: Ürün Yazılımını Yükleyin ve Arduino Dashboard'da Kod Sonucunu Kontrol Edin
- Adım 5: Tüm Parçaları Kontrplak Levhada Tasarlayın ve Yazdırın
- Adım 6: Montaj
- 7. Adım: GBRL Ayarlarını Kurun
- Adım 8: Son Kodu Yükleyin ve Arduino Uno Yazılım Panosundaki Sanal Sonucu Kontrol Edin
Video: Arduino Üssü Alma ve Yerleştirme Robotu: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Öğrencilerin daha büyük ölçekli robotikleri hacklemelerini sağlamak ve küçük yerel üretimlerin bankayı bozmadan süreçlerinde robotları kullanmalarını sağlamak için süper ucuz (1000 dolardan az) bir endüstriyel robot kolu yaptım. 15 ila 50 yaş arası insanları inşa etmek ve yapmak kolaydır.
Adım 1: Bileşen Gereksinimi
1. Arduino+ Shield + Pinler + Kablolar
2. Motor denetleyicisi: dm860A (Ebay)
3. Step motor: 34hs5435c-37b2 (Ebay)
4. M8x45+60+70 cıvatalar ve M8 cıvatalar.
5. 12mm Kontrplak.
6. 5mm Naylon.
7. Kör pullar 8mm.
8. Ahşap Vidalar 4.5x40mm.
9. M3 Sayaç battı, 10. 12v güç kaynağı
11. servo motor sürücüsü arduino
2. Adım: Gui'yi İndirin
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
3. Adım: Bağlantı
Resimde verilen telleri bağlayarak daha iyi anlayacaksınız.
Motor sürücüsünü Arduino'ya ve robotunuza göre gerekli olan diğer konektörlere bağlamamız gerekiyor.
Adım 4: Ürün Yazılımını Yükleyin ve Arduino Dashboard'da Kod Sonucunu Kontrol Edin
Firmware'i Arduino - GRBL'ye kurmak:
github.com/grbl/grbl/wiki/Compiling-Grbl
Not: Arduino'da derleme yaparken bir çakışma yaşayabilirsiniz. Diğer tüm kitaplıkları kitaplık klasörünüzden kaldırın (../documents/Arduino/libraries).
Bellenim kurulumu
Etkinleştirmeyi daha yeni bir zaman aşımına ayarlayın. Seri bağlantı kullanın ve şunu yazın:
$1=255
Hedef aramayı ayarla:
$22=1
Seriyi baud olarak ayarlamayı unutmayın: 115200
Kullanışlı G kodları
Robot için sıfır noktası ayarlayın:
G10 L2 Xnnn Ynnn Znnn
Sıfır noktası kullanın:
G54
Robotu merkezlemek için tipik başlatma:
G10 L2 X1.5 Y1.2 Z1.1
G54
Robotu hızlı konuma getirin:
G0 Xnnn Ynnn Znnn
Örnek:
G0 X10.0 Y3.1 Z4.2 (dönüş)
Robotu belirli bir hızda pozisyona getirin:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (dönüş)
F, 10(yavaş) ile 600(hızlı) arasında olmalıdır
X, Y ve Z için varsayılan birimler
GRBL için varsayılan adım/birim ayarlarını (250 adım/birim) kullanırken ve
800 adım/dev için step sürücü kurulumu tüm eksenler için aşağıdaki birimler geçerlidir:
+- 32 birim = +- 180 derece
İşlem kodu örneği:
Bu kod doğrudan Arduino GRBL ile iletişim kurabilir.
github.com/damellis/gctrl
Seriyi baud olarak ayarlamayı unutmayın: 115200
Arduino'da uoload kodu
java.awt.event. KeyEvent'i içe aktar;
javax.swing. JOptionPane'i içe aktarın;
işleme.serisini içe aktar.*;
Seri bağlantı noktası = boş;
// işletim sisteminiz için uygun satırı seçin ve değiştirin
// etkileşimli bağlantı noktasını kullanmak için boş bırakın (programda 'p'ye basın)
Dize bağlantı noktası adı = boş;
//Dize portadı = Serial.list()[0]; // Mac OS X
//Dize bağlantı noktası adı = "/dev/ttyUSB0"; // Linux
//Dize bağlantı noktası adı = "COM6"; // Pencereler
boole akışı = yanlış;
şamandıra hızı = 0.001;
string gcode;
int ben = 0;
geçersiz openSerialPort()
{
if (portadı == null) dönüş;
if (port != null) port.stop();
bağlantı noktası = yeni Seri(bu, bağlantı noktası adı, 115200);
port.bufferUntil('\n');
}
geçersiz selectSerialPort()
{
Dize sonucu = (Dize) JOptionPane.showInputDialog(bu, "Arduino kartınıza karşılık gelen seri bağlantı noktasını seçin.", "Seri bağlantı noktası seçin", JOptionPane. PLAIN_MESSAGE, boş, Seri.list(), 0);
if (sonuç != boş) {
portadı = sonuç;
openSerialPort();
}
}
geçersiz kurulum()
{
boyut(500, 250);
openSerialPort();
}
geçersiz çekiliş()
{
arkaplan(0);
doldur(255);
int y = 24, dy = 12;
text("TALİMATLAR", 12, y); y += dy;
text("p: seri port seç", 12, y); y += dy;
text("1: hızı jog başına 0,001 inç (1 mil) olarak ayarlayın", 12, y); y += dy;
text("2: hızı jog başına 0,010 inç (10 mil) olarak ayarlayın", 12, y); y += dy;
text("3: hızı jog başına 0,100 inç (100 mil) olarak ayarlayın", 12, y); y += dy;
text("ok tuşları: x-y düzleminde ilerleyin", 12, y); y += dy;
text("sayfa yukarı ve sayfa aşağı: z ekseninde ilerleyin", 12, y); y += dy;
text("$: grbl ayarlarını göster", 12, y); y+= dy;
text("h: eve git", 12, y); y += dy;
text("0: sıfır makine (geçerli konuma ayarlayın)", 12, y); y += dy;
text("g: bir g kodu dosyasının akışını gerçekleştirin", 12, y); y += dy;
text("x: g kodu akışını durdurun (bu hemen DEĞİLDİR)", 12, y); y += dy;
y = yükseklik - dy;
text("geçerli hareket hızı: " + hız + " adım başına inç", 12, y); y -= dy;
text("geçerli seri bağlantı noktası: " + bağlantı noktası adı, 12, y); y -= dy;
}
geçersiz tuşBasılmış()
{
if (anahtar == '1') hız = 0.001;
if (anahtar == '2') hız = 0.01;
if (anahtar == '3') hız = 0.1;
if (!akış) {
if (keyCode == SOL) port.write("G91\nG20\nG00 X-" + hız + " Y0.000 Z0.000\n");
if (keyCode == SAĞ) port.write("G91\nG20\nG00 X" + hız + " Y0.000 Z0.000\n");
if (keyCode == UP) port.write("G91\nG20\nG00 X0.000 Y" + hız + " Z0.000\n");
if (keyCode == DOWN) port.write("G91\nG20\nG00 X0.000 Y-" + hız + " Z0.000\n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write("G91\nG20\nG00 X0.0000 Y0.000 Z" + hız + "\n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write("G91\nG20\nG00 X0.000 Y0.000 Z-" + hız + "\n");
//if (anahtar == 'h') port.write("G90\nG20\nG00 X0.0000 Y0.000 Z0.000\n");
if (key == 'v') port.write("$0=75\n$1=74\n$2=75\n");
//if (anahtar == '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 (anahtar == '0') openSerialPort();
if (anahtar == 'p') selectSerialPort();
if (key == '$') port.write("$$\n");
if (key == 'h') port.write("$H\n");
}
if (!streaming && key == 'g') {
gcode = boş; ben = 0;
Dosya dosyası = boş;
println("Dosya yükleniyor…");
selectInput("İşlenecek bir dosya seçin:", "fileSelected", dosya);
}
if (key == 'x') akış = false;
}
void fileSelected(Dosya seçimi) {
if (seçim == boş) {
println("Pencere kapatıldı veya kullanıcı iptal tuşuna bastı.");
} Başka {
println("Kullanıcı seçildi " +selection.getAbsolutePath());
gcode = loadStrings(selection.getAbsolutePath());
if (gcode == null) döner;
akış = doğru;
aktarım();
}
}
geçersiz akış()
{
eğer (!streaming) dönerse;
while (doğru) {
if (i == gcode.length) {
akış = yanlış;
dönüş;
}
if (gcode.trim().length() == 0) i++;
başka kırılma;
}
println(gcode);
port.write(gcode + '\n');
ben++;
}
void serialEvent(Seri p)
{
String s = p.readStringUntil('\n');
println(s.trim());
if (s.trim().startsWith("ok")) stream();
if (s.trim().startsWith("hata")) stream(); // XXX: gerçekten mi?
}
Adım 5: Tüm Parçaları Kontrplak Levhada Tasarlayın ve Yazdırın
Robot parçasını ve tasarımını AutoCAD'de indirin ve 12 mm'lik kontrplak levha ve bitiş ve tasarım bölümünü yazdırın. Herhangi birinin cad dosyasına ihtiyacı varsa lütfen yorum bölümüne yorum bırakın, ben `doğrudan göndereceğim.
Adım 6: Montaj
tüm parçaları toplayın ve verilen görüntü üzerinde sıraya göre düzenleyin ve görüntü diyagramını takip edin.
7. Adım: GBRL Ayarlarını Kurun
Robotlarımızda işe yaradığı kanıtlanmış ayar.
$0=10 (adım darbesi, usec) $1=255 (adım boşta kalma gecikmesi, msn) $2=7 (adım bağlantı noktası ters çevirme maskesi:00000111) $3=7 (dir bağlantı noktası ters çevirme maskesi:0000111) $4=0 (adım etkinleştirme ters çevirme, bool) $5=0 (limit pinleri ters çevir, bool) $6=1 (prob pini ters çevir, bool) $10=3 (durum raporu maskesi:00000011) $11=0.020 (bağlantı sapması, mm) 12$=0.002 (yay toleransı, mm) 13$ =0 (rapor inç, bool) $20=0 (yumuşak limitler, bool) $21=0 (sabit limitler, bool) $22=1 (homing döngüsü, bool) $23=0 (homing dir invert mask:00000000) $24=100.000 (hedef arama beslemesi, mm/dak) 25=500.000 $ (hedef arama, mm/dak) 26=250 $ (yer arama geri dönüşü, msn) 27=1.000 $ (yer arama çekme, mm) 100$=250.000 (x, adım/mm) 101$= 250.000 (y, adım/mm) 102=250.000 (z, adım/mm) 110=500.000 (x maksimum hız, mm/dak) 111=500.000 (y maksimum hız, mm/dak) 112=500.000 (z maksimum hız, mm/dk) 120$=10.000 (x hızlanma, mm/sn^2) 121=10.000 (y hızlanma, mm/sn^2) 122$=10.000 (z hızlanma, mm/sn^2) 130$=200.000 (x maks. hareket), mm) 131=200.000 (y maks. hareket, mm) 132=200.000 (z maks. hareket, mm)
Adım 8: Son Kodu Yükleyin ve Arduino Uno Yazılım Panosundaki Sanal Sonucu Kontrol Edin
// Birimler: CM
float b_height = 0;
kayan a1 = 92;
kayan a2 = 86;
float snude_len = 20;
boolean doZ = yanlış;
kayan taban_açı;// = 0;
float arm1_angle; // = 0;
yüzer arm2_angle; //= 0;
kayan nokta bx = 60;// = 25;
yüzer = 60;// = 0;
kayan nokta bz = 60;// = 25;
kayan nokta x = 60;
yüzer y = 60;
kayan nokta z = 60;
yüzer q;
yüzer c;
yüzer V1;
yüzer V2;
yüzer V3;
yüzer V4;
yüzer V5;
geçersiz kurulum() {
boyut(700, 700, P3D);
cam = yeni PeasyCam(bu, 300);
cam.setMinimumMesafe(50);
cam.setMaximumDistance(500);
}
geçersiz beraberlik() {
// liginger:
y = (fareX - genişlik/2)*(-1);
x = (fareY - yükseklik/2)*(-1);
bz = z;
tarafından = 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 = radyan(90.0) - q;
V5 = radyan(180) - V4 - radyan(90);
arm2_angle = radyan(180.0) - (V5 + V1);
taban_açı = derece(atan2(bx, by));
arm1_angle=derece(arm1_angle);
arm2_angle=derece(arm2_angle);
//println(tarafından, bz);
//kol1_açı = 90;
//kol2_açı = 45;
/*
arm2_angle = 23;
arm1_angle= 23;
arm2_angle=23;
*/
// etkileşimli:
// eğer (doZ)
//
// {
// base_angle = base_angle+ mouseX-pmouseX;
// } Başka
// {
// arm1_angle =arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ fareY-pmouseY;
draw_robot(taban_açı, -(kol1_açı-90), kol2_açı+90 - (-(kol1_açı-90)));
// println(taban_açı + ", " + kol1_açı + ", " + kol2_açı);
}
void draw_robot(float base_angle, float arm1_angle, float arm2_angle)
{
döndürmeX(1.2);
döndürZ(-1.2);
arkaplan(0);
ışıklar();
pushMatrix();
// TEMEL
doldur(150, 150, 150);
box_corner(50, 50, b_height, 0);
döndürme(radyan(taban_açı), 0, 0, 1);
// KOL 1
doldur(150, 0, 150);
box_corner(10, 10, a1, arm1_angle);
// KOL 2
doldur(255, 0, 0);
box_corner(10, 10, a2, arm2_angle);
// SNUDE
doldur(255, 150, 0);
box_corner(10, 10, snude_len, -arm1_angle-arm2_angle+90);
popMatrix();
pushMatrix();
float action_box_size=100;
translate(0, -action_box_size/2, action_box_size/2+b_height);
pushMatrix();
translate(x, action_box_size- y-action_box_size/2, z-action_box_size/2);
doldur(255, 255, 0);
kutu(20);
popMatrix();
doldur(255, 255, 255, 50);
kutu(action_box_size, action_box_size, action_box_size);
popMatrix();
}
void box_corner(float w, float h, float d, float döndürme)
{
döndür(radyan(döndür), 1, 0, 0);
çevir(0, 0, d/2);
kutu(w, h, d);
çevir(0, 0, d/2);
}
geçersiz tuşBasılmış()
{
if (anahtar == 'z')
{
doZ = !doZ;
}
if (anahtar == 'h')
{
// hepsini sıfıra ayarla
arm2_angle = 0;
arm1_angle = 90;
taban_açı = 0;
}
if (anahtar == 'g')
{
println(derece(V1));
println(derece(V5));
}
if (anahtar Kodu == YUKARI)
{
z++;
}
if (anahtar Kodu == AŞAĞI)
{
z --;
}
if (anahtar == 'o')
{
y = 50;
z = 50;
println(q);
println(c, "c");
println(V1, "V1");
println(V2);
println(V3);
println(kol1_açı);
println(V4);
println(V5);
println(arm2_açı);
}
}
Önerilen:
Bir Dizüstü Bilgisayarı Yerleştirme İstasyonuna Bağlarken Otomatik Olarak Bir Programı Başlatın: 5 Adım
Bir Dizüstü Bilgisayarı Yerleştirme İstasyonuna Bağlarken Otomatik Olarak Bir Programı Başlatın: Bu talimat, dizüstü bilgisayarınızı bir yerleştirme istasyonuna bağladığınızda bir programın veya uygulamanın nasıl çalıştırılacağı hakkındadır. Bu örnekte Lenovo T480 Windows 10 kullanıyorum
Cep Yerleştirme Cihazı Nasıl Yapılır: 4 Adım
Cep Yerleştirme Cihazı Nasıl Yapılır: Herkese merhaba. Bu Eğitilebilir Yazı için, bir yılın daha iyi bir bölümünde üzerinde çalıştığım devam eden bir çalışmayı açıklayacağım. Ben buna Pocket Doc, diğer adıyla Apple Fold diyorum. Bir telefon ve güç bankası barındıran 3B Basılı bir kasadır ve
RFID Tabanlı Alma ve Yerleştirme Robotu: 4 Adım
RFID Tabanlı Al ve Yerleştir Robotu: İnsanlar uzun yıllardan beri insan işini makinelerle değiştirmeye çalışıyor. Robot denilen makineler insanlardan daha hızlı ve daha etkilidir. Robotik terimi, pratik olarak üretim için robot sistemlerinin incelenmesi, tasarımı ve kullanımı olarak tanımlanır. Robotlar g
Vokalist İçin Mikrofon Tekniği ve Yerleştirme Önerileri: 5 Adım
Vokalist için Mikrofon Tekniği ve Yerleştirme Önerileri: Deneyimsizler için mikrofon kullanmak başlangıçta oldukça kolay bir işlem gibi görünebilir. Üst kısımdaki yuvarlak kısma kadar sadece konuşun veya şarkı söyleyin ve hoparlörlerden güzel bir netlik ve dengeli ses yayılacak ve geniş bir beğeni toplayacak
AR Nesnelerini Artırılmış Gerçeklikte GPS Koordinatlarına Yerleştirme: 8 Adım (Resimlerle)
AR Nesnelerini Artırılmış Gerçeklikte GPS Koordinatlarına Yerleştirme: Bu talimat, Unity3D kullanarak ARkit ve ARCore ile AR nesnelerini GPS koordinatlarına yerleştirmek için bir mobil uygulama yapmaya devam edecek. Mesajları belirli G'de etiketlememize izin veren Mapbox kullanarak yaptığım bir projeyi kurarken size yol göstereceğim