Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

DC motorlar, elektrik enerjisini mekanik enerjiye dönüştüren basit cihazlardır. Ancak ESP32’nin dijital pinleri maksimum 20-40mA akım verebilirken, küçük bir DC motor bile boşta 100mA, yük altında ise 1A ve üzeri akım çekebilir. Bu farkı kapatmak için bir Motor Sürücü (H-Köprüsü) kullanılır. Bu yazıda DC motor ve sürücü kavramlarını anlayıp ESP32 uygulaması geliştireceğiz.
DC motor, doğru akım (DC) elektrik enerjisini mekanik dönme hareketine dönüştüren bir elektromekanik cihazdır. Temel çalışma prensibi, bir manyetik alan içerisinde bulunan iletkenden akım geçirilmesiyle oluşan itme kuvvetine (Lorentz Kuvveti) dayanır. İç yapısındaki rotor (dönen kısım) ve stator (sabit kısım) arasındaki bu etkileşim, sürekli bir tork üreterek milin dönmesini sağlar. Basit yapısı sayesinde hız ve tork kontrolü, uygulanan voltajın değiştirilmesiyle kolayca yapılabilir. Bu özellikleri nedeniyle robotik projelerinden endüstriyel sistemlere, küçük ev aletlerinden elektrikli oyuncaklara kadar çok geniş bir kullanım alanına sahiptir. Hız kontrolü çok kolaydır.


L298N, içinde iki adet H-Köprüsü (H-Bridge) barındırır. Bu yapı, akımın yöne bağlı olarak motora iletilmesini sağlar, böylece motoru hem ileri hem geri yönde döndürebiliriz.
L298N Pin Yapısı:


| ESP32 Pin | L298N Pin | Açıklama |
| GPIO 27 | IN1 | Yön Kontrol 1 |
| GPIO 26 | IN2 | Yön Kontrol 2 |
| GPIO 14 | ENA | Hız Kontrol (PWM) |
| GND | GND | Ortak Toprak Hattı |
Önemli Mühendislik Notu: Motorun besleme kaynağının eksisi (GND) ile ESP32’nin eksisi mutlaka birleştirilmelidir. Aksi takdirde sinyaller için referans noktası oluşmaz ve motor çalışmaz.


Aşağıdaki kod, motoru önce ileri, sonra geri döndürür ve hızını kademeli olarak artırır.
C++
// Pin tanımlamaları
const int IN1 = 27;
const int IN2 = 26;
const int ENA = 14;
// PWM Ayarları (ESP32 için)
const int frekans = 30000;
const int pwmKanal = 0;
const int cozunurluk = 8; // 0-255 arası değer
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
// ESP32 PWM yapılandırması
ledcSetup(pwmKanal, frekans, cozunurluk);
ledcAttachPin(ENA, pwmKanal);
}
void loop() {
// --- İleri Yön ---
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
ledcWrite(pwmKanal, 200); // %80 hız
delay(2000);
// --- Durdur ---
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
delay(1000);
// --- Geri Yön ---
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
ledcWrite(pwmKanal, 150); // %60 hız
delay(2000);
}

Docker/IoT Entegrasyonu: Eğer bu motoru web üzerinden (Django tabanlı bir arayüzden) kontrol edecekseniz, gecikmeleri (latency) minimize etmek için HTTP yerine WebSocket veya MQTT üzerinden PWM değerlerini anlık göndermeniz daha akıcı bir kontrol sağlayacaktır.