ARDUNIO İLE DC MOTOR KONTROL (L293D & PWM)

 Bugünlerde dikkat çeken bir programlayıcı olan Ardunio ile ufak bir motor kontrol sistemini programladım. Yeni başlayan birisi olarak 1 saat kadar bir süreyle program yapısını kavrayabilirsiniz tabi C diline hakimseniz. Olayı gerçek resimlerle değil İSİS simülasyon programı ile göstermek istedim ki bu sizin programı anlamanız için daha iyi olacaktır. Kendi bilgisayarımda Proteus 8.0 kullanıyorum, kütüphaneme  ardunio.lib dosyasını ekleyerek,  gerçek bir Ardunio nuz olmadan İsis de simülasyonla bir miktar program öğrenmeniz mümkündür. Aşağıdaki resimde gördüğünüz gibi Ardunio Mega kullandım. L293D  çift h köprü sistemine sahip motor sürücü ile bağlantı şekli standarttır. Ardunio programı ve proteus dosyası


Programda 1 ve 2. motor başlangıçta bir süre bekliyor sonra sola doğru yarı hızda bir süre dönecektir. Daha sonra ise sağa doğru aynı anda tam hızda dönecek ve program sonsuza kadar tekrarlayacaktır



int motor_1[] = {22,23};  //1. MOTOR 22 ve 23 DIJITAL PINLERINDEN KONTROL EDILECEK
int motor_2[] = {24,25};  //2. MOTOR 24 ve 25 DIJITAL PINLERINDEN KONTROL EDILECEK
int motor_1_pwm=6;
int motor_2_pwm=7;


void setup() {                
  pinMode(22, OUTPUT);    //22,23,24,25 Dijital pinlerini çıkış olarak kullancağız
  pinMode(23, OUTPUT); 
  pinMode(24, OUTPUT);  
  pinMode(25, OUTPUT); 
  pinMode(6, OUTPUT);  
  pinMode(7, OUTPUT); 
  
  
}

void loop() {
  motor_dur();
  delay(500);
  motor1_sol_ileri(); 
  motor2_sol_ileri(); 
  delay(1000);
  motor1_sag_ileri();
  motor2_sag_ileri();
  delay(1000);
}
void motor_dur(){                  //motor_dur bir alt fonksiyondur ve motorun durmasını sağlar, 
  digitalWrite(motor_1[0],HIGH);   //motorlara bağlı olan bütün pinleri HIGH yapar.(+5 Volt verir.)
  digitalWrite(motor_1[1],HIGH); 
  digitalWrite(motor_2[0],HIGH); 
  digitalWrite(motor_2[1],HIGH); 
  
}

void motor1_sol_ileri(){   
  analogWrite(motor_1_pwm,127); // motor sola yarı hızda dönecek
  
  digitalWrite(motor_1[0], LOW);
  digitalWrite(motor_1[1], HIGH);    
}
void motor1_sag_ileri(){     // motor saga maksimum hızda dönecek
  analogWrite(motor_1_pwm,255);
  digitalWrite(motor_1[0], HIGH);   
  digitalWrite(motor_1[1], LOW);
}
void motor2_sol_ileri(){   
  analogWrite(motor_2_pwm,127); // motor sola yarı hızda dönecek
  
  digitalWrite(motor_2[0], LOW);
  digitalWrite(motor_2[1], HIGH);    
}
void motor2_sag_ileri(){     // motor saga maksimum hızda dönecek
  analogWrite(motor_2_pwm,255);
  digitalWrite(motor_2[0], HIGH);   
  digitalWrite(motor_2[1], LOW);
}

Yorumlar