El Hareketleriyle kontol edilen robot kol
Robot kolu kontrol etmek için birçok yöntem vardır.Bu projede el hareketiyle kontrol edilmesi, kolu daha rahat ve hassas şekilde kontrol etmemizi sağlamıştır.
Projede kullanılan komponetler:
- Arduino Nano
- Arduino Uno
- 2 Adet Adxl-345 3 eksen ivmeölçer
- 5 Adet 9 gr Servo motor
- mekanik kısmı için 2 Adet A4 boyutunda mika
Devre Şeması:
İvme Ölçer İki Servo Kontrol
// ADXL345 ivmeölçer 2 Servo Motor kontrolü #include <Wire.h> #include <Servo.h> Servo myservox; Servo myservoy; #define DEVICE (0x53) #define TO_READ (6) #define TRIGGER 16 byte buff[TO_READ] ; int i; void setup() { pinMode(TRIGGER,OUTPUT); digitalWrite(TRIGGER,HIGH); Wire.begin(); myservox.attach(9); myservoy.attach(10); myservox.write(90); delay(25); myservoy.write(90); delay(25); writeTo(DEVICE, 0x2D, 0); writeTo(DEVICE, 0x2D, 16); writeTo(DEVICE, 0x2D, 8); } void loop() { int regAddress = 0x32; int x, y, z; digitalWrite(TRIGGER,LOW); delay(10); digitalWrite(TRIGGER,HIGH); readFrom(DEVICE, regAddress, TO_READ, buff); x=0; y=0; z=0; for(i=1;i<=5;i++){ x += (((int)buff[1]) << 8) | buff[0]; y += (((int)buff[3])<< 8) | buff[2]; z += (((int)buff[5]) << 8) | buff[4]; delay(10); } x/=5; y/=5; z/=5; if(x<-255)x= -255; else if (x>255)x=255; if(y<-255)y= -255; else if (y>255)y=255; x=map(x, -255, 255, 0, 180); y=map(y, -255, 255, 0, 180); myservox.write(x); delay(25); myservoy.write(180-y); delay(25); delay(200); } void writeTo(int device, byte address, byte val) { Wire.beginTransmission(device); Wire.write(address); Wire.write(val); Wire.endTransmission(); } void readFrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); Wire.write(address); Wire.endTransmission(); Wire.beginTransmission(device); Wire.requestFrom(device, num); int i = 0; while(Wire.available()) { buff[i] = Wire.read(); i++; } Wire.endTransmission(); }
3 Servo Kontrol
// ADXL345 ivmeölçer 3 Servo Motor kontrolü #include <Wire.h> #include <Servo.h> Servo myservox; Servo myservoy; Servo myservoz; #define DEVICE (0x53) #define TO_READ (6) #define TRIGGER 16 byte buff[TO_READ] ; int i; void setup() { pinMode(TRIGGER,OUTPUT); digitalWrite(TRIGGER,HIGH); Wire.begin(); myservox.attach(9); myservoy.attach(10); myservoy.attach(11); myservox.write(90); delay(25); myservoy.write(90); delay(25); myservoz.write(90); delay(25); writeTo(DEVICE, 0x2D, 0); writeTo(DEVICE, 0x2D, 16); writeTo(DEVICE, 0x2D, 8); } void loop() { int regAddress = 0x32; int x, y, z; digitalWrite(TRIGGER,LOW); delay(10); digitalWrite(TRIGGER,HIGH); readFrom(DEVICE, regAddress, TO_READ, buff); x=0; y=0; z=0; for(i=1;i<=5;i++){ x += (((int)buff[1]) << 8) | buff[0]; y += (((int)buff[3])<< 8) | buff[2]; z += (((int)buff[5]) << 8) | buff[4]; delay(10); } x/=5; y/=5; z/=5; if(x<-255)x= -255; else if (x>255)x=255; if(y<-255)y= -255; else if (y>255)y=255; if(z<-255)z= -255; else if (z>255)z=255; x=map(x, -255, 255, 0, 180); y=map(y, -255, 255, 0, 180); z=map(z, -255, 255, 0, 180); myservox.write(x); delay(25); myservoy.write(180-y); delay(25); myservoz.write(180-z); delay(25); delay(200); } void writeTo(int device, byte address, byte val) { Wire.beginTransmission(device); Wire.write(address); Wire.write(val); Wire.endTransmission(); } void readFrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); Wire.write(address); Wire.endTransmission(); Wire.beginTransmission(device); Wire.requestFrom(device, num); int i = 0; while(Wire.available()) { buff[i] = Wire.read(); i++; } Wire.endTransmission(); }
Benzer ürünü incele >> Fonksiyonel Robot Kol
Merhaba proje ödevim bu konu üzerine ancak ivme ölçer kullanmamam gerekiyor ivme ölçer kullanmadan yaptığımda bağlantı şemasında ne tür değişiklikler meydana gelir ?
süüüüüüüüüpeeeeeeeeeeeeeeeeer
Hocam bana mail üzerinden ulaşabilirmisiniz. Bekiryldzz19@gmail.com
en alttaki motor z eksenindeki hareket etmiyor yani vücut üzerinde bir hareket yok
bu projeyi mpu6050 ile yapabilirmiyiz
Hola, me podrias decir como agregar otro servo al codigo de bluethooth
Hocam merhabalar. Mika kısımlarının ölçülerini söyleyebilir misiniz?
Uzunluk 10cm genişlik 3 cm.
merhaba arduıno nanonu baglantı ucları bellı olmuyor ama yardımcı olabilirmisiniz
servo motor sinyal pinleri 9 ve 10. dijital pinlere ivme ölçerin scl A5, sda A4 ve sdo pini gnd ye takın. vcc 3.3v ve gndyi gnd ye takın
Hello!
I am trying to control two servos using the YAW and pitch moments of mpu6050. Can you please share any code for it? Or any helpful link( siddharth123sk@gmail.com). Thanking you!
this project help you http://www.robimek.com/ivmeolcer-ile-bluetooth-uzerinden-servo-kontrol/
Merhabalar ,
Şu anda buna benzer robot kol kontrolü üzerinde çalışmaktayım … Projemde sizdede olduğu gibi adxl345 ,ivme ölçer kullanıyorum … Tek fark robotu uzaktan, kablosuz olarak kontrol etmek.. Gerçek zamanlı olarak veri transferi için sizin önerdiğiniz bir proses varmı ?
Merhaba Cihan,
mpu6050 ile yapılış projemiz mevcut.Buradan bakabilirsin >> http://www.robimek.com/ivmeolcer-ile-bluetooth-uzerinden-servo-kontrol/
Kablosuz kontrol bluetooth üzerinden yapıldı. Bunun için de iki modülün master slave modlarını ayarlaman gerekecek buradan nasıl ayarlanacağına bakabilirsin >> http://www.robimek.com/hc-05-ile-hc-06-bluetooth-modullerin-haberlesmesi/
teşekkürler benim torunum mutlu olacak yapılmış