ARDUNIO İLE DC MOTOR KONTROL (L293D & PWM)

Güncelleme 17/03/2022

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.
Untitled 1

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);
}

Yazar: Ali Celal

5f59ca35fd9ac7f00cde62f0b0cd0d07?s=90&d=blank&r=g- Elektronik Mühendisi
- E.Ü. Tıp Fakültesi Kalibrasyon Sorumlusu Test kontrol ve kalibrasyon sorumlu müdürü (Sağ.Bak. ÜTS)
- X-Işınlı Görüntüleme Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.)
- Usta Öğretici (MEB)
- Hatalı veya kaldırılmasını istediğiniz sayfaları diyot.net@gmail.com bildirin