Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino ile İleri Geri Yıldız Üçgen Çalıştırma Yöntemi
#1
Arduino ile İleri Geri Yıldız Üçgen Çalıştırma Yöntemi





[Resim: arduino124.png]
Bu dersimizde 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.
Fritzing devre şeması:
Fritzing dosyasını konu ekinden indirebilirsiniz. Devre şemasına kontaktörleri sürecek olan 4 adet röle dahil edilmemiştir. Kontaktör bobinleri arduinonun dijital 3, 4, 5 ve 6. çıkışlarına bağlanacak olan transistörler ile birer röle üzerinden beslenecektir.
[Resim: arduino125.png]
ISIS devre şeması:
ISIS dosyasını ve isis simülasyonu için hex dosyasını konu ekinden indirebilirsiniz. ISIS çizimine LCD dahil edilmemiştir.
[Resim: arduino126.bmp]

ISIS simülasyonu:




Kumanda ve güç devresinin birleştirilmiş şeması (LCD hariç)
[Resim: arduino127.bmp]
LCD ilearduino arasındaki bağlantı:
[Resim: arduino119.PNG]
Arduino kodları:
Kod:
// 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 iconu kodları (saat.c isimli dosya içeriği):

Kod:
#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,
};
[b]Sağ ikon kodları (sag.c isimli dosyanın içeriği):[/b]

Kod:
#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,
};
[b][b]Sol ikon kodları (sol.cisimli dosyanın içeriği):[/b][/b]

Kod:
#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,
};
[b][b][b]Üçgen ikonu kodları (ucgen.c isimli dosyanın içeriği):[/b][/b][/b]

Kod:
#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,
};
[b][b][b][b]Yıldız ikonu kodları (yildiz.c isimli dosyanın içeriği):[/b][/b][/b][/b]

Kod:
#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,
};
[b][b][b][b]İhtiyaç duyulması halinde konuya ait tüm dosyaları orjinal konu ekinden (üyelik gerektirir) indirebilirsiniz.[/b][/b][/b][/b]
Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  ARDUİNO VE MATLAB İLE MPU6050 KULLANIMI VE YÖNTEMLER Ken 0 206 19-05-2016, Saat: 09:57
Son Mesaj: Ken
  MIT APP INVERTOR & ARDUİNO İLE LED KONTROL ETME YÖNTEMİ Ken 0 123 19-05-2016, Saat: 09:55
Son Mesaj: Ken
  MIT APP INVERTOR VE ARDUİNO İLE SERVO MOTOR KONTROL ETME YÖNTEMİ Ken 0 128 19-05-2016, Saat: 09:53
Son Mesaj: Ken
  ARDUİNO İLE NOKİA 5110(PCD8544) GRAFİK LCD KULLANIMI VE GEREKLİ YÖNTEMLER Ken 0 195 19-05-2016, Saat: 09:52
Son Mesaj: Ken
  ARDUİNO KONTROLLÜ ÇİM SULAMA SİSTEMİ PROJESİ VE YÖNTEMLER Ken 0 141 19-05-2016, Saat: 09:51
Son Mesaj: Ken

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi
loading...