e
sv

Arduino ile DC Motor Hız Kontrolü

321 Okunma — 29 Aralık 2018 22:57
avatar

Mehmet Ural

  • e 0

    Mutlu

  • e 0

    Eğlenmiş

  • e 0

    Şaşırmış

  • e 0

    Kızgın

  • e 0

    Üzgün

Gerekli malzemeler:

Bu uygulamamızda BJT tipi bir transistör kullanarak DC motorumuzun hızını kontrol edeceğiz. Peki neden bir transistöre ihtiyacımız var?

Arduino’muzun dijital pinlerinden alacağımız çıkış geriliminin 5V olduğunu biliyoruz. 9V DC motorumuz 5V gerilimle çalışabilir fakat motorun çekeceği akım, Arduino pinlerinden çekebileceğimiz en yüksek akım değeri olan 40 mA’in oldukça üzerinde olacaktır. Burada transistör devreye giriyor.

Transistörler

Transistörü çok basit bir şekilde elektrik akımı veya gerilimi ile kontrol edebileceğimiz bir switch olarak düşünebiliriz. Bunu anlamak için elimizdeki NPN tipi transistörü bir musluk olarak düşünelim: transistörün kolektör (collector) bacağından emitör (emitter) bacağına doğru bir boru içerisinden su aktığını hayal edelim. Biz, ortada bulunan baz bacağından vereceğimiz akım ile tıpkı bir musluğun suyuk akışını kısıp arttırması gibi kolektörden emitöre akan akım miktarını kontrol edebiliriz:

Bu sayede çok küçük akımlar kullanarak, büyük akım çeken cihazları kontrol edebilmemiz mümkün olur.

Devre şemamız:

Devredeki diyotun görevi, motorun durur vaziyetten harekete geçtiği anda oluşan gerilim sıçramalarından transistörü korumak içindir.

NOT: Bağlantıları yapmadan önce Arduino’muza kodu yükleyelim. Bağlantıları yaptıktan sonra ise USB bağlantısı yerine Arduino üzerinde bulunan güç girişinden 9V adaptör veya 9V pil ile kartımızı besleyelim. Aksi takdirde bilgisayarımızın USB portuna veya Arduino’muza zarar verebiliriz!

Bu kod ile motorumuzun hızı önce kademeli olarak artacak; en yüksek değere ulaştıktan sonra ise aynı şekilde azalacak:

int motorPin = 3;int hiz = 0; void setup() { pinMode(motorPin, OUTPUT);} void loop() { for(hiz = 0; hiz <= 255; hiz++) { analogWrite(motorPin,hiz); delay(20); } for(hiz = 255; hiz>=0; hiz–) { analogWrite(motorPin,hiz); delay(20); } }

analogWrite() fonksiyonunu RGB LED uygulamamızdan hatırlarsınız umarım 🙂

Bu sefer motorun hızının kendiliğinden artması yerine biz bilgisayarımızdan kontrol edelim:

int motorPin = 3; void setup() { pinMode(motorPin, OUTPUT); Serial.begin(9600); while (! Serial); Serial.println(“0 ile 255 arasi hiz giriniz”);} void loop() { if (Serial.available()) { int hiz = Serial.parseInt(); if (hiz >= 0 && hiz <= 255) { analogWrite(motorPin, hiz); } }}

Bu kod sayesinde, motorumuzun hızını bilgisayarımızdaki Arduino programının seri port ekranından gireceğimiz değerle kontrol edebiliriz. Motor gibi fazla akım çekebilen cihazlarla çalışırken 9V adaptör veya 9V pil ile Arduino’muzu güç girişinden beslemeyi unutmayalım.

 

Kaynak: Bu yazı Kerem İZGÖL’ün  https://maker.robotistan.com/arduino-dersleri-12-dc-motor-hiz-kontrolu/ adresindeki yazısından alınmıştır. Kendisine teşekkür ederiz.

etiketlerETİKETLER

Sıradaki içerik:

Arduino ile DC Motor Hız Kontrolü