Mekatronik Mühendisliği Forum


ARDUİNO EMG SENSÖRÜ EL KONTROLÜ
Değerlendir:
  • 0 Oy - 0 Yüzde
  • 1
  • 2
  • 3
  • 4
  • 5


Konu: 92
Mesaj: 303
Cinsiyet: Erkek
Kıdem: Aug 2013

3B yazıyı teknoloji gelişmesiyle birçok protez uzuvlarında üretimi bir hayli kolaylaştı.Ayrıca robotik uzuvlar ile çalışmalarda genişledi.Şimdi arduino ve sensörlerinin yeni bir uygulama alanını göreceğiz.Robotik bir eli kendi elimiz gibi nasıl kullanabiliriz? tabiki gerekli sensörler yardımıyla.İlk uygulamalar genelde bir flex sensör ile yapılıyordu ama hassas sonuçlar vermediğinden dolayı bu yöntem ile ilgili çalışmalar sonlandırıldı diyebiliriz.

Şimdi yeni popüler ve daha sağlıklı sonuçlarda veren yöntem EMG sensörü ( Elektromiyografi) anlamı, Elektronik kas ve sinir grafisi.Aslında kas ve sinir hareketlerini ölçebilen bir yöntem.Projemizde kullanacağımız malzemeler.
[Resim: emg-sensor-baglanti.jpg]
1- Arduino UNO
2- EMG sensörü
3- Servo motor shild
4- Robotik El

Robotik el nasıl yapılır bunu ileri ki projelerimizde göreceğiz.Şimdi biz işin elektronik donanım ve yazılımından bahsedeceğiz.İlk yapacağınız işlem aşağıdaki kodu arduino uno kartımıza yüklüyoruz.Ardından robotik eldeki servo motor bağlantılarını shild üzerine yerleştiriyoruz.


Kod:
#include <Servo.h>

 
Kod:
#define THRESHOLD 150

Kod:
#define EMGPIN 3 //Analog pin connected to Muscle Sensor V3 Board

Kod:
#define LITTLEPIN  3 //Digital pin used by Little servo

Kod:
#define RINGPIN    5 //Digital pin used by Ring servo

Kod:
#define MIDDLEPIN  6 //Digital pin used by Middle servo

Kod:
#define INDEXPIN   9 //Digital pin used by Index servo

Kod:
#define THUMBPIN  10 //Digital pin used by Thumb servo

 
Kod:
//Constants used to open and close the fingers

Kod:
#define LITTLE 1

Kod:
#define RING   2

Kod:
#define MIDDLE 3

Kod:
#define INDEX  4

Kod:
#define THUMB  5

 
Kod:
Servo servoLittleFinger;        

Kod:
// Define servo fingers

Kod:
Servo servoRingFinger;        

Kod:
// Define servo fingers

Kod:
Servo servoMiddleFinger;        

Kod:
// Define servo fingers

Kod:
Servo servoIndexFinger;        

Kod:
// Define servo fingers

Kod:
Servo servoThumbFinger;        

Kod:
// Define servo fingers

 
Kod:
int


Kod:
finger;

 
Kod:
// Motion routines for handopen and handclose

Kod:
void


Kod:
openhand(){

Kod:
for

Kod:
(finger = 1; finger < 6; finger++){openFinger(finger);}}

Kod:
void


Kod:
closehand(){

Kod:
for

Kod:
(finger = 1; finger < 6 ; finger++){closeFinger(finger);}}

 
 
Kod:
void


Kod:
openFinger(

Kod:
int


Kod:
finger){

Kod:
  

Kod:
if

Kod:
(finger==LITTLE){servoLittleFinger.write(0);}

Kod:
// Little finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==RING){servoRingFinger.write(170);}

Kod:
// Ring finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==MIDDLE){servoMiddleFinger.write(170);}

Kod:
// Middle finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==INDEX){servoIndexFinger.write(170);}

Kod:
// Index finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==THUMB){servoThumbFinger.write(0);}

Kod:
//Thumb finger

Kod:
}

 
Kod:
void


Kod:
closeFinger(

Kod:
int


Kod:
finger){

Kod:
  

Kod:
if

Kod:
(finger==LITTLE){servoLittleFinger.write(170);}

Kod:
// Little finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==RING){servoRingFinger.write(0);}

Kod:
// Ring finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==MIDDLE){servoMiddleFinger.write(0);}

Kod:
// Middle finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==INDEX){servoIndexFinger.write(0);}

Kod:
// Index finger

Kod:
  

Kod:
else


Kod:
if

Kod:
(finger==THUMB){servoThumbFinger.write(170);}

Kod:
//Thumb finger

Kod:
}

 
Kod:
void


Kod:
setup(){

Kod:
  

 

Kod:
  

Kod:
Serial.begin(115200);

 
Kod:
  

Kod:
servoLittleFinger.attach(LITTLEPIN); 

Kod:
// Set Little finger servo to digital pin 3

Kod:
  

Kod:
servoRingFinger.attach(RINGPIN); 

Kod:
// Set Ring finger servo to digital pin 5

Kod:
  

Kod:
servoMiddleFinger.attach(MIDDLEPIN); 

Kod:
// Set Middle finger servo to digital pin 6

Kod:
  

Kod:
servoIndexFinger.attach(INDEXPIN); 

Kod:
// Set Index finger servo to digital pin 9

Kod:
  

Kod:
servoThumbFinger.attach(THUMBPIN); 

Kod:
// Set Thumb finger servo to digital pin 10

 
Kod:
}

Kod:
//end setup

 
Kod:
void


Kod:
loop() {

Kod:
// Nothing to do here, all is done in the interrupt function

 
Kod:
  

Kod:
int


Kod:
value = analogRead(EMGPIN);

Kod:
//Sampling analog signal

Kod:
  

Kod:
if

Kod:
(value>THRESHOLD)

Kod:
  

Kod:
{closehand();}

Kod:
  

Kod:
else


Kod:
//Otherwise the hand is open

Kod:
  

Kod:
{openhand();}

Kod:
  

Kod:
Serial.println(value);

Kod:
}


Bu Proje Tübitak 2209-A kapsamında Desteklenmiştir. [Resim: emg-robot-el.jpg]
[Resim: 80952.gif]

[Resim: edolek.png]
C.Ü MeKaTRoNiK~

Cevapla
Teşekkür Edenler
.


Foruma atla:


Konuyu görüntüleyenler: 1 Misafir

Türkçe Çeviri : MyBB Türkiye
MyBB, © 2002-2018 MyBB Group.