9 Haziran 2015 Salı

Arduino Örnekleri 2

Örnek 1: Karaşimşek Yapımı

const int ledpin[]={10, 11, 12, 13};
void setup ()
{
  for (int led=0; led<4; led++)
  {
    pinMode(ledpin[led], OUTPUT);
  }
}
void loop ()
{
  for (int led=0; led<3; led++)
  {
    digitalWrite(ledpin[led], HIGH);
    delay(100);
    digitalWrite(ledpin[led], LOW);
    delay(100);
  }
  for (int led=3; led>0; led--)
   {
     digitalWrite(ledpin[led], HIGH);
     delay(100);
     digitalWrite(ledpin[led], LOW);
     delay(100);
   }
}

Örnek 2: Servo motor kontrolü

#include <Servo.h>                                       // Servo motor kütüphanesi
Servo servo;
int konum=0;
void setup ()
{
  servo.attach(9);                                           //servonun bağlandığı pin
}
void loop ()
{
  for (konum= 0; konum <180; konum+=1)  // 0-180 derece arası
{
  servo.write(konum);
  delay(15);
}
for (konum= 180; konum>=1; konum -=1) // +1 ve -1 dereceyi artır.
{
 servo.write(konum);
  delay(15);
}

}

Örnek 3: Ondalik  sayi dönüşümü

int tam1;
int tam2;
int tamSonuc;
float ondaliksayi;
float ondalikSonuc;
void setup ()
{
  Serial.begin (9600);
}
void loop ()
{
  tam1= 136;
  tam2= 11;
  ondaliksayi= 136.0;

  tamSonuc =tam1/tam2;
  Serial.print("tam1/tam2 sonucu= ");
  Serial.println(tamSonuc);

  ondalikSonuc= tam1/tam2;
  Serial.print("tam1/tam2 sonuc(sonuc ondalik)=");
  Serial.println(ondalikSonuc);

  ondalikSonuc = ondaliksayi/tam2;
  Serial.print("ondalik/tam2 sonucu=");
  Serial.println(ondalikSonuc);

  ondalikSonuc = (float)tam1 / (float) tam2;
  Serial.print ("float tam1/ float tam2: ");
  Serial.print(ondalikSonuc);

  while(1);
}

Örnek 4: Karakök

int i;
float kok;
void setup ()
{
  Serial.begin (9600);
}
void loop ()
{
  for (i=1; i<51; i++)
{
 kok= sqrt (i);
 Serial.print(i);
 Serial.print ("kok sonucu: ");
 Serial.println (kok);
}
while (1);

}

Örnek 5:  Dc motor hız kontrolü 

const int analog = A0;
const int motor = 11;
int pot= 0;
void setup ()
{
}
void loop ()
{
 // Analog giriş değerini okuyoruz
  pot = analogRead (analog);
  pot = map (pot, 0, 1023, 0, 255);
  analogWrite (motor, pot);
  delay (200);
}


7 Haziran 2015 Pazar

İleri Kinematik-2


                                  Şekil.1 RPPRRR eklemli robot manipülatörü

Robotun XYZ eksenler belirlendikten sonra D-H tablosu oluşturuldu. D- H tablosu oluşturulduktan sonra matlab da tanımlanan semboller (theta açısı, alfa açısı) matrisler oluşturularak işlemler yapılır. 


Şekil.2 RPPRRR eklemli robot manipülatörünün XYZ eksenleri

Daha sonra D-H tablosundan temel dönüşüm matrisleri elde edilip matlab da çarpılıp robot manipülatörünün Px, Py ve Pz konumları bulunur. Matrisler;

T1=[ cos(TH1)    -sin(TH1)    0   A1
         sin(TH1)     cos(TH1)    1   D1
           0                      0           0    0
           0                      0           0    1]

T2=[    1    0  0    A2
            0    1  0     0
            0    0  1    D2
            0    0  0     1]

T3=[  1    0     0    A3
          0    0    -1    0
          0    1     0    D3
          0    0     0    1]

T4=[ cos(TH4)    -sin(TH4)     0   A4
         sin(TH4)     cos(TH4)     1    D4
           0                      0            0     0
           0                      0            0     1]

T5=[ cos(TH5)    -sin(TH5)   0     A5
           0                     0          -1    -D5
         sin(TH5)    cos(TH5)    0       0
         0                    0              0       1]

T6=[ cos(TH6)    -sin(TH6)   0     A6
         0                   0               1     D6
         -sin(TH6)    -cos(TH6)  0      0
         0                    0               0     1]

6 eksenli robot manipülatörü XYZ eksenleri yerleştirildikten sonra Px, Py ve Pz konumları elde edilir.

6 Haziran 2015 Cumartesi

Simmechanics ile Motor-Pervane

Mekanik aksan için kullanılacak elamanlar şase, pervane, çerçeve ve motorlardır. Yüksek bir performans ve basit kontrol algoritmaları için motorlar ve pervaneler eşit uzaklıkta olmalıdır. Karşılıklı pervanelerin de aynı yönde dönmeleri gerekmektedir.  Çerçeve olarak karbon fiber ve alüminyum alaşımdan yapılmış, hafif ve dayanıklı olanı seçilmiştir.



Şekil 1 Quadcopter SimMechanics blok diyagramı
Motor çıkışından alın Revolet ile pervanin dönmesi sağlanmaktadır. Revolute bağlı olan Joint actuator yani tor olarak isimlendirilen bloktan O.5 Nm’lik bir tork ile pernanenin dönmesini sağlayan değer atanır. Joint sensör ile ise çıkışı Tork olan yani Scope dan Tork grafiğini zamana göre elde edilir.  Body sensör ile ise konumu çıkışını almak için scope bağlanır.
Dairesel blok ile ise pervanenin dairesel olarak dönerken RPM yani hızını ölçmek için joint sensör ile beraber scope dan zaman göre grafiği elde edilir.
Enw olarak gösterilen blok ise yerçekimi değeri tanımlanır,  Rootground ile ise yüzeye olan uzaklı tanımlanır. Weld bloğu durumlar arasındaki ilişkiyi sağlar. Body coordinate systems (CS) Sürücü tarafından seçilen vücut CS bağlı bir komşu organ ya da zemin üzerinde koordinat sistemi olarak tanımlanır.

Şekil 2 Quadcopter SimMechanics motor ve pervane mekaniği-1

Şekil 3 Quadcopter SimMechanics motor ve pervane mekaniği-2

Şekil 4 Quadcopter SimMechanics 0.5 Nm ‘lik Tork Grafiği

Şekil 5 Quadcopter SimMechanics 0.5 Nm Torktaki RPM Grafiği

Şekil 6 Quadcopter SimMechanics Konum Grafiği
Quadcopter pervanesi döndüğünde, konum sabit kalacaktır. Bundan dolayı konum grafiğinde görüldüğü gibi sadece konum da değişiklik olmayacaktır. 

4 Haziran 2015 Perşembe

Ansys Quadcopter Pervane Analiz

Ansys ile pervane analizi gerçekleştirildi. Rotational Velocity ( dönme hızı ) ile pervane RPM(hız) analizini gerçekleştirdik. Pervane de yapısal analizi kullanılarak analiz edilir. Pervane analizi için, 9000 rpm bir dönme hızı verilir ve analiz gerçekleştirilir. Elde ettiğimiz eşdeğer gerilme sınırı içindedir. Polyethylene Ultimate Çekme Stres 33 MPa olduğunu. 29.549 MPa Max eşdeğer gerilme elde edilir. Dolayısıyla pervanemizde Polyethylene kullanılması güvenli olduğunu görürüz.

Şekil 1. Polyethylene ile yapılmış pervane mesh
 Mesh örümcek ağ şeklinde oluşturduğu her bölgeden kısmi diferansiyel denklem olarak aldığı örneklerdir. Yani sonsuz bir değişkeni sonlu bir değişkene dönüştürerek malzemenin değerlerini hesaplanması sağlar.
   Aşağıdaki şekillerde aldığı örnek sayısı arttırılmış ve değerlerin hassasiyet artmış olur.
Şekil 2. Mesh Element Metrik Grafiği 
Şekil 3. Polyethylene ile yapılmış pervane eşdeğer gerilmesi
Yukarıda ki pervane de Rotational Velocity ile RPM 9000 hız ile analiz edildi. Eşdeğer gerilimi 29.549 olarak analiz gerçekleşti.


Şekil 4. Polyethylene ile yapılmış pervane toplam deformasyon

Total deformation ile uygulanan Rotational Velocity göre ne kadar yükseğe çekileceği görülmektedir. Maksimum yükselmenin olduğu yer kırmızı renkte, minimum yükselmenin olduğu yer mavi renklerle gösterilmiştir.
Total deformantion’ da 9000 RPM’ lik değişken bir Rotational Velocity uygulandığında yani pervanemizin en çok uç kısımlarda deformasyona uğradığını yerin kanat uçları olduğunu görmekteyiz.

2 Haziran 2015 Salı

İleri Kinematik


Şekildeki cismin koordinat eksenleri belirlendikten sonra D-H tablosu çıkartılır. Eklemlere yerleştirilen koordinat sistemleri kurallara göre belirlendikten sonra eklem değişkenleri aşağıdaki ifadeler göz önünde bulundurularak isimlendirilir.
   ai-1, Zo ile Z  arasında X boyunca belirlenen uzunluktur.
      αi-1, Zo ile Z  arasında X boyunca ölçülen açıdır. 
     di,    Xo ile X  arasında Z boyunca belirlenen uzunluktur.
     θi,    Xo ile X arasında Z boyunca ölçülen açıdır.

Yukarı ifadeler göz önü alınıp D-H tablosu çıkartılarak matlab da işlem yapmak için robot için matrisler oluşturulur.  
D-H parametreleri belirlendikten sonra her bir eklem için aşağıdaki genel eklem matrisi kullanılır.
Yukarıdaki dönüşüm matrislerinin çarpılmasıyla ana çerçeveden araç çerçeveye doğru ileri yönlü robot kinematiği çıkarılır.
Dönüşüm matrislerinin çarpılmasıyla işlevcinin konumu ve yönelimini içeren ve eklem değişkenlerinin birer fonksiyonu olan genel bir dönüşüm matrisi elde edilir. Bu matrisinde 9 adet dönme,  
Ve 3 adet de konum px,py ve pz  belirten toplam 12 eleman bulunur.
Robotun XYZ eksenler belirlendikten sonra D-H tablosu oluşturuldu. D- H tablosu oluşturulduktan sonra matlab da tanımlanan semboller (theta açısı, alfa açısı, ) matrisler oluşturularak işlemler yapılır. Yukarıdaki robotumuz 6 dönel eksenli bir robottur. D-H parametreleri 6 eksende göre değişecektir.
Matlab için oluşturulan sembol tanımlamaları aşağıdaki gibidir. D-H tablo değerleri yazılarak
oluşturulan matris 6 dönel eksenli matris çarpılarak px,py ve pz   konumları elde edilerek robotun ana çerçeve ile uç işlevcisi arasındaki uzaklığı belirlenir.  Matlab işlem tanımlamaları aşağıdaki gibidir;  
    TH1 = sym('t1');   // TH (theta açısı)
    TH2 = sym('t2');
    TH3 = sym('t3');
    TH4 = sym(pi/2);
    TH5 = sym(-pi/2);
    TH6 = sym('t6');

   AL1 = sym(0);       // AL(alfa açısı)
   AL2 = sym(pi/2);
   AL3 = sym(-pi/2);
   AL4 = sym(pi/2);
   AL5 = sym(pi/2);
   AL6 = sym(-pi/2); 

   A1 = sym(0);
   A2 = sym(0);
   A3 = sym(0);
   A4 = sym(0);
   A5 = sym(0);
   A6 = sym(0);

   D1 = sym('h1');
   D2 = sym('d2');
   D3 = sym('I2');
   D4 = sym('d4');
   D5 = sym(0);
   D6 = sym(0);

Aşağıdaki matris denklemleri yazılırken alfa açı değerleri tablodan alınarak ve A değerleri tabloda görüldüğü üzere sıfır alınarak matrisler oluşturulmuştur.
Altı dönel eksen için oluşturulan matrisler matlab da çarpılır(T06= T1*T2*T3*T4*T5*T6) elde edilen sonuçtan son sütün bizim px,py ve pzkonumlarını yani dönüşüm matrisinde konum vektörü bulmak için bütün theta açı değerleri sıfır verilir. Matlaba matrisler eklenip çözdürülür.  Matlab da elde edilen son sütun Euler bilekli 6R robotun sonuçları;
Bütün theta değerlerine sıfır yapılınca çıkan sonuç aşağıdaki gibi olur.
Robot sıfır konumundayken Px ekseninde herhangi bir uzunluğa sahip olmazken Py ekseninde -d4-d2 ve Pz ekseninde ise I2+h1 uzunluğuna sahiptir.  eksenin tersi olduğundan eksi olarak sonuç çıktı. 

Python Pyqt5 ile Hesap Makinası

from PyQt5.QtWidgets import * from PyQt5.QtGui import * from mainUI import * from PyQt5.QtCore import * import sys # ----------------------U...