Arduino ve Mosfet ile DC Motor Kontrolü

Ceyhun Keklik
2 min readSep 21, 2017

--

Merhaba,

Bu yazıda Arduino ve Mosfet kullanarak nasıl DC Motor sürülebileceğini bulabilirsiniz.

Öncelikle gerçek denemelerde kullandığım malzemeler aşağıdaki şekildeydi ancak tinkercad’de çizdiğim aşağıda gördüğünüz şemada bu elemanların aynıları olmadığından benzer elemanlarla çizimi gerçekleştirdim.

  • Arduino Nano
  • 3.7 Volt DC Motor
  • 3.3V Güç Kaynağı
  • 10k Direnç
  • IRF740A Mosfet

Tabi ki bu malzemeler sizde değişkenlik gösterebilir. Örneğin güç kaynağı yerine dc motorunuza uygun pil, daha büyük bir motor, farklı bir mosfet veya arduino uno kullanabilirsiniz.

Çizim şemasına ve simulatör’e aşağıdaki bağlantıdan ulaşabilirsiniz.
https://www.tinkercad.com/things/kihJK4TiJrK-arduino-mosfet-dc-motor-driver

Burada kullandığımız mosfet N tipinde olduğundan güç kaynağımızın “+” kutbunu direkt olarak motora, “-” kutbunu mosfet’e bağlıyoruz.

N-Mosfet’in ilk bacağı olan “Gate”ye Arduino’muzun 3 nolu pinini bağlıyoruz. Burada önemli olan nokta şu, eğer hız kontrolü yapmak istiyorsanız PWM destekli pin’e bağlantı yapmalısınız ve analogWrite fonksiyonuyla 0–255 arasında bir değer göndermelisiniz aksi taktirde sadece motoru digitalWrite fonksiyonuyla HIGH-LOW aç-kapat yapabilirsiniz. Ancak PWM ile motorun hız kontrolü de sizin elinizde olacak. Ayrıca buradan GND’ye 10K’lık bir direnç bağlarsanız arduino’nun kararsız durumlarının önüne geçebilirsiniz.

N-Mosfet’in ikinci bacağı olan “Drain”, motorun diğer bacağına bağlıyoruz.

N-Mosfet’in üçüncü bacağı olan “Source”yi ise ortak GND’ye (toprak) bağlıyoruz.

Burada bir önemli olan unutmamanız gereken nokta da, Arduino ve kullandığınız güç kaynağınızın “-” ve GND’leri birbirine bağlı olması gerektiğidir. Eğer elinizde 12V’u geçmeyen yeterli bir güç kaynağı varsa Arduino’nun Vin bacağını da bununla besleyebilirsiniz ancak unutmamalısınız ki burada motorunuz güç kaybedebilir.

Bu bağlantılardan sonra aşağıdaki küçük kod bloğu ile motorunuzun hızlanıp yavaşlamasını izleyebilirsiniz.

void setup() {
pinMode(3, OUTPUT);
}
void loop() {
for (int i = 0; i < 250; i++) {
analogWrite(3, i);
delay(10);
}
for (int i = 255; i > 5; i--) {
analogWrite(3, i);
delay(10);
}
}

--

--

Ceyhun Keklik

Computer Engineer & Full Stack Developer / Engineering Lead @Dataroid