ESP32 ile DC Motor Kontrolü

ESP32 ile DC Motor Kontrolü Rehberi

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.

Gerekli Donanımlar

  • ESP32 Dev Module
  • DC Motor (Örn: 3V – 12V arası)
  • L298N Motor Sürücü Modülü (Veya muadili L293D)
  • Harici Güç Kaynağı (Motorun voltajına uygun adaptör veya pil)

Dc Motor Nedir

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 Motor Sürücü ve H-Köprüsü Mantığı

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ı:

  • IN1 & IN2: Motor A’nın yönünü belirler.
  • ENA: Motor A’nın hızını (PWM ile) kontrol eder.
  • VCC: Motorun besleme voltajı (5V – 35V).
  • GND: Ortak toprak (ESP32 ve Güç Kaynağı ile birleştirilmelidir).

Bağlantı Şeması (Wiring)

ESP32 PinL298N PinAçıklama
GPIO 27IN1Yön Kontrol 1
GPIO 26IN2Yön Kontrol 2
GPIO 14ENAHız Kontrol (PWM)
GNDGNDOrtak 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.

ESP32 Kod Örneği

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

Motor Pinlerini Ayarlama

Kritik Uyarılar ve Genişletilmiş Bilgiler

  1. Geri Besleme (Flyback Diode): L298N modülünde genellikle dahili diyotlar bulunur. Ancak çıplak bir H-köprüsü kuruyorsanız, motor durduğunda oluşan yüksek voltaj piklerinin (back EMF) ESP32’ye zarar vermemesi için koruma diyotları kullanmalısınız.
  2. Voltaj Düşümü: L298N eski bir teknolojidir (Bipolar Junction Transistor tabanlıdır) ve üzerinde yaklaşık 1.5V – 2V voltaj kaybı yaşatır. Eğer 5V’luk bir motoru tam performans çalıştırmak istiyorsanız, kaynağınızın en az 7V olması gerekebilir.
  3. PWM Frekansı: DC motorlar için genellikle 20kHz – 30kHz arası frekanslar idealdir. Çok düşük frekanslarda motordan “vınlama” sesi gelebilir.
  4. Isınma Problemi: L298N yüksek akımlarda ciddi ısınır. Eğer motorunuz sürekli 1A üzerinde çekiyorsa, modül üzerindeki alüminyum soğutucunun yeterli olduğundan emin olun veya bir fan ekleyin.

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.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir