25 Nisan 2013 Perşembe

Arduino UNO R3 İle Brushless( Fırçasız ) Motor Kontrolü

Hamza Öztaş Share:
Image Hosted by ImageShack.us

Merhaba arkadaşlar bu yazımda Arduino UNO R3 kullanarak brushless motor yani fırçasız motoru kontrol etme mantığını anlatmaya çalışacağım.

Brushless motor kullanılarak yapılan hava araçları yazı dizisine ulaşmak için alttaki linklere tıklayarak ulaşabilirsiniz.

Gerekli Malzemeler;
  • Arduino UNO R3
  • ESC( Electronic Speed Controller)
  • LIPO Battery ( isteğe bağlı olarak 7-12 volt arası herhangi bir batarya kullanılabilir)
  • Potansiyometre
  • Bağlantı için biraz atlama kabloları
   İlk olarak arkadaşlar kısaca ESC yani elektronik hız kontrolcü'den bahsetmek istiyorum. Brushless motorları( fırçasız motorları ) kontrol edebilmek için ESC'lere ihtiyac vardır, ESC kullanılmadan fırçasız motorlar kontrol edilemez. ESC'lerin artı ( kırmızı ), eksi( siyah ) besleme, 3 pinli sinyal kablosu ve buna ek olarak brushless motora giden 3 adet( mavi) kablosu vardır. Brushless motorda yine ESC' e giden 3 adet kablosu vardır.


Image Hosted by ImageShack.us


 Bağlantı kısmından bahsedecek olursak;
  • ESC' nin artı ve eksi bağlantı pini( kırmızı ve siyah ) bataryaya bağlanır.
  • ESC'nin 3 adet mavi renkteki kablolar motora bağlanır.
  • ESC'nin 3'lü pin ( beyaz, kırmızı, siyah ) 
    • Beyaz--sinyal kablosu Arduino'nun digital 9. pinine bağlanacak
    • Kırmızı ve siyah kablolar artı ve eksi pinleri bu pinleri Arduine üzerinden beslenecek.
  • Potansiyometre'nin  ortadaki bağlantı pini sinyal pini, Arduino'nun analog 0. pinine bağlanacak. Diğer ikisi artı ve eksi besleme pinleride yine o pinleri'de  Arduino üzeriden beslenecek.


Image Hosted by ImageShack.us


Image Hosted by ImageShack.us

Arduino Kodu;


//http://www.depositericrobotic.com/

const int potpin = A0;  
const int escpin = 9;
int val;   

void setup(){ 
  pinMode(escpin, OUTPUT); 
  pinMode(potpin, INPUT); 


void loop(){ 
  val = analogRead(potpin);            
  val = map(val, 0, 1023, 0, 179);     
  analogWrite(escpin,val);
  delay(15);                          




  • Arduino kodunda ilk olarak ESC'nin sinyal kablosu Arduino'nun digital 9.pinine, potansiyometrenin sinyal pini ise Arduino'nun analog 0. pinine bağladığımızı tanımladık. Potansiyometre için potpin, ESC pini için de escpin etiketlerini verdik. Birazdan pot'daki analog değerleri motora vermek için öncesinde bir değişken tanımlamamız gerekmektedir ve bunuda integer tipinde val isminde bir değişken tanımlayarak yapıyoruz.

Image Hosted by ImageShack.us


  • Programın void setup kısmında ise arkadaşlar,motorumuzu pot'dan alacağımız değerlere göre çalıştıracagımız için 
    • pinMode(potpin, INPUT);      // Potansiyometre input olarak tanımlandı.
    • pinMode(escpin, OUTPUT);  // ESC bağlantı pinini output olarak tanımlandı.


  • Daha sonra potansiyometreden almış olduğumuz değerleri ilk başta integer tipinde tanımladığımız val ismili değişkenin içine atıyoruz. Sonrada 0-1024 arasındaki değerleri 0-180'e çekiyoruz, 
  • 0-180 arasında indirdiğimiz analog değerleri analogWrite komutuyla escpin yani motora gönderiyoruz. Ve bağlantılarımız yaptıkta sonra potansiyometreyi yavaş yavaş çevirmeye başladığımızda motordan başlangıçta ilginç melodi gibi sesler duyacaksınız ve sonra motorunuz çalışacaktır. 
  • Umarım anlatabilmişimdir arkadaşlar, aklınıza takılan bir yer olursa  sayfa altına yada sitede İLETİŞİM bölümünden bana mesaj bırakabilirsiniz.
Image Hosted by ImageShack.us

Image Hosted by ImageShack.us

Image Hosted by ImageShack.us

Tarafından Yayınlandı >> Hamza Öztaş

Hamza Öztaş'ı google plus'ta takip etmek için Google'a tıklayın;
Google+.

28
replies
  1. Merhaba kolay gelsin Potansiyometreyi kaçlık kullandınız? Yoksa ortalama 1 Kohm luk pot iyi mi ?

    YanıtlaSil
  2. kullandığınız motorun özellikleri nedir

    YanıtlaSil
    Yanıtlar
    1. özelliklerine buradan bakabilirsiniz,
      https://www.hobbyking.com/hobbyking/store/__29063__Turnigy_D2836_8_1100KV_Brushless_Outrunner_Motor_UK_Warehouse_.html

      Sil
  3. Verdiğiniz bilgi için teşekkür ederim. Bir şey daha sormak istiyorum. Biz arkadaşımla bitirme projesi olarak iki multikopterin havada haberleşmesini sağlamak istiyoruz. Bu projemiz hakkında sorularımız olduğunda sizden yardım istesek, size ulaşabileceğimiz bir e-posta adresi istesek çok mu şey istemiş oluruz. Bize projemiz hakkında yardımcı olursanız gerçekten bize büyük bir iyilik yapmış olursunuz ve size minnettar kalırız. Şimdiden teşekkürler.

    YanıtlaSil
  4. motordan sadece art arda bib bib bib bib sesi geliyor motor dönmüyor. Acaba neden oluyor bu ESC de mi sıkıntı var? Voltaj mı yetmiyor? .

    YanıtlaSil
  5. bi problem yok, önce motorların arm olması gerektiğinden gelen bir ses. öncelikle ufak bir sinyal gönderin bekleyin, bipleme kesilecek. sonrasın da çalışacaktır.

    YanıtlaSil
  6. quadcopter için kaç rpm lik motor gerekir?

    YanıtlaSil
  7. ardupilot ile tek bir motoru nasıl kontrol edebiliriz deneme amaçlı tek bir motoru kontrol etmek istiyoruz nasıl yapabiliriz içine program mı gömmeliyiz eğer öyle ise bunu hangi programla yapmalıyız

    YanıtlaSil
  8. ardupilot için mission planner kullanmanız gerekiyor, amacınız sadece bir motor kontrol etmek ise kumandanız varsa sadece kumanda ile kontrol edebilirsiniz.

    YanıtlaSil
  9. Merhabalar motordan nereden baksam 15 dk boyunca bip sesi geldi hafiften potu çevirdim ama yineden keslmedi bip sesi

    YanıtlaSil
  10. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  11. Hocam selamlar, piyasada 4 lü esc ler bulunmakta. Linkte yer alan esc yi de yukarı da bahsettiğiniz gibi kalibrasyon yapabilir miyiz? ( http://www.robotistan.com/25ax4-quattro-esc-dortlu-fircasiz-motor-surucu-modulu ) Yani 4 moturuda bu esc ye bağlayıp aynı anda 4 motoruda potansiyometre ile ayarlayabilir miyiz ? işin açıkcası quad copter projemde bu ürünü kullanmak istiyorum. Teşekkürler.

    YanıtlaSil
  12. Yanıtlar
    1. tam olarak sizin sorununuz nedir?

      Sil
    2. bip bip sesi geliyor ama motor dönmüyor bi türlü :(

      Sil
    3. ilk olarak potu yavaş yavaş çevirin bip bip sesinden sonra ses keslicek sonrasında direkt çalışacaktır.

      Sil
  13. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  14. Merhaba . 2.4 ghz kumanda ile fırçasız motoru kullanmaya çalışıyorum . Arduino da yazdığım kod aşağıda bu kodla 5.pine led taktığım zaman led lambayı kontrol edebiliyorum.Ama esc yi bağladığımda motoru kumanda ile çalıştıramıyorum .Neden oluyor anlamadım . Yardımcı olursanız çok mutlu olurum .

    int pin = 7; // değeri okunmak istenen receiver pini
    unsigned long duration; //Kumandadan okunan değer
    int escpin1 = 5; //Esc nin sinyal pinini bağlayacağımız pin


    void setup()
    {
    Serial.begin(9600);
    pinMode(pin,INPUT);
    pinMode(escpin1,OUTPUT);
    }

    void loop()
    {
    duration = pulseIn(pin, HIGH); // pulse' in HIGH olması durumunda sayar
    duration = map(duration, 1034, 1867, 0, 179); // Kumandadan okuduğumuz değeri 0-179 arasına dönüştürdüm
    Serial.println(duration); //Kontrol için
    analogWrite(escpin1,duration); //Değeri motora gönderiyoruz

    delay(15);
    }

    YanıtlaSil
    Yanıtlar
    1. Yani led in parlaklığını kontrol edebiliyorum .Fırçasız motorun hızını kontrol edemiyorum

      Sil
  15. Merhaba bende böyle bir proje yapıyorum fakat esc için güç kaynagı lipo pil dışında ne kullanabilirim yada kaç Volt kaç A vermeliyim esc ye esc marka modeli EMAX ESC-25A motor ise EMAX CF2812 fırçasız motor 11.1 V ...

    YanıtlaSil
  16. Bu kodlarla tek bir motoru kontrol ettik fakat aynı kodlara yanlızca ekleme yaparak 4 motoru kontrol edemedik ya hic calışmadı ya da gelişi güzel çalıştı sebebi nedir?Teşekkürler.

    YanıtlaSil
  17. iyi günler hamze bey ; ben arduino ile iki fırçasız motor kontrolü yapıyorum ancak motorlara hıoz değerlerini gyro dan vereceğim problemim şu ki ilk başta pot olmadan motorları kod üzerinde kalibre edemiyorum pot ile yaptığım her şeyi kod ile değerler vererek yaptım olmadı bana yardım eder misiniz ? teşekkür ederim şimdiden.

    YanıtlaSil

  18. merhaba kolay gelsin.sizin bağlantılarınızla çalıştırdım.
    ancak yanında bide servo motor çalıştırmak istediğimde sıkınıt yaşıyorum çalışmıyor.bunun nedini nedir.servo motor kodlarını çıkardıgımda çalışıyor ancak eklediğimde motor çalışmıyor.

    #include

    Servo myservo;
    const int potpin = A0;
    const int escpin = 9;
    int val;

    void setup(){
    myservo.attach(7);
    pinMode(escpin, OUTPUT);
    pinMode(potpin, INPUT);
    Serial.begin(9600);
    }

    void loop(){
    myservo.write(90);
    val = analogRead(potpin);
    val = map(val, 0, 1023, 0, 179);
    analogWrite(escpin,val);
    delay(15);
    Serial.println(val);
    }

    YanıtlaSil
  19. servoyu tam olarak nasıl kontrol etmek istiyorsunuz, pot değerini de servoya verip pot ile aynı anda iki motoru da kontrol edebilirsiniz.

    YanıtlaSil
  20. direksiyon olarak kontrol etmek istiyorum.değerleri sabit şarta göre sağ sol yaptıracam.yukarıdaki kodda servo ile ilgili kısımları çıkarınca çalışıyor.

    YanıtlaSil
  21. sorunu çözmek için servoya direkt bi değer vermeyin, servoda inputu dışarıdan alsın, örneğin pottan yada herhangi bişeyden,

    YanıtlaSil

Get Updates in your Email
Complete the form below, and we'll send you our best of articles.

İletişim

© >> |
TOP