dominoFiber     domiRobot     Forum


Projeler - Arduino İle İleri Geri Yıldız Üçgen Çalıştırma

Arduino İle İleri Geri Yıldız Üçgen Çalıştırma
Bu projemizde arduino ile 3 fazlı asenkron motoru ileri geri yıldız üçgen çalıştırmayı öğreneceğiz.

Senaryo:
Bir adet 3 fazlı asenkron motor arduino ile ileri geri yıldız üçgen çalıştırılacak.
 
Sol butonuna basıldığında motor 0 ila 30 saniye arasında istediğimiz bir süre sola doğru yıldız bağlantıda yol alacak ve ayarlanan sürenin sonunda üçgen bağlantıya geçip durdurma butonuna basılana dek çalışmaya devam edecek.

Sağ butonuna basıldığında motor 0 ila 30 saniye arasında istediğimiz bir süre sağa doğru yıldız bağlantıda yol alacak ve ayarlanan sürenin sonunda üçgen bağlantıya geçip durdurma butonuna basılana dek çalışmaya devam edecek.

Her hangi bir anda durdurma butonuna basılırsa motor duracak.

Motor her hangi bir yöne dönerken diğer yöne döndürmek için öncelikle motorun durdurulması ve sonrasında diğer yöne döndürülmesi esastır. Motor dönerken sol ya da sağa dönme butonlarına basılması durumunda butonlar işlev görmeyecek.

Sol ya da sağa dönüş başlatma butonu ile beraber durdurma butonuna da basılması durumunda devre stop aktif olarak çalışacaktır.

Motorun kalkınma anında yıldız çalışacağı süre bir potansiyometre ile ayarlanabilir olacak ve ayarlanan busüre lcd ekranda görüntülenecektir.

Motor sola ya da sağa dönerken hangi yöne hangi bağlantıda dönmekte olduğu lcd ekranda yazılı ve görsel olarak görüntülenecektir.

Evet senaryomuz bu şekilde. İhtiyaç halinde güç devresinde değişiklik yapılmadan senaryoda değişiklik yapılabilir.

Amaç
Arduino ile 3 fazlı asenkron motoru ileri geri yıldız üçgen çalıştırma becerisi kazanmak.

Seviye
Orta seviye

<a href="http://www.youtube.com/watch?v=ALUBpLb8ems" target="_blank">http://www.youtube.com/watch?v=ALUBpLb8ems</a>
Video 1: Arduino ile yıldız üçgen çalıştırma

<a href="http://www.youtube.com/watch?v=1Xx6yjHeo2A" target="_blank">http://www.youtube.com/watch?v=1Xx6yjHeo2A</a>
Video 2: ISIS simülasyonu

Fotoğraf 1: Üçgen çalıştırma sola dönüş

Şema 1: Fritzing devre şeması

Şema 2: ISIS çizimi (LCD hariç)

Şema 3: Güç ve kumanda devresinin birleştirilmiş hali

Tablo 1: Nokia 5110 Arduino bağlantısı​

Yıldız üçgen arduino kodları
Kod: [Seç]
// GİRİŞLER
int ileri_butonu=A1; // A1 girişine ileri_butonu adı verildi. Bu girişe ileri başlatma butonu bağlanacak.
int geri_butonu=A2; // A2 girişine geri_butonu adı verildi. Bu girişe ileri geri butonu bağlanacak.
int durdurma_butonu=2; // D2 girişine durdur_butonu adı verildi. Bu girişe ileri durdurma butonu bağlanacak.
int potansiyometrePin = A0; // A0 GİRİŞİNE YILDIZ BAĞLANTI ÇALIŞMA SÜRESİNİ AYARLAMAK İÇİN POTANSİYOMETRE BAĞLANACAK
int sensorValue = 0;
// GİRİŞLER BİTTİ

// ÇIKIŞLAR
int ileri_kontaktoru=3; // D3 çıkışına ileri_kontaktoru adı verildi. Bu çıkışa ileri yön kontaktörünü süren röle bağlanacak.
int geri_kontaktoru=4; // D4 çıkışına geri_kontaktoru adı verildi. Bu çıkışa geri yön kontaktörünü süren röle bağlanacak.
int yildiz_kontaktoru=5; // D5 çıkışına yildiz_kontaktoru adı verildi. Bu çıkışa yıldız bağlantı kontaktörünü süren röle bağlanacak.
int ucgen_kontaktoru=6; // D6 çıkışına ucgen_kontaktoru adı verildi. Bu çıkışa üçgen bağlantı kontaktörünü süren röle bağlanacak.
// ÇIKIŞLAR BİTTİ

// GÖRSEL KODLARI BURADA BAŞLADI
#include <LCD5110_Basic.h> // LCD kütüphanesi eklendi
extern uint8_t SmallFont[];
LCD5110 myGLCD(8,9,10,11,12); // CD pinlerinin hangi Arduino pinlerine bağlı olduğunu belirtiyoruz
extern uint8_t sol[]; // Sol ikon projeye dahil edildi
extern uint8_t sag[]; // Sağ ikon projeye dahil edildi
extern uint8_t yildiz[]; // Yıldız ikon projeye dahil edildi
extern uint8_t ucgen[]; // Üçgen ikon projeye dahil edildi
extern uint8_t saat[]; // Saat ikon projeye dahil edildi
// GÖRSEL KODLARI BURADA BİTTİ

void setup()
{
pinMode(ileri_butonu, INPUT); // A1 PİNİ GİRİŞ YAPILDI
pinMode(geri_butonu, INPUT); // A2 PİNİ GİRİŞ YAPILDI
pinMode(durdurma_butonu, INPUT); // A0 PİNİ GİRİŞ YAPILDI
pinMode(ileri_kontaktoru, OUTPUT); // D1 PİNİ ÇIKIŞ YAPILDI
pinMode(geri_kontaktoru, OUTPUT); // D2 PİNİ ÇIKIŞ YAPILDI
pinMode(yildiz_kontaktoru, OUTPUT); // D3 PİNİ ÇIKIŞ YAPILDI
pinMode(ucgen_kontaktoru, OUTPUT); // D4 PİNİ ÇIKIŞ YAPILDI
pinMode(durdurma_butonu, INPUT); // D2 PİNİ GİRİŞ YAPILDI
attachInterrupt(0, pasif, RISING); // 2 NOLU PİN LOJİK 1 İSE PASİF KOMUTLARINA GİT
pinMode(7, OUTPUT); // LCD ekranın arkaplan aydınlatmasına giden pini çıkış olarak ayarlıyoruz
digitalWrite(7,HIGH); // Ekrana aydınlatıldı
myGLCD.InitLCD(); // Ekranı başlatıldı
myGLCD.setContrast(70); //0 ila 127 arası bir değer verilebilir
}

void pasif()
{
// TÜM ÇIKIŞLARI PASİF YAP BAŞLADI
digitalWrite(ileri_kontaktoru, LOW); // İLERİ YÖN KONTAKTÖRÜNÜN ENERJİSİ KESİLDİ
digitalWrite(geri_kontaktoru, LOW); // GERİ YÖN KONTAKTÖRÜNÜN ENERJİSİ KESİLDİ
digitalWrite(yildiz_kontaktoru, LOW); // YILDIZ KONTAKTÖRÜNÜN ENERJİSİ KESİLDİ
digitalWrite(ucgen_kontaktoru, LOW);  // ÜÇGEN YÖN KONTAKTÖRÜNÜN ENERJİSİ KESİLDİ
asm volatile ("jmp 0"); // ARDUINO RESETLENDİ
// TÜM ÇIKIŞLARI PASİF YAP BİTTİ
}

void loop()
{
    // YILDIZ ÇALIŞMA SÜRESİNİ EKRANDA GÖSTERME KODLARI BURADA BAŞLADI
    if (digitalRead(ileri_kontaktoru) == LOW && digitalRead(geri_kontaktoru) == LOW)
   {
    myGLCD.clrScr(); //Ekranı temizliyoruz.
    myGLCD.drawBitmap(0, 0, saat, 30, 32); // saat resmi çizildi.
    myGLCD.setFont(SmallFont);
    myGLCD.print("YILDIZ", RIGHT, 0);
    myGLCD.print("SURESI", RIGHT, 12);
    sensorValue=analogRead(A0);
    sensorValue=map(sensorValue,0,1023,0,30);
    extern uint8_t MediumNumbers[];
    myGLCD.setFont(MediumNumbers);
    myGLCD.printNumI(sensorValue, RIGHT, 20);   
    myGLCD.setFont(SmallFont);   
    myGLCD.print("SANIYE", RIGHT, 40);
    delay(75);
   }
   // YILDIZ ÇALIŞMA SÜRESİNİEKRANDA GÖSTERME KODLARI BURADA BİTTİ
   
   // İLERİ YÖN HAREKETİ BAŞLATMA KODLARI BAŞLADI
if (digitalRead(ileri_butonu) == HIGH  && digitalRead(durdurma_butonu) == LOW && digitalRead(geri_kontaktoru) == LOW && digitalRead(ileri_kontaktoru) == LOW)
    {
    //YILDIZ BAĞLANTI ÇALIŞMA KODLARI BURADA BAŞLADI
    myGLCD.clrScr(); //Ekranı temizliyoruz.
    myGLCD.drawBitmap(0, 0, sol, 24, 24); // sol resmi çizildi.
    myGLCD.drawBitmap(0, 24, yildiz, 24, 24); // yıldız resmi çizildi.
    myGLCD.setFont(SmallFont);
    myGLCD.print("SOLA DONUS", RIGHT, 12);
    myGLCD.print("YILDIZ", RIGHT, 36);
    digitalWrite(ileri_kontaktoru, HIGH);
    digitalWrite(geri_kontaktoru, LOW);
    digitalWrite(yildiz_kontaktoru, HIGH);
    digitalWrite(ucgen_kontaktoru, LOW);
    sensorValue = analogRead(potansiyometrePin); // POTANSİYOMETREDEKİ DEĞER OKUNDU
    delay(sensorValue * 30); // YILDIZ BAĞLANTI İÇİN ÇALIŞMA SÜRESİNİ POT İLE AYARLAYINIZ 0-30 SANİYE
    //YILDIZ BAĞLANTI ÇALIŞMA KODLARI BURADA BİTTİ

    //ÜÇGEN BAĞLANTI ÇALIŞMA KODLARI BURADA BAŞLADI
    myGLCD.clrScr(); //Ekranı temizliyoruz.
    myGLCD.drawBitmap(0, 0, sol, 24, 24); // sol resmi çizildi.
    myGLCD.drawBitmap(0, 24, ucgen, 24, 24); // ucgen resmi çizildi.
    myGLCD.setFont(SmallFont);
    myGLCD.print("SOLA DONUS", RIGHT, 12);
    myGLCD.print("UCGEN", RIGHT, 36);   
    digitalWrite(ileri_kontaktoru, HIGH);
    digitalWrite(geri_kontaktoru, LOW);
    digitalWrite(yildiz_kontaktoru, LOW);
    digitalWrite(ucgen_kontaktoru, HIGH);
    //ÜÇGEN BAĞLANTI ÇALIŞMA KODLARI BURADA BİTTİ
   }
   // İLERİ YÖN HAREKETİ BAŞLATMA KODLARI BİTTİ

   // GERİ YÖN HAREKETİ BAŞLATMA KODLARI BAŞLADI
if (digitalRead(geri_butonu) == HIGH  && digitalRead(durdurma_butonu) == LOW && digitalRead(ileri_kontaktoru) == LOW && digitalRead(geri_kontaktoru) == LOW)
   {
    //YILDIZ BAĞLANTI ÇALIŞMA KODLARI BURADA BAŞLADI
    myGLCD.clrScr(); //Ekranı temizliyoruz.
    myGLCD.drawBitmap(0, 0, sag, 24, 24); // sag resmi çizildi.
    myGLCD.drawBitmap(0, 24, yildiz, 24, 24); // yıldız resmi çizildi.
    myGLCD.setFont(SmallFont);
    myGLCD.print("SAGA DONUS", RIGHT, 12);
    myGLCD.print("YILDIZ", RIGHT, 36);   
    digitalWrite(ileri_kontaktoru, LOW);
    digitalWrite(geri_kontaktoru, HIGH);
    digitalWrite(yildiz_kontaktoru, HIGH);
    digitalWrite(ucgen_kontaktoru, LOW);
    sensorValue = analogRead(potansiyometrePin); // POTANSİYOMETREDEKİ DEĞER OKUNDU
    delay(sensorValue * 30); // YILDIZ BAĞLANTI İÇİN ÇALIŞMA SÜRESİNİ POT İLE AYARLAYINIZ 0-30 SANİYE
    //YILDIZ BAĞLANTI ÇALIŞMA KODLARI BURADA BİTTİ
   
    //ÜÇGEN BAĞLANTI ÇALIŞMA KODLARI BURADA BAŞLADI
    myGLCD.clrScr(); //Ekranı temizliyoruz.
    myGLCD.drawBitmap(0, 0, sag, 24, 24); // sağ resmi çizildi.
    myGLCD.drawBitmap(0, 24, ucgen, 24, 24); // ucgen resmi çizildi.
    myGLCD.setFont(SmallFont);
    myGLCD.print("SAGA DONUS", RIGHT, 12);
    myGLCD.print("UCGEN", RIGHT, 36);   
    digitalWrite(ileri_kontaktoru, LOW);
    digitalWrite(geri_kontaktoru, HIGH);
    digitalWrite(yildiz_kontaktoru, LOW);
    digitalWrite(ucgen_kontaktoru, HIGH);
    //ÜÇGEN BAĞLANTI ÇALIŞMA KODLARI BURADA BİTTİ
   }
   // GERİ YÖN HAREKETİ BAŞLATMA KODLARI BİTTİ
}

Saat ikonu arduino kodları
Kod: [Seç]
#include <avr/pgmspace.h>
const unsigned char saat [] PROGMEM={
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xFC, 0x3C, 0x3C, 0x3C,
0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, 0x00, 0x1F, 0x7F, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x3F, 0x1F,
0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
};

Sağ ikon arduino kodları
Kod: [Seç]
#include <avr/pgmspace.h>
const unsigned char sag [] PROGMEM={
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x83, 0xC7, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};

Sol ikon arduino kodları
Kod: [Seç]
#include <avr/pgmspace.h>
const unsigned char sol [] PROGMEM={
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0xC7, 0xC3, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};

Üçgen ikon arduino kodları
Kod: [Seç]
#include <avr/pgmspace.h>
const unsigned char ucgen [] PROGMEM={
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFC, 0xF0, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x60, 0x78, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x78, 0x60, 0x00,
};

Yıldız ikon arduino kodları
Kod: [Seç]
#include <avr/pgmspace.h>
const unsigned char yildiz [] PROGMEM={
0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x30, 0x78, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
0x78, 0x78, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0,
0xE0, 0xC0, 0x01, 0x01, 0x03, 0x01, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0x7E, 0x00,
0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F,
0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00,
};

Malzeme listesi

Hatırlatmalar ve olası problemler
Daha önce nokia 5110 kütüphanesini eklemeyenler arduino kodlamasını derlemeden önce nokia 5110 kütüphanesini eklemelidir. Nokia 5110 kütüphanesi download listesinde mevcuttur.

Download
İhtiyaç duyulması halinde projeye ait dosyaları download/yıldız üçgen linkinden indirebilirsiniz.




Nokia 5110 lcd ekran satın al

  • 5110 LCD Ekran Satın Al5110 LCD Ekran Satın Al5110 LCD Ekran Satın Al