Mikrodenetleyici etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Mikrodenetleyici etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

19 Ocak 2017 Perşembe

Robot Yapmak için Bilinmesi Gerekenler




Robot yapmak eskisine nazaran günümüzde çok daha kolaylaşmış bunun sonucunda birçok insan hobi olarak robot yapımına başlamıştır. Bu konuda ilk adımı atanlar için için nasıl bir yol izleyeceğinizi size anlatmaya çalışacağım. Bir hevesle başlayıp birkaç sorunla karşılaştıktan sonra hemen vazgeçecekseniz bir durup düşünün derim. Çünkü bu işler dışardan gözüktüğü gibi her aşaması tıkır tıkır gitmez. Yaparsınız olmaz. Hem de herkesin yaptığı gibi yapıyorum ama olmuyor dersiniz. Fıtık olmak cümlesi bünyenizde vücut bulur. Okuduğunuz makalelerde halbuki insanlar hiçbir sorun olmadan yapmışlardır. Arada ufacık öyle bir şeyi kaçırırsınız ki tek başınıza bulmanız birkaç gününüzü alabilir. Şevkini kırmak için yazmadım bunları tam aksine ne ile karşılaşacağınız birlin ki zırhlarınızı kuşanın sonra yolda yaralanıp düşmeyesiniz. Basit düzeylerde bile robot yapacak olsanız bu sorunları bir dönem illaki yaşarsınız. Bu işlemlere başladıktan birkaç uygulama içeresinde “Aynısını yaptım olmuyoooo” cümlesini muhakkak kuracaksınız. Hazırlıklı olun. Gelelim işin bilgi kısmına. Elektronik, programlama bilgileriniz başlangıç için olması gerekir. Biraz ilerleyip somut projeler ortaya koyduktan sonra mekanik kısma geçebilirsiniz. Peki, elektronik gibi bir deryadan nereden başlayacağız.

1.Temel elektronik elemanları muhakkak bilmeniz gerekir. Direnç ve çeşitleri, LED, diyot, transistorlar röleler.
2.Motor çeşitleri. DC motor çeşitlerini ağırlıkla ayrıntılı olarak nasıl çalıştığını bilmeniz gerekir. Aç ye sonra bakabilirsiniz.
3.Temel olarak devreleri deneyebileceğiniz bir deney tahtası da azım size breadbord nedir nasıl kullanılır.
4.Güç kaynakları konusunu üstün körü bakın gerilim nasıl küçültülür nasıl sabitlenir temel devrelerine göz atın hatta not alın muhakkak işinize yarayacak.

Elektronik kısımda bunları öğrendik peki şimdi programlamada yeniysek ne yapacağız.

1.Algoritma öğreneceğiz. Temel olarak Google de birçok örnek var çözümleri yapılıp pratikleşmeli.
2.Daha sonra herhangi bir programlama dili öğrenmeye başlamalı. Ama bunu nasıl seçeceği. Basic mi C mi Java mı?C birçok mikrodenetleyici tarafından desteklenen bir dildir. İhtiyaçlarını fazlasıyla karşılar. Bu dilden başlayabilirsiniz.

                Dilde öğrendik eee şimdi nasıl başlayacağız. Bu öğrendiğimizi maddeleri birleştirerek tek bir projeye dökecek ya da birleştirecek olan elemanı seçmeye kaldı iş. Robotların beyni olacak programlama kısmını yükleyerek robotu yöneteceğimiz parçayı seçmeye geldi sıra. Daha önce bunu üzerine bir yazı yazmıştım Pic mi Arduino mu? Bu yazımı okuyarak bu konuda fikir edinebilirsiniz.

                Eğer mikrodenetleyici kısmına karar verdiyseniz ilk hangi proje ile başlayacağınız önemli. Yavaş yavaş ısına ısına başlamak çok önemli. Gözünüz korkmasın ilk uygulamada.
  1.  Bir ledi yakıp söndürün.
  2. LED’in parlaklık kontrolünü yapın.
  3. Bir motoru çalıştırıp durdurun ve motor hız kontrolünü gerçekleştirin.
  4.  Bir rc servo motor ile konum kontrolünügerçekleştirin.
  5. Bir LCD ekrana yazı yazın.

Şimdilik benden bu kadar eğer söylediklerimi yaptıysanız ve başarılı olduysanız artık kendinize özgü projeler yapabilirsiniz. Ama öğrenme aşamasındakiler özgünlüğe çok takılmasa da olur başlangıç için yapılmış olanla devam edip daha sonra uzmanlaştıkça özgünlüğe geçebilirsiniz. Hadi hepinize kolay gelsin.
Devamını Oku

12 Ocak 2017 Perşembe

Arduino Joystick ile Servo Motor Kontrolü


                Piyasada bulunan joystick shield ile bunu projemiz çok kolay bir şekilde gerçekleştireceğiz.Ama isterseniz potansiyometreler ile siz bu  parçanın bir benzerini oluşturabilirsiniz.Sonuçta bu shieldin içerisinde x ve y eksenleri için için kullanılan iki tane pot var.Bunlar düzgün bir şekilde monte edilerek hazır bir şekilde bizlere sunulmuş.Ben kendim yapmak istiyorum diyorsanız potansiyometre ya da trimpotu kullanarak buna benzer ürünler oluşturabilirsiniz.Piyasada bu shieldin 10 TL gibi bir fiyatta olduğunu düşünürsek uğraşmaya değeceğini düşünmüyorum.Eksen kontrol kısmında ise iki tane servo motor kullanarak birini x dirğerini y ekseninde hareket etmesini sağlayacak şekilde pantiltler kullanabiliriz.Ya da siz sac veya tahtalar ile pantilt yapabilirsiniz.Yapmış olduğumuz proje daha önce servo motor kontrolü kısmında bahsetttiğimiz konuların üzerine inşa edilmiştir.Eğer yeni başlıyor ve meseleyi anlamaya çalışıyorsanız önce o konuya bakmanızı tavsiye ederim. Ayrıca buton kısmını kullanmadım isterseniz buton kısmında arduinonun bir dijital bacağına bağlayarak işlev ekleyebilirsiniz.

Joystick:


Josytick


Pan tilt:
 
Pan tilt



Devre Şeması:
Devre Şeması





Devre Programı:
#include <Servo.h>//Servo kütüphanesini kullanacağımız belirtiyor ve kütüphaneyi çağırıyoruz.
Servo xekseni;  // x ekseni için bir servo objesi oluşturuyoruz.
Servo yekseni; // y ekseni için bir servo objesi oluşturuyoruz.
int xeksenipin = 1;  // joystickin x ekseninin  bağlanacağı bacağı tutan değişkeni belirliyoruz.
int yeksenipin = 0;  //joystickin x ekseninin  bağlanacağı bacağı tutan değişkeni belirliyoruz.

int valx;    // servo motora bilgi gönderecek değişkeni tanımlıyoruz.
int valy; // servo motora bilgi gönderecek değişkeni tanımlıyoruz.
void setup() {
  xekseni.attach(5);  /* x ekseni servosunu 5 nolupine bağladık*/
    xekseni.attach(6);  /* y ekseni servosunu 6 nolupine bağladık*/

}
void loop() {
  valx = analogRead(xeksenipin);           /* potansiyometredeki değeri okuyoruz.(0-1023) arası değer gelecek*/
  valx = map(valx, 0, 1023, 0, 180);     // 0-1023 arası okuduğumuz değeri 0-180arası skala ediyoruz.
  xekseni.write(valx);   /*Skala ettiğimiz değeri servo motora gönderiyoruz.ve pozisyona gitmesini sağlıyoruz.*/

  valy = analogRead(yeksenipin);           /* potansiyometredeki değeri okuyoruz.(0-1023) arası değer gelecek*/
  valy = map(valy, 0, 1023, 0, 180);     // 0-1023 arası okuduğumuz değeri 0-180arası skala ediyoruz.
  yekseni.write(valy);   /*Skala ettiğimiz değeri servo motora gönderiyoruz.ve pozisyona gitmesini sağlıyoruz.*/
 
  delay(15);  // sevonun pozisyona gitmesi için belirli bir süre bekletiyoruz.

}
Devamını Oku

11 Ocak 2017 Çarşamba

Işık Seviye Ölçümü


Arduino ile daha önce sensör kullanımı ve bir çok proje yaptık.Şimdi ışık seviyesi ölçümü projemizde yine birlikteyiz.Önceki yapmış olduğumuz projelerden kod olarak pek fazla bir farkı olmayacak.Çeşitli elektronik dokunuşlarla ışık seviyesini ölçeceğiz ve istediğimiz göstergeler ile kullanıcıya yansıtacağız.Ben burada daha net anlaşılabilmesi için 16x2 LCD ekran kullanacağım sizler isteğinize göre led seviye göstergesi yada oled ekran vs. yapabileceğiniz herhangibir gösterge cihazı ile projenizi tamamlayabilirsiniz.Işık ölçme işlemini bu alanda kullanımmı en kolay olan LDR ile yapacağım.LDR nedir önce onu biraz anlatalım.LDR ışık ile ters orantılı olarak direnç değeri değişen devre elemanıdır.Işık şiddeti arttıkça direnç değeri azalan ışık şiddeti azaldıkça direnç değeri azalan bir elemandır.Biz buradan hareket ederek ortamdaki ışık oranını görüntüleyeceğiz.Öncelikle devremize kuralım.

Arduino İle Işık Seviye Kontrol Devresi


 Devrenin Programı: 

#include <LiquidCrystal.h>
// LiquidCrystal(rs, enable, d4, d5, d6, d7) ilk komutu kullanarak pin bağlantılarını belirliyoruz.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  int analogdeger;
void setup() {
  lcd.begin(16, 2); /* Kullandigimiz LCDnin sutun ve satir sayisini belirtmeliyiz */
  lcd.clear();
 }
void loop() {
  analogdeger=analogRead(A0);//Ao dan okuduğumuz LM35 değeri
   lcd.setCursor(3, 0); /* Imlecin yeri 0. satir 3. sutun olarak ayarlandi */
  lcd.print("Isik siddeti:"); /* Ekrana yazi yazalim */
  lcd.setCursor(5, 1); /*Imlecin yeri 1. satir 5. sutun olarak ayarlandi */
  lcd.print(analogdeger);/*analog olarak okuduğumuz değeri 2. satıra yazdırıyoruz.siz burada oran orantı kurarak % cinsinden değer de yazdırabilirsiniz.*/

}
Devamını Oku

3 Ocak 2017 Salı

Arduino ile Ledli Seviye Kontrol



Bu projemizde analog değerden okuduğumuz herhanbir değeri ledler ile seviye kontrol yaparak kullanıcıya bildireceğiz.Ben potansiyometre kullandım ama siz analog okuyabileceğiniz çeşitli sensörleri kullanabilirsiniz. Program gayet basit ana bloğunun çoğu if komutundan oluşuyor.Eğer if’i anladıysanız bu program için gerisi kolay.Hadi biraz da program üzerinden bakalım.

int yes1=7;//ledleri bağlayacağımız pinleri tanımlayıp isim veriyoruz.
int yes2=8;
int sari1=9;
int sari2=10;
int kir1=12;
int kir2=13;
int analog;//analog okuduğumuz değer için bir değişken tanımlıyoruz.

void setup() {
Serial.begin(9600);//seri haberleşme için başlangıç komutunu veriyoruz.
pinMode (yes1,OUTPUT);//Led pinlerini çıkış olarak tanımlıyoruz.
pinMode (yes2,OUTPUT);
pinMode (sari1,OUTPUT);
pinMode (sari2,OUTPUT);
pinMode (kir1,OUTPUT);
pinMode (kir2,OUTPUT);
}

void loop() {
analog=analogRead (A0);//A0 bağladığımız potansiyometrenin değerini okuyoruz.
delay(50);//İsteğe göre bekleme süresi istenirse hiç konulmayabilir.
if (analog==0)//eğer okunan değer 0 ise ledlerin hepsi sönsün.
 {
  digitalWrite (yes1,LOW);
  digitalWrite (yes2,LOW);

  digitalWrite (sari1,LOW);
  digitalWrite (sari2,LOW);

  digitalWrite (kir1,LOW);
  digitalWrite (kir2,LOW);
 }

if (0<analog && analog<=170)/*belirli aralıklarla sınama yapıp hangi ledin yanacağını belirliyoruz.*/
 {
  digitalWrite (yes1,HIGH);
  digitalWrite (yes2,LOW);
 
  digitalWrite (sari1,LOW);
  digitalWrite (sari2,LOW);
 
  digitalWrite (kir1,LOW);
  digitalWrite (kir2,LOW);
 }

if (171<=analog && analog<=340) /*belirli aralıklarla sınama yapıp hangi ledin yanacağını belirliyoruz.*/
 {
  digitalWrite (yes1,HIGH);
  digitalWrite (yes2,HIGH);
 
  digitalWrite (sari1,LOW);
  digitalWrite (sari2,LOW);
 
  digitalWrite (kir1,LOW);
  digitalWrite (kir2,LOW);
  }

if (341<=analog && analog<=510) /*belirli aralıklarla sınama yapıp hangi ledin yanacağını belirliyoruz.*/
 {
  digitalWrite (yes1,HIGH);
  digitalWrite (yes2,HIGH);
 
  digitalWrite (sari1,HIGH);
  digitalWrite (sari2,LOW);
 
  digitalWrite (kir1,LOW);
  digitalWrite (kir2,LOW);
 }

if (511<=analog && analog<=680)/*belirli aralıklarla sınama yapıp hangi ledin yanacağını belirliyoruz.*/
 {
    digitalWrite (yes1,HIGH);
  digitalWrite (yes2,HIGH);
 
  digitalWrite (sari1,HIGH);
  digitalWrite (sari2,HIGH);
 
  digitalWrite (kir1,LOW);
  digitalWrite (kir2,LOW);
 }


if (681<=analog && analog<=950) /*belirli aralıklarla sınama yapıp hangi ledin yanacağını belirliyoruz.*/
 {
   digitalWrite (yes1,HIGH);
  digitalWrite (yes2,HIGH);
 
  digitalWrite (sari1,HIGH);
  digitalWrite (sari2,HIGH);
 
  digitalWrite (kir1,HIGH);
  digitalWrite (kir2,LOW);
 }

if (951<=analog && analog<=1023) /*belirli aralıklarla sınama yapıp hangi ledin yanacağını belirliyoruz.*/
 {
   digitalWrite (yes1,HIGH);
  digitalWrite (yes2,HIGH);
 
  digitalWrite (sari1,HIGH);
  digitalWrite (sari2,HIGH);
 
  digitalWrite (kir1,HIGH);
  digitalWrite (kir2,HIGH);
 }
Serial.println (analog);/*okuduğumuz değeri ekran görerek programın doğru çalıştığını görebiliriz.*/
}
İşte Devrenin Bağlantı Şeması:

Arduino ile Ledli Seviye Kontrol

Devrenin Çalışması:



Devamını Oku

27 Aralık 2016 Salı

Arduino, LM35 ve LCD Ekran ile Sıcaklık Ölçümü



Şimdiki projemizde lm35 i kullanarak lcd ekrana sıcaklı değerini yazdıracağız.Daha önceki derslerimizde LCd ekrana yazı yazdırmayı öğrenmiştik o konuyu geçtiğimiz varsayıyorum.Eğer bakmadıysanız buradan bakabilirsiniz.Bizim için önemli olan LM35 sensorunden gelen analog değeri okuyarak sıcaklık ile orantılamak olacak.Bir sensorden veri okuyup yorumlayacaksanız öne sensorun katalog bilgilerini gözden geçirmeniz gerekecek. Lm35 in datasheetinden sensorun sıcaklık ile çıkışını şu şekilde vermişler.




Görüldüğü gibi 1500 mV ta 150°C olduğunu söylüyor.Buradan oran orantı kurarak işlem yapacağız.Bizim analogRead komutu ile okuduğunuz değer 0-5V arasını 0-1023 arası olarak okuyor.
1500 mV hangi değere denk geldiğini bulmalıyız ki derce ile analog okunan değer arasında bağıntı kuralım.

                 5000mV            1023
                 1500mV               x
                ______________
                x = (1500*1023) /5 000= 306,9

Yani 306,9 değeri olarak verilmiş ama biz bunu integer olarak okuyacağımız için 307 değeri alalım ve diyelim ki 307 değeri geldiğinde ortam 150°C ye gelmiş demektir.Şimdi bir orantı daha kurarak işlemi tamamlıyoruz.

                 150°C           307
                 Sıcaklık         analogRead
                ______________
    *            Sıcaklık = (150*analogRead) /307

İşte yıldızlı orantı ile artık sıcaklık değerimiz bulabiliriz.
Şimdi devreyi kurup programı yükleyip çalıştırması kaldı.Bu arada unutmadan LM35 in bacak bağlantılarına datasheetten bakmak gerekir ki pin bağlantısını doğru yapalım.




Program:
#include <LiquidCrystal.h>
// LiquidCrystal(rs, enable, d4, d5, d6, d7) ilk komutu kullanarak pin bağlantılarını belirliyoruz.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 float sicaklik;
  int analogdeger;
void setup() {
  lcd.begin(16, 2); /* Kullandigimiz LCDnin sutun ve satir sayisini belirtmeliyiz */
  lcd.clear();
 }
void loop() {

  analogdeger=analogRead(A0);//Ao dan okuduğumuz LM35 değeri
  sicaklik = (150*analogdeger)/306;//formülümüzü yazdık
 
  lcd.setCursor(3, 0); /* Imlecin yeri 1. satir 3. sutun olarak ayarlandi */
  lcd.print("Sicaklik:"); /* Ekrana yazi yazalim */
  lcd.setCursor(5, 1); /* Imlecin yeri 2. satir 5. sutun olarak ayarlandi */
  lcd.print(sicaklik);//sicaklik değeri yazdırıldı.
}


Devre Şeması:


İşlem gayet basit kolay gelsin.





Devamını Oku

26 Aralık 2016 Pazartesi

Arduinoda LCD Ekran



Lcd ekran dediğimiz şey her bir karakteri 5x7 lik karakter gösterimlerinden oluşan belli satır ve sütun sayılarından oluşan ekran türü. En klasik olarak kullanılan 16x2 dir.Yani 16 satır 2 sütundan oluşur. Bunların 16x4 gibi farklı versiyonları mevcuttur. Biz 16x2 lik LCD ekran üzerinden gideceğiz. Ama diğerlerinide arduio ile gösterdiğimiz yolla rahatlıkla programlayabilirsiniz. Genelde 16 tane pini vardır. Modele göre farklılık gösterebilir.+,- besleme pini kontrast ayarı olan VEE yada V0 olarak isimlendirilen pin.Bu pine potansiyometrenin ayar bacağını bağlamanız gerekir.R/W,Enable,RS pinleri.8 adet data pini ve arka ışıklandırma için kullanılan ledlerin +,- beleme pinleri. Arduinoda LCD ekran programı için arduinonun en avantajlı yönlerinden biri olan kütüphane kullanıyoruz.O kütüphane LiquidCrystal kütüphanesi. Bu kütüphaneyi kullanmayı bildiğiniz taktirde ve doğru bağlantıları yaparsanız kolaylıkla LCD ekranı kontrol edersiniz. Şimdi bu kütüphanenin komutlarını nasıl kullanacağımızdan bahsedelim.

#include <LiquidCrystal.h> öncelikle kütüphaneyi programa ekleyerek başlamalıyız.

LiquidCrystal(rs, enable, d4, d5, d6, d7);
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7);
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7);
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);

LiquidCrystal(); Bu kütüphanenin bacak bağlantı şeması gösterimi gibidir yukarıda verilenlerin herhangibirini kullanlirsiniz.Fakat temel olarak ne kadar az bacak kullanırsanız o kadar size diğer bacakları kullanma imkanı kalır. Data bacaklarına arduinodan bağlantı yapmayacaksanız boş kalabilir rw ise muhakkak toprağa verilmelidir. Bu durumda ilk yazan komutu kullanabilirsiniz. Bana pin lazım değil ben en sonundakini kullanmak istiyorum derseniz size kalmış bir durum.

lcd.begin(sütun,satır);  LCD ekranın kaç tarı ve sütundan oluştuğunu buran belirtiniz.

lcd.print(); LCD ekrana text halinde gönderilecekse tırnak içinde değilse değişken ismini yazarak lcd ekrana bilgi yolladığımız komut.Ayrıca değişken yazdırılacaksa ve sayı tabanı belirlenmek isteniyorsa binariy için BIN, ondalık için DEC , sekizlik için OCT, onaltılık için HEX ifadeleri virgülle belirtilit ayen şöyle : lcd.print(degisken,HEX);

lcd.setCursor(sütun,satır); Cursorun hangi satır ve sütunda olacağını belirler.
lcd.clear(); ekranda temizler

Şimdi örnek bir program yazalım.

#include <LiquidCrystal.h>
// LiquidCrystal(rs, enable, d4, d5, d6, d7) ilk komutu kullanarak pin bağlantılarını belirliyoruz.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
Devre şeması;
 - LCD'nin RS pini -> Arduino'nun 12. pini
 - LCD'nin Enable (E) pini -> Arduino'nun 11. pini
 - LCD'nin D4 pini -> Arduino'nun 5. pini
 - LCD'nin D5 pini -> Arduino'nun 4. pini
 - LCD'nin D6 pini -> Arduino'nun 3. pini
 - LCD'nin D7 pini -> Arduino'nun 2. pini

 - LCD'nin R/W pini -> toprağa
 - LCD'nin R0 pini -> potansiyometre çıkışına
 - LCD VDD -> Arduino 5 Voltuna
 - LCD VSS -> toprağa
*/
void setup() {
  lcd.begin(16, 2); /* Kullandigimiz LCDnin sütun ve satir sayısını belirtmeliyiz */
}
void loop() {
  lcd.setCursor(0, 0); /* İmlecin yeri 0. satir 0. sütun olarak ayarlandı */
  lcd.print("OtomasyonBil"); /* Ekrana yazı yazalım */

}

Devre Şeması:

Devamını Oku

23 Aralık 2016 Cuma

Arduino İle Neler yapılabilir?




Bu işe yani mi merak saldınız? Yoksa başladınız da acaba ne yapabilirim mi diyorsunuz. İşte bu yazı sizin için. Arduino içerisine program yükleyerek sizin gibi düşünmenizi sağlayabildiğiniz sizin gibi çözüm üretmeyi gerçekleştirebileceğiniz önemli bir denetleyici. Özellikle başlangıç aşamasında kendi kendine düşünen sistemler yapmayı isteyenler için diğer rakiplerine nazaran hem programlamada hemde elektronik kısmında kolaylıklar içerir.

 Etrafınızda gördüğünüz elektronik cihazlardan başlayalım. Avm’lerde açılır kapanır kapılardan hepiniz geçmiştir. İşte orda cismin yaklaşıp yaklaşmadığını sensörle algılayıp kapanıp açılması ve kapanması gereken zamanı belirleyebilirsiniz. Evinizde, iş yerinizde size has bir bölüm olması ve anahtar kullanmadan kartlı geçiş mi yapmak istiyorsunuz. Merak etmeyin arduino ile bunları yapmak çok basit. Çizgi izleyen robot, sumo, mini sumo vb. birçok yarışmalara katılabileceğiniz robotların hepsini yapabilirsiniz.

Cep telefonunuzla evinizdeki herhangi bir elektronik cihazı açıp kapatmak mı istiyorsunuz. Merak etmeyin arduino ile yapabilrsiniz.Akıllı ev mi tasarlayacaksınız. Sıcaklık kaç derece rüzgar var mı varsa hangi yöne doğru esiyor, pencereleriniz açık mı kapalımı hatta ütünün fişini çektiniz mi çekmediniz mi tek bir ekrandan görmek mi istiyorsunuz arduino ile yeteneklerinizi ve bilginizi geliştirerek bunların hepsini yapabilirsiniz.


Yeterki çalışın öğrenin azmedin. Gerisi inanın çok kolay. Örnekleri çoğaltmak mümkün. Üretmek isteyen bir insanın karşıdan hiçbir zorluk duramaz. Azmetmek ve çalışmak bu işte çok önemli. Ne dersiniz yapabilir misiniz? Bi deneyin bakalım.
Devamını Oku