Bugün sizlerle L298N Motor sürücüsünü inceleyeceğiz.
Eminim bir çoğumuz motorun arkasına pil bağlayıp bir şeyler yapmışızdır. Bugün ise onu bir shield ve arduino sayesinde programlamayı öğreneceğiz ileriye doğru uzaktan kumanda edeceğiz.
298N SHİELD PİN(BACAKLALRI)
- DC motor 1 "+" yada step motor A+
- DC motor 1 "-" yada step motor A-
- 12V jumper'i eğer jumperi kaldırır isek 35V'a kadar besliyebiliriz. Eğerki jumper takılı ise 12V ile besleyiniz.
- Jumper takılı ise 12V girişi takılı değilse 12-35V arası giriş.
- GND
- 5V Girişi isterseniz jumper takılı ise Arduinoyu buradan besliyebilirsiniz.
- 1. Motorun pwm bacağı (Enable)
- İN_A1
- İN_A2
- İN_B1
- İN_B2
- 2. Motorun pwm bacağı (Enable)
- DC motor 2 "+" yada step motor B+
- DC motor 2 "-" yada step motor B-
Kullanılacak malzemeler
- Arduino geliştirme kartı
- L298N Shield
- 2 adet dc Motor
- Jumper kablolar (dişi-erkek* erkek-erkek)
Bağlantı Şeması
Kullanılacak Kodlar
// L298N ile arduino arasındaki bağlantı
// 1. Motor
int enA = 10;
int in1 = 9;
int in2 = 8;
// 2. Motor
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// Tüm motor pinlerini OUTPUT olarak ayarladık
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void demoBir()
{
// bu fonksiyo iki kotoruda düzgün bir hızla gitmesini sağlıyacak
// 1. motoru çalıştır
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
//motorun hızını 0-255 arası bir hız ayarla
analogWrite(enA, 200);
// 2. Motoru çalıştır
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// motorun hızını 0-255 arası bir hız ayarla
analogWrite(enB, 200);
delay(2000);
// şimdi motorun yönünü değiştirelim
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// motorları durdur
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoIki()
{
// motorların ikisinide durmuş bir halden yavaşca hızlandırıp
// son hızına kadar çıkaracağız
// motorları çalıştır
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// motoru 0 hızdan maksimum hıza çıakr
for (int i = 0; i < 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// motorları maksimum hızdan 0 hıza düşür
for (int i = 255; i >= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// motorları durdur
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
demoBir(); //sürekli demo1 ve demo2 yi uygulaması için buraya yazdık
delay(1000);
demoIki();
delay(1000);
}
----------------------------------------------------------------------------------------------------------------------
Herkese iyi çalışmalar dilerim dostlar.
Hiç yorum yok:
Yorum Gönder