Endüstriyel alanda insan gücünün yerini robot kollar aldı. Fabrikalarda robot kollar, insanın taşıyamayacağı ağırlık ve büyüklükteki yükleri taşıma ve döndürme görevlerini üstleniyor. Milimetrenin binde biri hassasiyetle konumlanabilmek, insan elinin sergileyebileceği hassasiyetin üzerindedir. Otomobil fabrikalarının üretim videolarını izlediğinizde robot kollarının ne kadar hayati olduğunu göreceksiniz. Robot olarak adlandırılmalarının nedeni aynı işi sonsuz tekrarlarla yapacak şekilde programlanabilmeleridir. Kol denmesinin nedeni kollarımız gibi eklemli bir yapıya sahip olmasıdır. Bir robot kolunun kaç farklı yöne dönebileceği ve hareket edebileceği eksenlerle ifade edilir. Robot kollar aynı zamanda alüminyum ve çeşitli metallerin oyulması ve şekillendirilmesinde de kullanılıyor. 7 eksenli CNC Router olarak adlandırılan bu cihazlar, bir heykeltıraşın çamuru şekillendirmesi gibi metallere şekil verebilmektedir.
Robot kolunun amacına bağlı olarak, step motorlar Ve Servo motorlar kullanılabilir. PicoBricks servo motorlarla proje yapmanızı sağlar.
Ayrıntılar ve Algoritma
Ne zaman üzerinde nesne algılandı LDR sensör, RGB LED'i KIRMIZI renge dönecek ve robot kolu aşağıdaki manevraları gerçekleştirecektir:
- tutucuyu aç
- aşağı doğru hareket et
- tutucuyu kapat
- yukarı doğru hareket et
Kol hareketi tamamlandığında RGB LED YEŞİL yanacaktır.
Bu hareketlere göre iki servonun başlangıç konumları şu şekilde olmalıdır:
- Servo1 kontrol tutucusu KAPALI konumda olmalıdır
- Servo 2 yukarı/aşağı kontrolü yapıyor hareket YUKARI konumda olmalıdır
Dört farklı hareket kontrol mantığı gereklidir:
- YUKARI: 2 derecelik artışlarla 90 derecelik bir hareket gerçekleştirin
- AŞAĞI: -2 derecelik artışlarla 90 derecelik bir hareket gerçekleştirin
- AÇIK: tutucuyu 90 dereceye konumlandırın
- KAPALI: tutucuyu -60 dereceye konumlandırın
Tüm hareketlere sesli geri bildirim eşlik edecek ve ekranda görüntülenecektir. GİTMEK sorun giderme amacıyla. Daha sonra istenirse say bloklarını kaldırabilirsiniz.
Servo motor hareketleri çok hızlıdır. Hareketi yavaşlatmak için servo motorları 30 milisaniye aralıklarla 2 derece hareket ettirerek 90 derecelik bir hareketi tamamlayacağız. Bunu tutucunun kapanması için yapmayacağız.
3D Baskı ve gerekli parçaları birleştirin Tutucu bağlantıdan Burada.
Bileşenler
1X PicoBrick
2X Servo Motorlu
4X Kolay Bağlantı Kabloları
Atlama Kabloları
Bağlantı şeması
Picobricks modüllerini kablolama olmadan kodlayabilir ve çalıştırabilirsiniz. Modülleri panodan ayırarak kullanacaksanız modül bağlantılarını grove kablolarla yapmalısınız.
Projenin İnşaat Aşamaları
Projeyi hazırlamak için Pan-Tilt kitinin parçalarını hazırlayın. 3D baskılı parçalarınızı, atık karton parçalarınızı, sıcak silikon yapıştırıcınızı ve makasınızı yanınızda taşıyın.
1) Öncelikle robot kolunun sabit kolunu hazırlayacağız. D parçasının yuvarlak kısmına 8 cm yüksekliğinde karton silindir yapın. D parçasının üzerine yerleştirip silikonla tutturun veya yapıştırın.
2) Servo motor paketinden çıkan başlığı biraz kısaltarak C kısmının üzerine yerleştiriniz. Pan Tilt kitindeki en küçük vidalarla sabitleyin.
3) A ve C parçalarını 2 sivri uçlu vidayla birbirine sabitleyin.
4) Servo motoru dahili olarak C parçasına takın. Daha sonra servo motoru B parçasının üzerine yerleştirin ve vidalayın.
5) Tutucu için 3D yazıcıda yazdırdığınız dişli kısmının ortasından servo motor kafalarından birini kesip dişlinin içine yerleştirin. Daha sonra bunu servo motora vidalayın.
6) 3D baskılı Lineer dişliyi ve kolu güçlü bir yapıştırıcıyla birbirine yapıştırın.
7) Servoyu 3D yazıcı tutucusuna yerleştirin ve sabitleyin. Bunu sıcak silikonla veya vidalayarak yapabilirsiniz. Servo dişliyi lineer dişlinin üzerine yerleştirirken tamamen açık olduğundan emin olun.
8) Tutma servo sistemini silikonla B kısmına takın.
9) 3. adımda hazırladığımız parçayı ilk adımda kartondan hazırladığımız silindirin üzerinden geçirip silikonla sabitleyin.
10) Motor sürücü jumper'larını Servo pinlerine takın. Tutma servosunun kablosunu GPIO21'e ve devirme servosunun kablosunu GPIO22'ye bağlayın.
11) Yerleştirin motor sürücüsü, zil, LDR ve RGB LED modülünü bir platform üzerine yerleştirin ve robot kolunu buna göre platform üzerine yerleştirin. 3D Pen yazıcı ile projenizi dilediğiniz gibi özelleştirebilirsiniz.
PicoBricks'in MicroBlock Kodları
Projenin Microblocks kodlarına görseli Microblocks Run sekmesine sürükleyerek veya butonuna tıklayarak ulaşabilirsiniz. düğme.
PicoBricks'in MicroPython Kodları
Robot Kol Kodu:
makineden içe aktarma Pin, PWM, ADC
utime içe aktarma uykusundan
picobricks'ten WS2812'yi içe aktarın
# Kitaplıkları tanımlayın
ws = WS2812(6, parlaklık=0,3)
ldr = ADC(27)
buzzer = PWM(Pin(20, Pin.OUT))
servo1 = PWM(Pin(21))
servo2 = PWM(Pin(22))
# LDR, buzzer ve servo motor pinlerini tanımlayın
servo1.freq(50)
servo2.freq(50)
buzzer.freq(440)
# Servo motorların ve buzzerın frekanslarını tanımlayın
# RGB renk ayarları
KIRMIZI = (255, 0, 0)
YEŞİL = (0, 255, 0)
SİYAH = (0, 0, 0)
açıyukarıaşağı = 4770
açıyukarıaşağı2 = 8200
Def up():
küresel açıyukarıaşağı
(45) aralığındaki i için:
açıyukarıaşağı += 76
servo2.duty_u16(açıyukarıaşağı)
uyku(0,03)
buzzer.duty_u16(2000)
uyku(0,1)
buzzer.duty_u16(0)
# Servo2 belirli aralıklarla yükseliyor
def aşağı():
küresel açıyukarıaşağı
(45) aralığındaki i için:
açıyukarıaşağı -= 76
servo2.duty_u16(açıyukarıaşağı)
uyku(0,03)
buzzer.duty_u16(2000)
uyku(0,1)
buzzer.duty_u16(0)
# Servo2 belirli aralıklarla kapanıyor
def açık():
küresel açıyukarıaşağı2
(45) aralığındaki i için:
açıyukarıaşağı2 += 500
servo1.duty_u16(açıyukarıaşağı2)
uyku(0,03)
buzzer.duty_u16(2000)
uyku(0,1)
buzzer.duty_u16(0)
# Servo1 kelepçeleri açmak için çalışıyor
def kapat():
küresel açıyukarıaşağı2
(45) aralığındaki i için:
açıyukarıaşağı2 -= 500
servo1.duty_u16(açıyukarıaşağı2)
uyku(0,03)
buzzer.duty_u16(2000)
uyku(0,1)
buzzer.duty_u16(0)
# Servo1 kelepçeleri kapatmak için çalışıyor
açık()
servo2.duty_u16(açıyukarıaşağı)
ws.pixels_fill(SİYAH)
ws.pixels_show()
Doğru iken:
ldr.read_u16() > 20000 ise:
ws.pixels_fill(KIRMIZI)
ws.pixels_show()
uyku(1)
buzzer.duty_u16(2000)
uyku(1)
buzzer.duty_u16(0)
açık()
uyku(0,5)
aşağı()
uyku(0,5)
kapalı()
uyku(0,5)
yukarı()
ws.pixels_fill(YEŞİL)
ws.pixels_show()
uyku(0,5)
# LDR'den alınan bilgiye göre RGB LED kırmızı ve yeşil yanıyor ve servo motorlar hareket ediyor
Robot Kolu Servo Kodu:
makineden içe aktarma Pimi, PWM
servo1 = PWM(Pin(21))
servo2 = PWM(Pin(22))
servo1.freq(50)
servo2.freq(50)
servo1.duty_u16(8200) # 180 derece
servo2.duty_u16(4770) # 90 derece
PicoBricks'in Arduino C Kodları
#include
#ifdef __AVR__
#include
#endif
#PIN 6'yı tanımla
#NUMPIXELS 1'i tanımlayın
Adafruit_NeoPixel pikselleri(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Pikseller arasında duraklama süresi (milisaniye cinsinden)
#include
Servo myservo1;
Servo myservo2;
int açıyukarıaşağı;
geçersiz kurulum() {
pinMode(20, ÇIKIŞ);
pinMode(27, INPUT); //giriş ve çıkış pinlerini tanımlıyoruz
piksel.begin(); // NeoPixel kütüphanesini başlatıyoruz.
piksel.clear(); // Tüm pikselleri 'kapalı' olarak başlat
myservo1.attach(21);
myservo2.attach(22); // Servoları ekleyin.
Açık();
açıyukarıaşağı = 180;
myservo2.write(açıyukarıaşağı);
}
geçersiz döngü () {
if (analogOkuma(27) > 150) {
piksel.setPixelColor(0, piksel.Color(255, 0, 0)); // Kırmızı renk.
piksel.show();
gecikme(1000);
ton(20, 700); // Zil sesini çal
gecikme(1000);
ton yok(20); // Zil sesini durdur
Açık();
gecikme(500);
Aşağı();
gecikme(500);
Kapalı();
gecikme(500);
Yukarı();
piksel.setPixelColor(0, piksel.Color(0, 255, 0)); // Yeşil renk.
piksel.show();
gecikme(500);
// Bir gecikmeden sonra rengi temizle.
piksel.setPixelColor(0, piksel.Color(0, 0, 0)); // Kapalı
piksel.show();
gecikme(500);
Açık();
açıyukarıaşağı = 180;
myservo2.write(açıyukarıaşağı); // Servo pozisyonunu sıfırla
}
}
void Açık() {
myservo1.write(180); //Servo açılıyor
}
void Kapat() {
myservo1.write(30); // Servo kapanır
}
geçersiz kılma() {
for (int i = 0; i < 45; i++) {
açıyukarıaşağı += 2;
myservo2.write(açıyukarıaşağı); //Servoyu yukarı taşı
gecikme(30);
}
}
geçersiz Aşağı() {
for (int i = 0; i < 45; i++) {
açıyukarıaşağı -= 2;
myservo2.write(açıyukarıaşağı); //Servoyu aşağı taşı
gecikme(30);
}
}
GitHub Proje Sayfası