Professional Documents
Culture Documents
MÜHENDİSLİK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
PROJENİN ADI
HACI YATMAZ
TASARIM PROJESİ
Adı SOYADI
Hünkar PURTUL
İbrahim AKKAŞOĞLU
2015-2016 GÜZ DÖNEMİ
PROJENİN ADI
HACI YATMAZ
TASARIM PROJESİ
Adı SOYADI
Hünkar PURTUL
İbrahim AKKAŞOĞLU
1. Kamu güvenliği, sağlığı ve refahı ile uyumlu kararlar vermenin sorumluluğunu kabul
etmek ve kamu veya çevreyi tehdit edebilecek faktörleri derhal açıklamak;
2. Mümkün olabilecek çıkar çatışması, ister gerçekten var olması isterse sadece algı
olması, durumlarından kaçınmak. Çıkar çatışması olması durumunda, etkilenen
taraflara durumu bildirmek;
3. Mevcut verilere dayalı tahminlerde ve fikir beyan etmelerde gerçekçi ve dürüst olmak;
4. Her türlü rüşveti reddetmek;
5. Mütenasip uygulamalarını ve muhtemel sonuçlarını gözeterek teknoloji anlayışını
geliştirmek;
6. Teknik yeterliliklerimizi sürdürmek ve geliştirmek, yeterli eğitim veya tecrübe olması
veya işin zorluk sınırları ifade edilmesi durumunda ancak başkaları için teknolojik
sorumlulukları üstlenmek;
7. Teknik bir çalışma hakkında yansız bir eleştiri için uğraşmak, eleştiriyi kabul etmek ve
eleştiriyi yapmak; hatları kabul etmek ve düzeltmek; diğer katkı sunanların emeklerini
ifade etmek;
8. Bütün kişilere adilane davranmak; ırk, din, cinsiyet, yaş, milliyet, cinsi tercih, cinsiyet
kimliği, veya cinsiyet ifadesi üzerinden ayırımcılık yapma durumuna girişmemek;
9. Yanlış veya kötü amaçlı eylemler sonucu kimsenin yaralanması, mülklerinin zarar
görmesi, itibarlarının veya istihdamlarının zedelenmesi durumlarının oluşmasından
kaçınmak;
10. Meslektaşlara ve yardımcı personele mesleki gelişimlerinde yardımcı olmak ve onları
desteklemek.
II
ÖNSÖZ
Proje konusu gereği bizi araştırmaya, yeni bilgiler öğrenmeye itmiştir. Bu sayede
Tasarım Projesi dersinin temel amacı da aslında gerçekleşmiş oldu. Yani bir proje sürecini
baştan sona yaşayarak, bilgi birikimimize önemli katkıları olmuştur. İmkanların projeyi ne
derecede etkilediğini, bazen isteklerimizde imkan sınırları dolayısıyla kısıtlamaya
gidebileceğimizi de gördük. Bu proje aslında bizim için sadece bir kapı aralanması oldu da
diyebiliriz. Robotikte dengenin önemi çok yüksek ve bu yaptığımız basit robot geliştirilerek
gerçek hayatta bir çok soruna çözüm üretebilir niteliktedir.
Hünkar PURTUL
İbrahim AKKAŞOĞLU
Trabzon 2015
III
İÇİNDEKİLER
Sayfa No
IEEE ETİK KURALLARI II
ÖNSÖZ III
İÇİNDEKİLER IV
ÖZET V
1. GENEL BİLGİLER 1
1.1. Giriş 1
1.2. Kullanılan Malzemeler 1
1.2.1. Arduino Mega 1
1.2.2. Mpu6050 Gyro Sensör 2
1.2.3. DC Motor 3
1.2.4. L293D Arduino Motor Sürücü Shield 4
1.2.5. Lipo Batarya 5
2.YAPILAN ÇALIŞMALAR 6
2.1. Donanım 6
2.2. Yazılım 6
2.2.1. PID Algoritması 6
2.2.2. Mpu6050 Sensörünün Programlanması 7
2.2.3. Motor Sürücünün Programlanması 8
3.ÖNERİLER 9
4. KAYNAKLAR 10
5. STANDARTLAR ve KISITLAR FORMU 11– 1
IV
ÖZET
Motor sürücü olarak L293D Arduino Motor Sürücü Shield kullandık. Bu shield arduino
üzerine takılarak 4 DC motoru veya 2 step motoru (unipolar veya bipolar) bunlara ek olarakda
2 servo motoru kontrol etmenize imkan sağlayan bir karttır.
Projemizde ayrıca şasi yapılırken epey sorunla karşılaştık. Bunun nedeni kendimizin
yapacak ortamımızın bulunmamasıydı. Bundan ötürü şasi konusu tam isteğimizi
karşılayamıyor. Ayrıca bu tür projelerde en büyük etkenlerden birisi de şasidir. Çünkü denge
sağlamaya çalışıyoruz ve olabilecek denge sorunları sistemi farklı bir çalışma davranışı
göstermeye yönlendiriyor. Örneğin ön tarafın ağır olması demek sistemin denge için devamlı
öne doğru gitmesine neden olacaktır.
V
1
1. GENEL BİLGİLER
1.1. GİRİŞ
Projenin ana teması aslında robotik dengedir. Biz yerçekimine karşı dengenin nasıl
olabileceğine dair çalışmalar yapmış olduk. Temel alındığında bu proje ile çok geniş
çalışmalar yapılabilir. Ayrıca ana hedefimiz olan robot insan ulaşımı için de büyük
kolaylık sağlayabilecek potansiyeldedir.
Günümüzde artık robotik büyük bir çalışma alanıdır. Gerçek hayatta kullanılabilecek
cihazlar üretilmesi için bu cihazlara gerçek hayata entegre olabilecekleri kabiliyetler
verilmeye çalışılır. Zaten gerçek hayatta kullanılamayan üretimler pek değer kazanamazlar.
Mikrodenetleyici Atmega2560
Çalışma Gerilimi 5V
Giriş Gerilimi (önerilen) 7-12V
Giriş Gerilimi (limit) 6-20V
Dijital I/O Pinleri 54 (15 tanesi PWM çıkışı)
Analog Giriş Pinleri 16
Her I/O için Akım 40 mA
3.3V Çıkış için Akım 50 mA
Flash Hafıza 256 KB (Atmega2560) 8 KB kadarı bootloader tarafından
kullanılmaktadır
SRAM 8 KB (ATmega2560)
EEPROM 4 KB (ATmega2560)
Saat Hızı 16 MHz
Uzunluk 101.6 mm
Genişlik 53.4 mm
Ağırlık 36 g
Arduino’nun Programlanması:
Arduino Mega kartı Arduino bilgisayar programı (Arduino IDE) ile programlanır.
Programda Tools > Board sekmesi altında Arduino Mega'yı seçip programlamaya
başlayabilirsiniz. Ayrıntılı bilgi için referans ve temel fonksiyonlar sayfasını
inceleyebilirsiniz. Arduino Mega üzerindeki Atmega2560 üzerine bootloader denilen özel
bir yazılım yüklü gelir. Bu sayede kartı programlarken ekstra bir programlayıcı
kullanmanıza gerek yoktur.Haberleşme orjinal STK500 protokolü ile sağlanır.
Bootloader yazılımı bypass edilerek kart doğrudan mikrodenetleyicinin ICSP
header'i üzerinden ISP programlayıcı ile programlanabilir (Referans).
Bootloader yazılımı gibi Atmega16u2 içerisindeki kaynak yazılımda açık
kaynaklıdır. Bu yazılıma da DFU bootloader adı verilir. Atmel's FLIP software (Windows)
veya DFU programmer (Mac OS X and Linux) kullanılarak bu yazılım yeniden
yüklenebilir. Veya Atmega2560'da olduğu gibi 16u2'de ISP programlayıcı ile
programlanabilir. Gerek Atmega2560 gerekse 16u2 içerisindeki yazılımlar her zaman en
güncel hali ile gönderilir. O yüzden mecbur kalmadıkça bu yazılımları değiştirmenize
gerek yoktur.
Özellikleri:
1.2.3. DC MOTOR
Arduino Motor Sürücü Shield, Arduino üzerine takılarak 4 DC motoru veya 2 step
motoru (unipolar veya bipolar) bunlara ek olarakda 2 servo motoru kontrol etmenize imkan
sağlayan bir karttır. Kart üzerinde 2 adet L293D motor sürücü entegresi mevcuttur. Yani
0.6A 4 ayrı DC motor veya 0.6A 2 ayrı step motor sürülebilir. Motorların hız ve yönlerini
birbirinden bağımsız olarak kontrol edebilirsiniz. Motor kontrolleri AFMotor Kütüphanesi
ile yapılır.
Özellikleri :
Giriş Voltajı:11,1V
1050mAh
25C (50C de patlamaya sebep olur)
Ağırlığı 88gr
Boyutları: 51x29x27mm
Hücreli JST ve Balancer Şarj Soketi Mevcuttur.
6
2. YAPILAN ÇALIŞMALAR
2.1.DONANIM
Donanımsal anlamda, daha uygun bir şasi yapmak için uğraşlarımız oldu. Özellikle
dengenin korunması asıl amacımız olduğundan dengeli bir donanım yapmak öncelikli
hedefimizdi. Bunu için kotrplak kullanmayı tercih ettik. Ve bunu 3 katlı yapmayı uygun
gördük. Bunlardan ilkinde pil, ikincisinde ise Arduino, motor sürücüsü ve sensör yer aldı.
En üst kat ise boş kaldı. 4 civata ile bu sistemi ayakta tutmayı sağladık diyebiliriz. Aşağıda
şasinin son halini görebiliriz.
2.2. YAZILIM
"PID" Oransal İntegral Türev için kullanılan bir kısaltmadır. Adından da anlaşılacağı gibi,
bu terimler hataya uygulanan üç temel matematiksel fonksiyonu açıklamaktır. PID
kontrolörün ana görevi ne olursa olsun hatayı en aza indirmektir. Bir girdiyi alır,
amaçlanan davranış sapmasını hesaplar ve amaçlanan davranışı sapmanın minimize ve
daha yüksek doğruluk elde edilir ki buna göre çıkışını ayarlar.
Mpu6050 ivme sensörü ile arduino bağlantısını yapabilmek için aşağıdaki kodlar
yazıldı. Ve bu sayede sensörden gelen veriler arduino programlama arayüzünün serial print
kısmında gözlendi.
void setup() {
Wire.begin();
Serial.begin(38400);
Serial.println("I2C cihazlar başlatılıyor...");
accelgyro.initialize();
Serial.println("Test cihazı bağlantıları...");
Serial.println(accelgyro.testConnection() ? "MPU6050 bağlantı başarılı" :
"MPU6050 bağlantısı başarısız");
}
void loop() {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // ivme ve gyro değerlerini
okuma
Motor sürücü devresi olarak L293D Motor süücü shield kullanılmıştı. Arduino ile
bu devreye bağlı motorları kullanmak için AFMotor kütüphanesi kullanıldı. Bir Dc
motorun kontrolü için aşağıdaki kodlar yazıldı.
#include <AFMotor.h>
AF_DCMotor motor(4);
void setup() {
void loop() {
uint8_t i;
3. ÖNERİLER
Bu sistem için biz PID Algoritma kullandık fakat, yapay sinir ağları kulanılarak
daha etkili bir sistem oluşturulabilirirdi. Yapay sinir ağlarından kısaca bahsetmek
gerekirse;
YSA; birbiriyle akson bağlantılarıyla haberleşen nöron (sinir hücresi) birimlerinin
oluşturduğu gerçek sinir sistemlerinin soyut olarak simule edilmiş özel bir halidir.
YSA, kendi kendini örgütleyebilmesi ve adaptif yapısı nedeniyle, geleneksel paralel
işleme tekniklerinden kullanım kolaylığı ve hataları tolere edebilme yönleriyle
ayrılmaktadır. Sinir ağlarının temel modeli ilk olarak 1943 yılında McCulloch ve Pitts
tarafından, sinir sistemi aktivitesinin bilgisayar bilimi yaklaşımıyla modellenmesiyle
gerçekleştirilmiştir. McCulloch ve Pitts’in modeline göre “nöron” ikili sayısal sisteme
sahip bir cihazdır ve herbir nöronun kendi eşik değerine sahip olması nedeniyle, basit
eşik mantığına (threshold logic) göre çalışmaktadır. D. O. Hebb, 1947’de yayınlanan
“Davranışın Örgütlenmesi” (Organisation of Behavior) isimli çalışmasında; nöronların,
kendi kendini örgütleyebilmeleri özellikleri sayesinde uygun biçimde birbirleriyle
bağlantılar oluşturduklarını; nöronların ve aralarındaki bağlantıların, canlının öğrenme
sürecine bağlı olarak sürekli bir biçimde değiştiğini yada yenilendiğini ileri sürmüştür.
YSA’ nın hesaplama ve bilgi işleme gücünü, paralel dağılmış yapısından,
öğrenebilme ve genelleme yeteneğinden aldığı söylenebilir. Genelleme, eğitim ya da
öğrenme sürecinde karşılaşılmayan girişler için de YSA’ nın uygun tepkileri üretmesi
olarak tanımlanır. Bu üstün özellikleri, YSA’ nın karmaşık problemleri çözebilme
yeteneğini gösterir.
Robot denge sisteminde ise YSA kullanırken Yapay sinir ağına girdi olarak robotun
konumu, hızı ve ivmesi verilebilir ve hata ile geri beslemeli bir ağ oluşturulabilir. Bu
sayede daha kararlı ve şartlara göre öğrenebilen bir robot elde edilebilir.
Ayrıca bir diğer konu ise donanımla ilgili. Biz donanımı farklı parçalar bularak ve
onları elimizde şekillendirerek yapmaya çalıştık. Bunun yerine 3D yazıcı kullanarak
tam dengeli bir şasi yapabilirdik. Üç boyutlu yazıcı teknolojisi, bir çok farklı
malzemeyi kullanarak üç boyut modeli katmanlarına ayırıp, tasarlanan modeli gerçek
bir ürün olarak ortaya çıkarır. Üç boyutlu bilgisayar çizimleriyle ya da internetten
indirilen 3D yazıcı programlarla çıktı almak mümkün. Yani tasarladığınız, 3D yazıcı
sayesinde dakikalar içinde ulaşabiliyorsunuz. Bilgisayarda şasiyi tam hesaplamalarla,
örneğin Autodesk Inventor kullanarak tasarlayabilir ve kusursuz elde edebilirdik.
İmkanların elvermemesi bu opsiyonu yapamamamıza sebep olmuştu.
10
4. KAYNAKLAR
1. https://www.arduino.cc/
2. http://arduinoturkiye.com/
3. https://learn.adafruit.com/adafruit-motor-shield/using-dc-motors
4. https://www.arduino.cc/en/Guide/Windows
5. http://playground.arduino.cc/Code/PIDLibrary
6. http://playground.arduino.cc/Main/AdafruitMotorShield
7. https://blog.adafruit.com/2015/06/01/make-a-self-balancing-robot-with-arduino/
11
1. Projenizin tasarım boyutu nedir? (Yeni bir proje midir? Var olan bir projenin tekrarı
mıdır? Bir projenin parçası mıdır? Sizin tasarımınız proje toplamının yüzde olarak ne
kadarını oluşturmaktadır?)
PID Algoritmasını kullandık, ve aslında bu tam olarak formüle etmek olmadı, fakat
çözüm oldu diyebiliriz. Ayrıca tasarımın nasıl olacağına dair de denge hesaplamalarımız
oldu.
Robotik ve Elektrik, Elektronik Derslerinin bilgileri kullanıldı. Ayrıca kod kısmı için de
C yararlı oldu diyebiliriz.
5. Kullandığınız veya dikkate aldığınız gerçekçi kısıtlar nelerdir? Lütfen boşlukları uygun
yanıtlarla doldurunuz.
a) Ekonomi
b) Çevre sorunları:
Çalışmak için gerekli bir ortam tam anlamıyla yoktu. Yurtta kalmamızın bu konuda
dezavantajları olduğu gibi kullanılabilecek laboratuvar alanları da çok kısıtlıydı.
c) Sürdürülebilirlik:
Proje için sürdürülebilirlik bir sorun teşkil etmiyor. Gerçekten çok geniş bir kullanım
alanı oluşturabilir ve geliştirilebilir. Aslında a ve b seçenekleri bu konuda bize engel
oldu.
d) Üretilebilirlik:
Projenin üretilebilirliği vardır. Özellikle insan taşıma konusunda geliştirilip seri üretime
geçilerek bir piyasa oluşturulabilir. Zaten bunu yapan şirketler var. Fakat bizim için bu
bir kısıtlamaydı.
e) Etik:
f) Sağlık:
İnsanlara hareket esnekliği sağlaması sağlık açısından yararlı olabilir. Engelli insanlar
için de bir avantaj oluşturabilir. Fakat günümüz koşullarının insanı giderek hareketsiz
bir hayata sürmesi süşünüldüğünde dezavantaj da olabilir.
g) Güvenlik:
Çok hızlı bir cihaz olmaması bu konuda güvenliği pozitif yönde etkiler. Fakat
oluşabilecek bazı kazalar ihtimaller dahilindedir.