Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Gönderen Konu: 7. Arduino ile stop lambalarının kontrolü  (Okunma sayısı 24445 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

08 Ekim 2015, 23:52:48
<iframe width="640" height="385" src="//www.youtube.com/embed/AI_ZCm0B13Q?fs=1&start=" frameborder="0" allowfullscreen></iframe>













Bu proje Akçaabat İMKB Anadolu Lisesi Coğrafya Dersi Öğretmeni Ömer AYGÜN ve öğrencileri tarafından düşünülmüş ve uygulamaya konulmuştur. Projeye Trabzon ve Mesleki Teknik Anadolu Lisesi Elektronik Öğretmeni Hasan ERTÜRK teknik destek vermiş ve sistemin prototip maketi hazırlanmıştır.

Araç kullanırken fren yapmak gerektiğinde durumu algılayıp ayağımızı gazdan çekip frene basana kadar 0,7 saniye kadar zaman geçer. Bu durumda saatte 100 km ile giden bir aracı kullanan bir sürücü fren yapana kadar araç yaklaşık 20 metre daha yol alır. O halde aracın 20 metre önünde bir engel varsa daha frene basmaya bile fırsat kalmadan araç engele çarpacaktır. Yani burada saniyeler hatta milisaniyeler bile çok önem arz etmekte. 
Burada ortaya çıkan bir sorun var. O da şu:

Vites değişirken gazdan ayağımızı çektiğimizde stop lambalarının yanmaması gerek. Bu nedenle tasarım yaparken debriyaj pedalının pozisyonunu da dikkate almak gerekecek.

Şimdi gelelim konumuza. Bu gibi durumlarda arkadan gelen araçlar bizim fren yaptığımızı aracımızın stop lambalarının yanmasından fark etmekte. Özellikle ani duruşlarda arkadan gelen araç sürücülerini daha çabuk uyarabilmek için ayağımızı gazdan çektiğimiz anda daha frene henüz basamamışken uyarabilirsek hem onlar hem de bizim için çok önemli olabilecek milisaniyeleri kazanmış oluruz.

Sistemimiz ayağımızı frenden çektiğimiz anda stop lambalarının yanmasını sağlayacak. Şimdi tasarım aşamasına geçelim. Öncelikle aşağıdaki tabloda görüldüğü gibi debriyaj, fren ve gaz pedallarının alması muhtemel 8 senaryo için stop lambası, tekerlek ve fren tertibatının göstereceği tepkileri belirleyelim.



Kontrol devremizi arduino ile yapacağız. Şimdi sıra geldi yukarıdaki senaryolara uygun olarak ardiuno programını yazmaya.

Arduino kodlarımız:
int gaz_pedali=A5;                    // A5 GİRİŞİNE FREN PEDALI İSMİ VERİLDİ
int fren_pedali=A0;                   // A0 GİRİŞİNE FREN PEDALI ADI VERİLDİ
int debriyaj=A4;                      // A4 GİRİŞİNE DEBRİYAJ ADI VERİLDİ
int stop_lambasi=0;                   // D0 ÇIKIŞINA STOP LAMBASI ADI VERİLDİ
int motor=5;                          // MOTORA DİJİTAL 5 PİNİNDEN ENERJİ VERİLECEK
int hiz;                              // HIZ TANIMLAMASI
int fren_pedali_durum=0;
#include <Servo.h>                    // SERVO KÜTÜPHANESİ EKLENDİ
const int pot=A0;                     // SERVO KONTROL PİNİ
Servo tekerlek;                       // SERVONUN ADI
int potdurum=0;     
int pos = 0;    

void setup() 
{
 pinMode(fren_pedali, INPUT);         // A0 PİNİ GİRİŞ YAPILDI
 pinMode(gaz_pedali, INPUT);          // A5 PİNİ GİRİŞ YAPILDI 
 pinMode(debriyaj, INPUT);            // A4 PİNİ GİRİŞ YAPILDI 
 pinMode(stop_lambasi, OUTPUT);       // D0 PİNİ ÇIKIŞ YAPILDI
 tekerlek.attach(13);                 // SERVONUN BAĞLANACAĞI PİN
}

void loop() 
{
  // MOTOR HIZI AYARI BURADA BAŞLADI
  hiz= analogRead(gaz_pedali);        // GAZ PEDALINDAKİ VOLTAJI OKU
  hiz= map(hiz, 0, 550, 255, 0);      // OKUNAN 5 VOLT İLE 0 VOLT ARASINDAKİ VOLTAJI HIZA DÖNÜŞTÜR 
  analogWrite(motor, hiz);            // HESAPLANAN HIZI MOTORA AKTAR
  delay(10);                          // 10 ms BEKLE
  // MOTOR HIZI AYARI BURADA BİTTİ

  // STOP LAMBASI PEDALI KOMUTLARI BURADA BAŞLADI
  fren_pedali_durum= digitalRead(A0);  // A0 GİRİŞİNDEKİ LOJİK SEVİYEYİ OKU
  digitalWrite(0, !fren_pedali_durum);  // OKUNAN LOJİK SEVİYENİN TERSİNİ D0 ÇIKIŞINA AKTAR (DEVRE ONA GÖRE DİZAYN EDİLDİ)
  // STOP LAMBASI PEDALI KOMUTLARI BURADA BİTTİ
  
  // DEBRİYAJ, GAZ VE FREN PEDALLARI BASILI DEĞİLSE FREN LAMBASINI FLASH YAP BURADA BAŞLADI
   if (digitalRead(fren_pedali) == HIGH  && digitalRead(gaz_pedali) == HIGH  && digitalRead(debriyaj) == HIGH  )  
   { 
    digitalWrite(0, HIGH); 
    delay(20);  
    digitalWrite(0, LOW);
    delay(20);  
   }
   // DEBRİYAJ, GAZ VE FREN FREN PEDALLARI BASILI DEĞİLSE FREN LAMBASINI FLASH YAP BURADA BİTTİ


  // FREN TERTİBATI KODLARI BAŞLADI
  potdurum=analogRead(pot);
  pos= map(potdurum,1023,0,180,55);     // FREN PEDALINDAN DEĞER OKUYUP DÖNME AÇISINI ORANLADIK
  { 
    tekerlek.write(pos);              // YUKARIDA ORANLADIĞIMIZ DEĞERİ SERVOYA GÖNDERDİK
  } 
  // FREN TERTİBATI KODLARI BİTTİ
}


Projeye ait dosyaları konu ekinden indirebilirsiniz.

Proje istek halinde her marka vemodel araca 1000 TL ücretle tasarımcı tarafından uygulanmaktadır.
« Son Düzenleme: 30 Eylül 2016, 22:57:14 Gönderen: fatek »


iletişim: 0542 343 09 15