Arduino ile Step Motor Kontrolü

Step(Adım ) Motorlar, adından da anlaşılacağı üzere adım adım hareket eden, motorun sargılarından birinin enerjilendirilmesi ile  sadece 1 adım hareket eden motorlardır.  Adımlarınızın kaç derecelik olacağı motorunuzun tasarımına bağlıdır. Örneğin;  400 adımlık bir step motor 360 derecelik bir tam dönüşünde 400 adım yol alır. Bu durumda motorunuzun bir adım açısı 360/400= 0.9 derece olur.  Bu aynı zamanda sizin çözünürlük değerinizdir. Arduino ile Step Motor kontrolü oldukça kolaydır.

step-motor1

Step Motorlarla ilgili ayrıntılı bilgiyi buradan bulabilirsiniz. Ayrıca Arduino IDE’ niz için ilgili kütüphanelere buradan ulaşabilirsiniz.

Step Motorları kullanmak için genelde sürücü devreleri kullanılmaktadır. Step Motorların istenilen yönde ve hızda çalıştırmak istendiğinde sargılarına belli bir sırada darbeler uygulanmalıdır. Bu darbelere göre step motorunuz istenilen sayıda adım atabilir. Günümüzde bu işlemi yapan hazır devreler (kontrolor, sürücü devreler) bulunmaktadır.  Sürücü devreleri ile aynı zamanda tork değerinizi de belirlemiş olursunuz.

Aşağıdaki örnekte basit bir step motor sürme örneği verilmiştir. Bu örnekte sürücü devresi olarak ULN2003AN kullanılmıştır.

Sistemin devre şeması

Sistemin devre şeması

Step motorun 4 tane çıkış pinini sürücü devremiz ile bağlantıladık ve sürücü devremizden de Arduino’ muzun 8, 9, 10, 11  nolu pinlerine bağlantı kurduk. Dolayısıyla step motorun uçlarını sırasıyla HIGH konumuna çekerek motorumuzu hareket ettirebiliriz. Uçlardan sadece birini HIGH(Lojik 1) edebiliriz, bu esnada diğer uçların LOW(Lojik 0) olması gerekir.

Kodlarımız aşağıdaki gibi olmalıdır.

int motorPin1 = 8;          
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
}

Bu çalışmada step motorun sırasıyla motorPin1, motorPin2, motorPin3, motorPin4 şeklinde tanımladığımız uçlarını HIGH yapıyoruz. Eğer bu sıralamayı motorPin4, motorPin3, motorPin2, motorPin1 şeklinde değiştirirsek motorumuz ters yönde dönmüş olacaktır.

Volkan Kanat

Embedded Software Engineer @MakelSirketler. BSc. Mechatronics Engineer. Technical Author @dikeyeksen.

167 comments

  1. Ömer Koman dedi ki:

    çok temiz öğretici güzel yazı olmuş.

    • dursun dedi ki:

      iyi çalışmalr
      arduino ile proje tasarlamak istiyorum
      bunun için tabiki de malzemelere ve araçlara ihityacım var
      bunları temin edebileceğim bir adrres önerebilirr misiniz
      arduino yu kendim devresii tasarlayabilir miyim
      yardımlarınız için şimdiden teşekkürler

    • Aziz dedi ki:

      Merhabalar! ben uln2003 motor sürücü olmadan step motorumu kontrol edebilirmiyim? çünki uln2003 in çalışma prensibi giriş sinyalini tersliyor sanırım ve ben kodda

      HIGH
      LOW
      LOW
      LOW
      ŞEKLİNDE DEVAM EDERSEM OLURMU ACABA?

  2. Bilal dedi ki:

    Ömer beye katılıyorum Volkan. Karanlık bir nokta kalmamış eline sağlık :))

  3. Murat Akkemik dedi ki:

    Ellerinize sağlık gerçekten çok merak ediyordum bu sistemi sayenizde öyle güzel anladım ki bu kadar olur. Ben Aslında 43 yaşında işletme mezunu bir finansçıyım ve Hobby olarak pic programlayarak birşeyler yapmaya başladımdı. Ama Arduino yeni ufuklar açtı bende… Şimdi Sorularıma geleyim;
    1- DelayTime azaldığında motor daha hızlımı döner? en hızlı ile en yavaş noktasını nasıl buluruz?
    2- yollanan sinyalin voltajı önemli midir?
    tşk.

    • Volkan Kanat dedi ki:

      Merhaba Murat Bey,
      Motorun derece/adım oranı sabittir. DelayTime’ ı değiştirerek motorun ne kadar beklemeyle adım atması gerektiğini söylemiş oluyorsunuz. Dolayısıyla DelayTime azaldığında motor daha hızlı dönecektir. Kullandığınız motorun datashettini incelediğinizde motorunuzun hız aralığını ve yollamanız gereken sinyalin gerilim aralıklarını görmüş olursunuz.

  4. Murat Akkemik dedi ki:

    Birde RC uçaklarla uğraşanlar bilir. Brushless motor olarak bilinen 3 kablolu motorlar var. Bunlarada benzer mantıkla voltaj uygulanarak hız ayarı veriliyor (ESC tabir edilen bir devre ile) bunun çalışma mantığınıda anlatarak mümkünse bu konuda bir uygulama yapılabilir mi?
    tşk.

    • Volkan Kanat dedi ki:

      Brushless(BLDC) dediğiniz fırçasız motorlardır. Aslında step motorların içerisinde de fırçasız motor bulunur ve içerdikleri dişliler sayesinde 360 dereceyi kısımlara ayırırlar. Fırçasız motor kontrolünü de benzer şekilde yapabilirsiniz. ESC ile Arduino’ nuzu bağlantılayacaksınız ayrıca ESC’ yi güç kaynağınızın çıkışına bağlayacaksınız. İleriki günlerde bu konuyla ilgili yazı yazmaya çalışacağım…

  5. Bilal Günebakan dedi ki:

    elinize sağlık güzel bir yazı.4 bacaklı(yada kablolu tam olarak ismini bilmiyorum) step motorların sürülmesi hakkında bilgi verebilir misiniz?

    • Ömer Koman dedi ki:

      ben yazıdaki step motorda 4 bacak görüyorum zaten. siz kaç bacak saydınız arkadaşım?

    • Mustafa dedi ki:

      Arkadaşım haklısın devre tasarımında kablo görünürken kodda 4 pin var, 12v yada 24v (arduino output geriliminden yüksek motorlar için 5v büyük olanlar yani) step motor sürülürken motoru harici bir gerilim kaynağı ile beslemen gerekiyor, 5 yada 6 kablolu step motorlarda harici besleme için bir uç var fakat 4 kablolu bipolar motorlarda böyle bir uç yok her uca motorun üzerinde yazan gerilimi vermen gerekiyor, bunu direk arduinonun çıkış pinlerinden yapamazsın.

  6. Sezer dedi ki:

    Merhaba,
    Robot kol mekanizması çizdim, şuan prototip işlemesini yapıyorum. Elimde arduino uno var, step motor – servolar ile elektroniğe fazla girmeden(arduino temek şeylerini öğrendim, mantığa hakimim. C zaten biliyorum.) kontrol ettirmek istiyorum. 3 ya da 4 adet servo kontrol edebileceğim hazır bi shield ve motor kombinesi önerebilir misiniz?
    not: foruma üye oldum fakat hotmail ve yahoo için ikisinede aktivasyon maili gelmediği için burdan yazmak zorunda kaldım.

  7. Ömer Koman dedi ki:

    kullanacağınız motor özellikleri; voltaj, akım, güç ve toplam motor veya eksen sayısınz göre bir shield seçmeniz gerekir yada kendiniz tasarlamalısınız. robotistan.com daki motor shieldlere bir bakın…

  8. mehmed dedi ki:

    iyi günler yazı için teşekkürler. bir arduino ile 3 adet step motor sürebilir miyiz. 3 eksenli bir cnc yapmak istiyorum.

  9. […] int motorPin1 = 8; int motorPin2 = 9; int motorPin3 = 10; int motorPin4 = 11; int delayTime = 500; void setup() { pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); } void loop() { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(delayTime); } Bu çalışmada step motorun sırasıyla motorPin1, motorPin2, motorPin3, motorPin4 şeklinde tanımladığımız uçlarını HIGH yapıyoruz. Eğer bu sıralamayı motorPin4, motorPin3, motorPin2, motorPin1 şeklinde değiştirirsek motorumuz ters yönde dönmüş olacaktır. Alıntıdır:http://arduinoturkiye.com/arduino-ile-step-motor-kontrolu/ […]

  10. semra dedi ki:

    ben bir soru sormak istiyorum. cevaplarsanız memnun olurum. bizim laboratuarda bir nanoindentation cihazı var. cihazın bir parçası, kızak üzerinde hareket eden bir kafadan oluşmaktadır.bu kafayı hareket ettiren bir adım motoru var. söz konusu bu kafanın sağ yönde hareketinde sorun yok. ancak sola hareketinde zorlanıyor ve hatta sıcaklık 30 dereceye ulaştığında ( cihaz kabin içinde ve sıcaklık kabin içi sıcaklık) sola hareket etmiyor. zorlanıyor ve ses gelmeye başlıyor. bu sorun neden kaynaklanıyor olabilir. kızak dediğim yani kafanın hareket ettiği yatağı yakladık ancak sorun düzelmedi. acaba kafanın sola hareketini sağlayan nedir. adım motorunda sorun olabilirmi. sağ yönde harekette sorun yok sola hareket etmiyor.adım motorunda kontrollur da sorun olabilir mi. yardımcı olursanız çok sevinirim.

  11. Ömer Koman dedi ki:

    adım motorda sağa da dönse sola da dönse aynı sargılar devrededir sadece sargıdaki kutuplara gelen voltajlar yer değiştirir. 1- mekanik bir sorun olabilir görünmeyen bir yerde sıkışma yapıyordur yada milde yamulma varsa çevirirken zorlanıyordur. 2- elektronik sorun varsa sola hareket sırasında akım veren devredeki köprülerden biri dengesiz çalışıyor olabilir fazla akım çeker, sürücüsü entegre ise onu bulup değiştirmeyi denemek bir çözüm olabilir bazı entegrelerin hem sürücü hem kod çözücü birlikte değişmesi gerekebilir. sorun büyümeden servisi ile görüşseniz faydası olur.

    • emre şahin dedi ki:

      hocam arduino ile sensör 1 olduğunda 2 saniye ileri 0 olduğunda ile 2 saniye geri çalıştırmam için yapmam gerekeni bana sunma şansınız olursa buyuk iyilik yapmış olursunuz akıllı perde tasarımında kullanmam gerekiyor

      • Ömer Koman dedi ki:

        yukarıdaki programda şu sıralama motoru bir tur çevirir

        void loop() {
        digitalWrite(motorPin1, HIGH);
        digitalWrite(motorPin2, LOW);
        digitalWrite(motorPin3, LOW);
        digitalWrite(motorPin4, LOW);
        delay(delayTime);
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, HIGH);
        digitalWrite(motorPin3, LOW);
        digitalWrite(motorPin4, LOW);
        delay(delayTime);
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, LOW);
        digitalWrite(motorPin3, HIGH);
        digitalWrite(motorPin4, LOW);
        delay(delayTime);
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, LOW);
        digitalWrite(motorPin3, LOW);
        digitalWrite(motorPin4, HIGH);
        delay(delayTime);
        }

        yukarıdaki rutini ayrı bir yerde alttan yukarı doğru yazarsanızda ters yöne hareket elde edersiniz.

        yapmanız gereken ileri ve geri için kaç kere tekrarlanacaksa rutinleri o kadar çağırın, sonra da tersini yapın. en fazla 5dk içinde yazarsınız. kolay gelsin

  12. uzeyr ozcan dedi ki:

    Merhaba bu örneği denemek için kodu falan yazdım ancak
    ULN2003AN şu devreden bulamadım bunun başka bir adı varmı acaba
    dx de buldum aldım gelmesini bekledim falan,ama ürün daha küçük çıktı,
    makaledeki gibi yerleştiremedim.

    http://dx.com/p/uln2003a-ic-sop16-drive-ic-5-pcs-153341

  13. Ömer Koman dedi ki:

    direnc.net te çoğu malzemeyi bulabilirsin oradan da sorabilirsin fiyatları uygundur.

  14. Kerem dedi ki:

    Volkan bey anlatım için teşekkürler, ben step motor ile analog gösterge yapmak istiyorum, (örneğin araçlardaki takometre gibi) nasıl bir yol izlemem gerekir? Fan devrini gösterecek yapacağım analog gösterge. Kasa modlamada kullanacağım.

  15. özKan ÇELİK dedi ki:

    Mehabalar
    void loop() kod bloğunu şu şekşlde yazdığımızda motor yinede normal bir şekilde çalışmaya devam eder mi?

    void loop() {
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin1, HIGH);

    delay(delayTime);

    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);

    delay(delayTime);

    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH);

    delay(delayTime);

    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, HIGH);

    delay(delayTime);
    }

    • Ömer Koman dedi ki:

      bunu denedinizde bilgi sınamak için mi yapıyorsunuz acaba ? motor sargısında gücü düzenli olarak belli bir yönde sargılardan sırasıyla akıtmak asıl amaç, sizin yönteminizde diğer sargılar boşta kaldığı veya kutuplanmadığı anlaşılıyor bu da motorda ters akımlar oluşacak ve belkide hafifde olsa motora ters yonde dönüş akımları oluşturacak. çalışsa bile verimsiz olacaktır. yazının başındaki sargı şemasını anlammışsınız.

      • özKan ÇELIK dedi ki:

        Teşekkür ederim Ömer Bey. Henüz step motorum olmadığı için deneyememiştim. Bu kod bloğu çalıştırılmadan önce motorun bütün pinleri lojik bire çekilip ondan sonra bu kod bloğu çalıştırılırsa motor normal bir şekilde çalışır o zaman . Çünkü böylece hiç bir pin boşta kalmış olmuyor.

        • Ömer Koman dedi ki:

          bu örnekte 4 pin var bütün pinleri kullanmanız gerekiyor kullanmadıklarınızı eksiye artıya çekmek işleminizi doğrulamaz.

          • özKan ÇELIK dedi ki:

            Şöyle demek istemiştim.

            int motorPin1 = 8;
            int motorPin2 = 9;
            int motorPin3 = 10;
            int motorPin4 = 11;
            int delayTime = 500;
            void setup() {
            pinMode(motorPin1, OUTPUT);
            pinMode(motorPin2, OUTPUT);
            pinMode(motorPin3, OUTPUT);
            pinMode(motorPin4, OUTPUT);

            digitalWrite(motorPin1, LOW);
            digitalWrite(motorPin2, LOW);
            digitalWrite(motorPin3, LOW);
            digitalWrite(motorPin4, LOW);

            }

            void loop() {
            digitalWrite(motorPin4, LOW);
            digitalWrite(motorPin1, HIGH);
            delay(delayTime);
            digitalWrite(motorPin1, LOW);
            digitalWrite(motorPin2, HIGH);
            delay(delayTime);
            digitalWrite(motorPin2, LOW);
            digitalWrite(motorPin3, HIGH);
            delay(delayTime);
            digitalWrite(motorPin3, LOW);
            digitalWrite(motorPin4, HIGH);
            delay(delayTime);
            }

        • kaanceyhan dedi ki:

          @Özkan son yazdığnız dizilim step motorsun standart çalışması için gereken uygulama zaten.
          önemli olan aynı anda iki tane pinin HIGH olmaması. böyle olduğunda motor bir yere dönemez gır gır ses çıkarır sadece 🙂
          bende bunun videosu vardı sanırım.

  16. Ömer Koman dedi ki:

    özkan çelik o kodun sonucu ne olur bilmiyorum deneyin buraya yazın haber verin. deneme yapacak vaktim ve motor yok şu anda elimde. iyi çalışmalar… çalışır diye iddianız varsa bir arduino ve motor alıp deneyin yapınca helal olsun derim en fazla…

  17. mustafa çağatay satım dedi ki:

    çok ama çok teşekkür ediyorum, saygılar

  18. mehmet baki dedi ki:

    ULN2003AN elimde yoktur onun yerine ne tür sürücü kullana bilirim acaba?

  19. Furkan dedi ki:

    Selamlar arkadaşlar bu proje elinde hazır olan ya da parayla yapmak isteyen varsa bana ulaşabilir mi ? email: furkans33@hotmail.com

  20. Burak Akyıldız dedi ki:

    herkese kolay gelsin ben ardunıo uno ile encoderli dc motor sürme işlemi için yazılım gerekıyor matlab sayesınde bu yazılımla motoru ıstedıgım devırde ve ıstedıgım sekılde calıstırabılecegım fakat ardunio için kod yazma kısmında takıldım baya yardım ederseniz teşekkur ederım çok..

  21. Ömer Koman dedi ki:

    sitede matlab ve simulink için yazı var, oradan arduinoya kod yazmaya gerek kalmadan kendisi tüm kodu yazıp arduino içine atıyordu oraya bir bak…

  22. Burak Akyıldız dedi ki:

    teşekkur ederım ömer bey pekı bu encoder okumayı nasıl yapabılırım encoder 3 cıkısım var bunları motor shıeld da nereye baglıyacagım proje verdıler fakat ben makına muhendıslıgı okuyorum fakat bu makına muhendıslıgınden cok mekatronıke kacıyor zannedersem o yuzden pek bılgım yok yardım edersenız sevınırım

  23. Ömer Koman dedi ki:

    arduino kullanacaksanız google dan “arduino motor encoder” diye bir aratın hangisi sizin motorunuz ve nasıl bir çıktısı var bilmeden bir şey yapamayız. bazıları sadece puls verir motor devrini okursunuz bazıları motor başlangıç pozisyonunda değişik bir pals verir bazıları hepsini birden yapar hatta yön bilgiside palsin uzunluğu ile ifade edilebilir. her motor uretıcısının veya motorun kullanım yerıne gore dızayn edilir veya alınır bu özellikler. motorunuzun datasheetını bulun enkoder cıkışlarının ne olduğunu öğrenip google dan arduino ve hatta motorunuzun kodunu yazıp bir aratın. biz de öyle yapıyoruz çoğu zaman…

  24. hasan dedi ki:

    merhaba size bir sorum olacak benim elime 8 uçlu bir step motor geçti de onu nasıl 6 uçlu olarak kullanabilirim.Yardım edebilirmisiniz?

  25. Hakan ARAS dedi ki:

    Hep microchip mcu larla uğraşmış biri olarak arduino ile yeni tanıştım. Arduino Nano ile başlangıç yaptım. DSLR tip bir kameram var ve bununla düzgün videolar çekmek için bir slider yapmak istiyorum. Mekanik kısmını tamamladım fakat kamera ilerlemesini elimle iterek sabit hızla yapamadığım için motor eklemek istedim.
    Daha önce hiç step motorla uğraşmadım. Elime eski bir yazıcıdan sökülmüş 23lm-c355-p6v bir step motor geçti. 4 uçlu olduğu için bipolar step motor olduğunu öğrendim. Bilip bilmeden ULN2803 ile sürmeye çalıştım gram hiç bir hareket oluşmadı.. Ertesi gün L293 buldum onunla sürdüm bir hareketlenme oldu fakat bir tur döndükten sonra motor sapıtıyor titreme yapıyor. Kullandığım program şudur:

    //Birinci bobinin birinci ucu motorPin1
    //Birinci bobinin ikinci ucu motorPin2
    //İkinci bobinin birinci ucu motorPin3
    //İkinci bobinin ikinci ucu motorPin4

    int motorPin1 = 9;
    int motorPin2 = 10;
    int motorPin3 = 11;
    int motorPin4 = 12;
    int delayTime = 50;

    void setup() {
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);
    }

    void loop() {
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, HIGH);
    delay(delayTime);
    }

    Bobinleri ölçtüm dirençleri 1.8 ohm.. NEMA23 tipi motor. L293 MOTOR beslemesi olarak 12 volt veriyorum oradamı hata yapıyorum. İşin içinden çıkamadım. Bir çözüm bulalım hep beraber slider yapalım 🙂

    • Ömer Koman dedi ki:

      şuradaki şema kutuphane ve koda bir baksan belkı olur, sonra kendi ozgun kodunu yazarsın. senın kod duzgun gorunuyor ama belkı sıralamada bır sorun vardır bilemedım

    • MEHMET dedi ki:

      pın 2 ile pın 3 ün sırasını deqistir çaLısacaktır

  26. Enes Uğuroğlu dedi ki:

    Merhabalar,

    Bilgiler için çok teşekkürler,
    Benim bir sorum olacak, projem için arduino mega ile 6 adet stepper motoru kontrol etmek istiyorum. Ancak şu anda en fazla bulabildiğim RepRap’ın RAMPS isimli bir shieldi var ve 5 adet sürücü içeriyor. Elimde 6 adet Polulu A4988 Step motor sürücüsü var bunları Arduino mega ile kullanıp nema17 step motorlarımı sürmem mümkün mü?

  27. BURAK dedi ki:

    benim 4 kablolu step motorum var bu şemada 5 kablolu motor var ve benim motorum 30 volt luk motor bu yüzden çalımıyo proje ödevi için acil lazım yardımcı olursanız sevinirim .

    • Ömer Koman dedi ki:

      ben olsam robotistandan bir step motor alır geçerim 7tl 9tl ve 12 tl ye var… sonra vaktin olunca düzeltirsin

  28. Yusuf dedi ki:

    Şematik çizimleri hangi programla yapıyorsunuz

  29. Abdullah dedi ki:

    İyi günler benim elimde leadshine m415b step sürücü ve nema 17 motor var.Arduino uno ile sürmek istiyorum ama internette bağlantıları ve örnek kodunu bulamıyorum yardımcı olursanız sevinirim
    teşekkürler

  30. barış dedi ki:

    Merhaba ben aynı anda iki tane step motoru zıt yönlerde çevirmek istiyorum bunun için kodlarda ve bağlantılarda ne gibi değişiklikler yapmam gerekiyor?

    • Ömer Koman dedi ki:

      yazıdaki manyetik hareket ve şekilleri anlamamışınız demekki yapılan maotor sargılarına sırası ile elektrik vermek aslında. kopyala yapıştırdan ziyade neden nasıl yapılırı da merak etmek lazım. arduino kültürü bunu gerektirir.
      yazıdaki loop kısmında yazılanlar bir yöne dönüşü sağlar yukarıdan aşağı yazılanlar bir yöne dönüş akımlarını düzenenler aşağıdan yukarı yazarsan ters yönde hareket sağlarsın.

  31. Semih Akbas dedi ki:

    Merhaba,

    Volkan Bey öncelikle faydalı makaleniz için çok teşekkürler.
    Arduino ve stepper motor konusunda yeni olduğum için sorum basit gelebilir. Bu örnekte stepper motorun her delay öncesinde 1 adım (yani 400 adımlı motor için 0.9 derece) ilerlediğini söyleyebiliriz değil mi? Bu durumda kafamı karıştıran konu şu; motor sadece 2 yöne hareket edebildiğine göre neden 4 adet input pin’i bulunuyor 2 adet pin yeterli değil midir, 4 pin olması nasıl bir özellik sağlıyor motora?

    Teşekkürler,

    • Ömer Koman dedi ki:

      ilkokullarda eskiden bi deney yapardık bir çivinin etrafını telle sarar bobin yapardık sonra bu bobine pille voltaj verinde demir çivi mıknatıslanır ve masadaki küçük çivi ve toplu iğneleri toplardık şimdi o deneyler pek yapılmıyor okullarda sanırım. motorda kullanılan ve yukarıdaki resimden de anlaşıldığı gibi en az 4 bobin motorun çevresinde sarılıdır, her bobin seri olarak bir birine bağlıdır ve her bobinin kesişim noktalarından da ek çıkış verilmiştir. bu sargılara elektrik verilerek oluşturulan akımla motor dairesel olarak hareket ettirilir.

  32. eren dedi ki:

    28 BYJ-48 redüktörlü step motor ve ULN2003A step motor sürücü kartı kullanıyorum.
    motoru çalıştırdım sorun yok ama gücü kesip bağladığımda kaldığı yerden tam tur atıyor. Benim istediğim 360 derece dönerken 300 derecede gücü açıp kapattığımda tekrar 60 derecesini tamamlaması ve sisteme devam etmesi. Bunu nasıl yapabilirim

    • Ömer Koman dedi ki:

      yazılım her başladığında motoru başlangıç noktasına getirmeye çalışıyordur. kodun başındaki resetleme başa döndürmeyi iptal edersen olur. ileride karışıklık olmaması için epromada o andaki adım sayısını kaydedersen iyi olur istemediğin bir yerde elektrik kesilirse ne kadar gideceğini bilemezsizn senkronizasayon kaybolur. diyelim kalan 60 adımdan 20. adımda elektrik gitse tekrar açtığında 60 adım atmaya kalkarsan bu sefer 20 adım dazla fazla gelecek filan.

  33. aydın dedi ki:

    4,5 veya 6 ayaklı step motorlar arasındaki fark nedir hangisi daha hassastır hangisini neye göre tercih etmeliyiz bununla ilgili bilgi verebilirseniz sevinirim

  34. Huseyin dedi ki:

    Herkese merhabalar. 10 ila 50 step motoru tek bir surucu ile surmek istiyorum. buton a 1 sefer basinca hepsi tam tur dönüp duracak. Butonu biraktigimda degil bastigimda calismasi lazim. Ve tekrar buton dan bilgi girisini en az 10dk sonra kabul etmesi lazim. Kullanmam gereken tum malzemeler i ve kodunu yazabilirseniz cok dua ederim..

  35. jacksparrowia dedi ki:

    arkadaşlar bizim oğlana sallanan beşik yapacağım ve aşağıdaki kodları kullanmayı düşünüyorum malzemeler elimde sadece kontrolü için yardım istiyorum

    int motorPin1 = 8;
    int motorPin2 = 9;
    int motorPin3 = 10;
    int motorPin4 = 11;
    int delayTime = 500;

    void setup() {
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);
    }

    void loop() {
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(delayTime);

    }

    sürekli 90 derecede ileri geri gitmesini istiyorum fakat dc motor ile yapmadım bu işi hızını kontrol etmek için bir potansiyometre bağlanabilirmi bağlanırsa kodlar nasıl olacak ya da sadece kodlarla beşiğin sallanma hızı ile oynayabilirmiyim. ya da girişe anahtar eklesem anahtara her bastığımda farklı hız aralılarına geçse böyle bir sistemi nasıl kurarım (kodları nasıl yaparım) yardımcı olursanız sevinirim. sabaha kadar beşik sallamaktan canım çıktı :))

    • Ömer Koman dedi ki:

      forumdan sorarsanız daha çabuk sonuca gidebilirsiniz. bence önce bir motoru çalıştırın hızını da ayarlarsınız

  36. ayse dedi ki:

    merabalar, bu projeyi yapmak istiyorum .projenin orjinal kodunu paylaşabilir misiniz

    • Ömer Koman dedi ki:

      yazıda belirtilen kodu arduino IDE ye kopyalaıp çalıştırabilirsiniz. yeteri kadar orjinaldir. volkan arkaaşımız arduino konusunda uzmandır yazdığı kodda sorun yoktur.

  37. Deniz dedi ki:

    Çok değerli bilgiler için teşekkürler. Benim bir sorum olacak . Bir proje için bir step motoru her 10 saniyede bir diğer yöne çalıştıracak ve torkunu ayarlayabileceğimiz bir sürücü yapılabilir mi? Basit bir çırpıcı şeklinde bir kimyasal karıştırıcı olarak kullanılacak. Tek isteğimiz bu sürücünün bunu otomatik yapabilmesi. Yurtdışı sitelerde LCD panelli olanları var ancak ülkemizde maalesef son kullanıcıya hitap edecek şekilde tasarlayabilen bir firma ya da site yok maalesef. Ya Elektronik Mühendisi ya da yazılımcı olmak şart. Teşekkür ederim. Bir link örneği : http://www.robotshop.com/en/stepduino-arduino-stepper-motor-controller.html

    • Ömer Koman dedi ki:

      tr de proje ve iş yaptıranlar da yeteri kadar mühendisin emeğine değer biçemediği için yapılan işler hep kısa süreli ve kalitesiz oluyor yada bitmiyor ve bıkkınlık oluşuyor işler ölüyor. motor sürücüye gelince karıştırma işleminde kullanılacak motoru önce bilmek gerekiyor. kullanılacak mootorun tipine göre sürücü seçmek veya tasarlamak lazım. verdiğiniz linkteki step motor sürücü 1.9A akım sürebiliyor seçtiğiniz motorun özellikleri buna uygun olması lazım

      • Deniz dedi ki:

        Ömer bey teşekkür ederim. Emeğin sömürülmesi konusunda haklısınız. Ancak emekçi emekçiye durumu benzer yaşatınca duygusal olarak bozuluyoruz. Son soru olarak kullanacağımız motor Nema 23 bipolar. 1.9A dediğiniz için çalıştıracağını düşünmüyorum , Peki, Arduino UNO R3 (Yeni Versiyon) ve Arduino Motor Shield Rev3 ile birlikte bu motora istediğimiz hakimiyeti sağlayabilir miyiz aşağıdaki program ile?
        #include

        const int stepsPerRevolution = 40; // change this to fit the number of steps per revolution
        // for your motor

        // initialize the stepper library on the motor shield
        Stepper myStepper(stepsPerRevolution,12,13);

        // give the motor control pins names:
        const int pwmA = 3;
        const int pwmB = 11;
        const int brakeA = 9;
        const int brakeB = 8;

        int previous = 0;

        void setup() {
        Serial.begin(9600);
        // set the PWM and brake pins so that the direction pins // can be used to control the motor:
        pinMode(pwmA, OUTPUT);
        pinMode(pwmB, OUTPUT);
        pinMode(brakeA, OUTPUT);
        pinMode(brakeB, OUTPUT);
        digitalWrite(pwmA, HIGH);
        digitalWrite(pwmB, HIGH);
        digitalWrite(brakeA, LOW);
        digitalWrite(brakeB, LOW);
        // initialize the serial port:
        Serial.begin(9600);
        // set the motor speed (for multiple steps only):
        //myStepper.setSpeed(500);
        }

        void loop() {

        //Get Motor up to 500 speed and turn 500 times / Total turns 2030
        myStepper.setSpeed(400);
        myStepper.step(30);
        myStepper.setSpeed(500);
        myStepper.step(2000);
        //Slow Motor down and stop
        myStepper.setSpeed(300);
        myStepper.step(10);
        myStepper.setSpeed(200);
        myStepper.step(10);
        myStepper.setSpeed(100);
        myStepper.step(10);
        delay(1000);

        //Get Motor up to 500 speed and turn 500 times / Total turns 2030
        myStepper.setSpeed(400);
        myStepper.step(-30);
        myStepper.setSpeed(500);
        myStepper.step(-2000);
        //Slow Motor down and stop
        myStepper.setSpeed(300);
        myStepper.step(-10);
        myStepper.setSpeed(200);
        myStepper.step(-10);
        myStepper.setSpeed(100);
        myStepper.step(-10);
        delay(1000);

        }

        • Deniz dedi ki:

          Diğer husus ise, sizin gibi yardımsever insanları daha fazla cahilliğimizle yormamak için aşağıdaki linke benzer Türkçe anlatımlı sitelerimiz mevcut mudur? Daha doğrusu programlama kısmı haricinde bir nebze plug&play tarzı güzel anlatımı olan.

        • Ömer Koman dedi ki:

          nema23 motorun 1A den başlayp 3A kadar modeli var 2A lik modeli ise yukarıda verdiğiniz linkteki driver ile çalışması lazım motorların beslemesini ayrı kaynaktan beslemek lazım. tam anlatımlı siteler turkçe olarak bulmak zor. tek tuk bazı projeler için detaylı fotoğraflı sitelere denk geliyor ama kaydını tutmuyorum. siz en iyisi googledan arduino+”aradığınız özellik” şeklinde aratın işe yarar şeyler mutlaka gelir. bizde öyle yapıyoruz çoğu zaman

  38. onur dedi ki:

    Abi ben step motoru mm olarak dondurmek istiyorum gerekli kod ve semayi verir misiniz pic le olursa da sevinirim…

    • Ömer Koman dedi ki:

      yardım etmeye çalıştığımız projelerde insanlarda bir çaba görmek isteriz sıfırdan bir proje başlatamayız buna vaktimiz yok burada gerekli konuları paylaşıyoruz fazlasıysla, buradan faydalanıp ilerletip takılan olursa bildiklerimiz anlatıyoruz. şu videoyu bir izleyin https://www.youtube.com/watch?v=QHe_KwMH_SU

  39. Burak Güneş dedi ki:

    merhaba ömer bey ben ankaradan yazıyorum yazıyla alakalı degil ama sizin bilginize ihtiyacım var benim bir maket projem var. arduino yeni tanıştım kendim elektronik mezunuyum ancak yazılımla simdiye kadar hiç uğraşmadım. benim sizden istegim şu ben arduino mega ile 50 adet ledin bilgisaya ile ayrı ayrı konturol etmek istiyorum. 1 tanesini yaptım ama 50 cıkışıda kullanmam gerekiyor ama ne kadar uğraştıysam bir türlü yapamadım. bana yardımcı olurmusunuz.

    • Ömer Koman dedi ki:

      foruma gelin yapmış denemiş olan vardır. birileri cevap verir merak etmeyin ama siz en azında 5-10 tanesini bağlamaya çalışın. öyle gelin. örnekler zaten basit.

  40. kadir dedi ki:

    merhaba step motor kutuphanesindeki orneği yukleyip çalıştırdığımda motor saat yonunde donuyor fakat saat yonunun tersine donmuyor yine aynı yonde donuyor.Bunun nedeni motordan veya surucudenmi olabilir yardımcı olursanız sevinirim..

    • Ömer Koman dedi ki:

      sıralamayı değiştirin tersten döner
      ben yukarıdaki kodu aşağıya koydum adımları 1-2-3-4 diye not olarak yazdım.
      tersten donmesi için aşağıdaki adım kodlarını tekrar 4-3-2-1 şeklinde sıralayın çalışır.

      void loop() {
      //adım1
      digitalWrite(motorPin1, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin4, LOW);
      delay(delayTime);
      //adim2
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin4, LOW);
      delay(delayTime);
      //adim3
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin4, LOW);
      delay(delayTime);
      //adim4
      digitalWrite(motorPin1, LOW);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, LOW);
      digitalWrite(motorPin4, HIGH);
      delay(delayTime);
      }

  41. Gürkan dedi ki:

    Ömer bey merhabalar ben devreyi kurdum çalıştırdımbutona basınca 1.butona basınca saat yönüne 2. butona basınca saat yönünün tersine çalıştırıyorum sıkıntı yok Sorum şu; BEN BUTONA BİRKERE BASTIĞIMDA MOTOR Örng; 8 tur atsın dursun böylelikle 6 buton bağlayacağım ve her butona ayrı bir tur sayısı vereceğim hangi butona basarsam motor ookadar adım gidecek bununla ilgili denemeler yaptım lakın olmadı birkere bastığımda gidece tur kadar gidip durmasını nasıl yaparım (PLC Yazılımcısıyım normalde ama arduino yazılımı farklı) yardımcı olursanız seviniirm

  42. Ömer Koman dedi ki:

    bir kere motorun bir başlangıç noktası olacaksa oraya bir switch koyup o switch tetiklendiğinde durup beklemesi lazım onu sağlayın daha sonra başlangıçtan itibaren motorun kaç adaımda tur attığını bir sayın yukarıdaki kodda he adımda sayan bir sayaç koyun. daha sonrası kolay 8 tur atacaksa 8 x (turda sayılan adım kadar gideceksin)

    • Gürkan dedi ki:

      Ömer Bey tekrar merhaba sayaç kullanıyla ilgili bir örnek verebilirmiisniz rica etsem

      • Ömer Koman dedi ki:

        //bu değişkenleri en başta tanımla
        int adimsay=0;
        int tursay=0;
        int tursonu=8;

        en yukarıdaki rutinde her adımda aşağıdakileri yazın her adımda kontrol yapman lazım . aşağıdakileri altporgram olarak yazıp her adımda bir kez de çağırabilirsin de ben sizin sayac tanımlayamamanızı anlayamadım program yazmayı biliyormusunuz?

        adimsay=adimsay+1;
        if( adimsay>= 48 )// 48 i salladım siz bunu sayıp belirleyeceksiniz
        {
        tursay=tursay+1;
        if(tursay>=tursonu){
        adimsay=0; tursay=0;
        //burada rutinden çık veya bekle veya bişe yap
        }
        }

  43. Gürkan dedi ki:

    Ömer bey Program dilini daha önce kullanmadım PLC programlama dili farklı ve bununla ilgili bir anlatım yok sayaç kullanımı ile ilgili hiçbir bilgi yok doğru dürüst

  44. Gürkan dedi ki:

    tanımlamayı biliyorum temel olan devrelerin hepsini yaptım (led ,buton,potans ,dc motor,lcd ekran,ama temel bilgilerde tur ve pulse ile ilgili örnekleme hiç yok

  45. Gürkan dedi ki:

    int button_1 = 2;
    int button_2 = 3;
    int motorPin1 = 8;
    int motorPin2 = 9;
    int motorPin3 = 10;
    int motorPin4 = 11;

    int motor_Speed = 78;
    int motor_Step = 50 ;
    int val1 = 0;
    int val2 = 0;
    int adimsay=0;
    int tursay=0;
    int tursonu=100;

    void setup() {
    pinMode(button_1, INPUT);
    pinMode(button_2, INPUT);
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);

    }

    void loop() {

    val1 = digitalRead(button_1);
    if (val1 == HIGH)
    {
    adimsay=adimsay+1;
    if( adimsay>= 100 )// 48 i salladım siz bunu sayıp belirleyeceksiniz
    {
    tursay=tursay+1;
    if(tursay>=tursonu){
    adimsay=0; tursay=0;
    if (val1== LOW){
    }
    }
    digitalWrite(13, HIGH);
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(motor_Step);
    delay(motor_Speed);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, LOW);
    delay(motor_Step);
    delay(motor_Speed);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH);
    digitalWrite(motorPin4, LOW);
    delay(motor_Step);
    delay(motor_Speed);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin4, HIGH);
    delay(motor_Step);
    delay(motor_Speed);
    }

    }

    val2 = digitalRead(button_2);
    if (val2 == HIGH)

    {
    digitalWrite(13, HIGH);
    digitalWrite(motorPin4, HIGH);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin1, LOW);
    delay(motor_Speed);
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin3, HIGH);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin1, LOW);
    delay(motor_Speed);
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin2, HIGH);
    digitalWrite(motorPin1, LOW);
    delay(motor_Speed);
    digitalWrite(motorPin4, LOW);
    digitalWrite(motorPin3, LOW);
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin1, HIGH);
    delay(motor_Speed);
    }
    }

    Yukarda uygualadığ yazılımda tur sayısına göre motorun durması gerek ama birtürlü motor butona birkere bastığımda o tura gelene kadar devam etmiyor butondan parmağımı çekince motorda duruyor nasıl olur bu iş yardımcı olacak bir arkadaş varmı

    • Ömer Koman dedi ki:

      yazdığınız kod sadece butona bastığı zaman çalışacak şekilde yazmışsınız. şöyle düşünün butona bastınız hareket yonunu ve turunu bir değişkene koyun ve hareket başlasın benim verdiğim rutin her adım için yazılacak siz sadece bir step için yazmışsınız bir step bir tur olmaz. foruma da yazın kodu geliştirecek biri çıkar.

    • ahmet dedi ki:

      Hocam aynı projeyi bende yapacağım bittikten sonra paylaşırmısınız.

  46. Zeynal Abidin dedi ki:

    Selam Hocam, öncellikle paylaştığınız kod için çok teşekkür ederim, bu kodu 28BYJ-48
    5v Dc stepper motor için kulladığımda motor sürekli dönüyor, sadece bir tur dönmesini nasıl sağlayabilirim?

  47. yusuf dedi ki:

    slm ömer bey ben bir prpje yapmak istiyorum arduino uno step motoru ve yağmur sensörü kullanmak istiyorum. yağmur yağdığında çamaşırı toplayan bir sistem yapmayı planlıyorum. elamanları sipariş verdim bu gün yarın elime ulaşır fakat ben ardiuno hakkında bir haftadadır araştırma yapıyorum. araştırdığım kadar bilgiye sahibim hiç bir deneyimim yok bana yardımcı olursanız sevinirim.

    • Ömer Koman dedi ki:

      sitede tepede arduinoya giriş yazılarını bir gözden geçir yol haritası yazımı ve temel bağlantılar yazısını gözden bir geçir incele. piyasadaki türkçe kitaplardan birini almanı tavsiye ederim coşkun taşdemir in kitapları iyidir. ilerledikçe takılıldıkça foruma gel sor bakarız icabına…

  48. Semih dedi ki:

    Sürücü kartsız 5v bir stepper motor u arduino uno ile çalıştıramaz mıyız ? eğer ki çalıştıramıyor isek ULN2003AN entegresi sadece bu iş için tasarlanmış bir entegre mi yani dükkandan ULN2003AN aldığımda ona hiçbir işlem yapmadan direk bağlayacağım öyle mi ?

    • Ömer Koman dedi ki:

      arduino çıkışı en fazla 20ma akım verebilir step motor sargıları ise gücüne göre 200ma-500ma-1A gibi akımlar çeker. bu akımları sürmek için arada bir sürücü transistöre gerek duyulur uln2003 aslında içinde bir çok transistör olan bir sürücü entegre sadece motor değil akıtılacak akıma göre selenoid veya motor veya power led gibi yukleri surmeye de yarar. uln2003 aldıktan sonra bunların bağlanma şekillerini şemalarını dikkate almalısın.
      ama istersen cep telefonlarındaki titreşim motorlarını(nohut kadar bişeydir) direk ardino ile sürebilirsin onlar fazla akım çekmez bir arduino pinine bağlar kullanırsın. elektronikte kurallar vardır hiç birşey hiç bir malzeme luzumsuz yere kullanılmaz mutlaka gereklidir. sırf masraf olsun diye malzeme veya shield veya sürücü kullanılmaz.

      • Semih dedi ki:

        Bir makine mühendisi adayı olarak elektronikten pek fazla anlamam. Harika açıkladınız. Teşekkürlerimi sunuyorum..

  49. sultan dedi ki:

    Merhaba benim mesajı okumak için grup ve program montaj Üzgünüm, “Ben Türkiye’de gurbetçi ikamet, ben teşekkür ederim Alardino satın açısından size yardımcı olmak gerekiyor, mesaj metni smelters yazılı olarak bazı hatalar olabilir bana Alatram kabul
    Muhammed Sultan

  50. Semih dedi ki:

    Hocam haftalardır uğraşıyorum L298, ULN2003, ULN2803 entegrelerini denedim elimdeki bipolar(bipolar mı değil mi pek anlamam ama öyle olduğunu tahmin ediyorum. 5 kablolu ancak kablolardan bir tanesi yüzeyden geliyor sargıların arasından değil. o yüzden gnd a bağlamam gerektiğini düşündüm.) 5v motoru çalıştıramadım. Ancak herhangi bir entegre kullanmadan arduinoya direk bağladığımda çalışıyor. Böyle kullanmaya devam etmem arduino ya zarar verir mi?

  51. ahmet dedi ki:

    Ömer KOMAN hocam bu en baştaki kodlar ile step motor 1 tur atıyo ve sürekli devam ediyo mu?

  52. Ömer Koman dedi ki:

    loop içine yazılan herşey tekrar edilir kodun içindeki sıralama bir tur atmayı sağlar sonra loop başa döner tekrar tekrar tur atmaya devam eder.

  53. AHMET dedi ki:

    Hocam peki bu kodları herhangi bir sürücüye denesek örneğin TB6560-v2.0 bir sıkıntı ?

  54. samed dedi ki:

    Step motorun beslemesini nerden yapıyoruz. 4 bacağını resimdeki gibi bağladım arkadaki kırmızı kabloyu anlamadım . Teşekkürler

  55. Ömer Koman dedi ki:

    genel kural olarak kırmızı kablo +v dır veya besleme kablosudur. burada kırmızı kablo +5v a bağlanmıştır. breadboard ustunda kırmızıyı takıp etsenız 5v a gıttığı anlaşılıyor…

  56. mecnun dedi ki:

    hocam peki ben bir projemde step motorun kontrolü ile bir plakayı yaklaşık olarak 5 derece 10 derece döndürmek istiyorum kendi kontrolümde olacak şekilde bunu adım sayısı ile yapmam gerekiyor bunu sadece kod kısmını biraz değiştirerek yapabilir miyim yoksa başka yöntemi var mı ya da tavsiyeniz teşekkürler şimdiden.

    • Ömer Koman dedi ki:

      yukarda her adımı bir kere say kaç adım lazımsa hafızada tut yada programda koda işle. en başta da x=0 ve y=0 noktasına kadar motorları geri çek. eskiden yazıcılar ilk açtığında bir kafa sallardı yada ploterler hala oyle başlangıç noktasına kafayı getirir yoksa referansın kayarsa saçma yerlere döner motorlar, başlangıç noktalarına da 2 tane switch koyup oku işi sağlama al derim.

      • ferit dedi ki:

        hocam ben 3 tane aynı step motoru ayrı sürücüleriyle birlikte arduino ile sürdüm fakat 3 motora da aynı işlemleri uygulamama aynı konumda başlatıyorum fakat durduğunda 3 ü aynı konumda olmuyor az bi konum farkları ortaya çıkıyor bunun sebebi ne olabilir ve çözüm için ne önerirsiniz.

        • Ömer Koman dedi ki:

          her motoru ayrı ayrı başlatın biri bitince diğerine gecin. aynı anda başlatınca aynı anda durduramayabilirsiniz.

  57. Mustafa SEÇKİN dedi ki:

    Merhaba Ömer Koman,

    Yukarıdaki belittiğiniz uygulamayı proje ödevi olarak düşüyorum.
    Projemde yukarıdaki gibi yapmam için hangi model arduino ve motor kullanmam gerekiyor.
    ULN2003AN bunu nerden temin etmem gerekiyor ve diğer elemanları ?
    Yardım ederseniz sevinirim.

  58. Taha dedi ki:

    neden yeni yazı gelmiyor ???

    • Ömer Koman dedi ki:

      yazarlarımız yaşlandı işe güce çoluk çocuğa karıştılar ben de merak ediyorum (kendim dahil) neden yazmıyorlar. Ben temel konularda yazdım onlarda bayağı azaldı proje yazmmak için o projeyi yapıp özgün şekilde yazmayı seviyorduk buna da sanırım bütçe ve donanım tedariki engel oluyor. Biraz tercume ve hazır projeleri gundeme getırelibiliriz önümdeki aydan itibaren, bir de eskisi gibi seminer yapmayı planladık bu yıl dolmadan. görüşürüz..

  59. Serhat dedi ki:

    Merhaba Ömer bey forum kapalı olduğu için buradan soruyorum kusura bakmayın
    arduino seri haberleşme kesmesi kodlarını biliyormusunuz.

  60. Taha dedi ki:

    bi kaç yazar alın o zaman

  61. yusuf dedi ki:

    hocam arduinoyu nasıl türkçe yapabilirim?

    • Ömer Koman dedi ki:

      hangi dili kurdun zaten menude 4 tane laf turkçe olsa ne olacak? bu teknoleojileri biz geliştirmiyoruz en azından ingilizceyi öğrenmeye gayret edelim teknoloji dili ingilizce oldu artık. çözümün şu; file menusune girip preferences kısmında editor language kısmında hangi dille çalışacaksan onu seçeceksin daha sonra arduinoyu yenıden başlattığında menudeki 4 tane laf seçtiğin dilde gelir.

  62. Taha dedi ki:

    arduino ya yazılım yüklediğim yer var ya sayfa orası Türkçe yani file falan yazmıyor direkt Türkçe ayarlar falan yazıyo sorun olur mu?

    • Ömer Koman dedi ki:

      nereyi kastettiğinizi anlamadım foruma gelip yazın resim paylaşın. bazı menuler işletim sisteminden gelir dosya açma gibi mesela o formlarda işletim sistminizin dili neyse o şekilde gelir. siz bence arduino kodlamaya odakanın daha başınıza neler gelecek bunlar sıradan gelecek ileride size…

  63. ömer can dedi ki:

    bir ardunio uno ile kaç tane motor kontol edebilirim ve nasıl ?

    • Ömer Koman dedi ki:

      foruma gel yapan çok var. servo olarak 6 tane surersin ama normal dc motorsa 14 tane filan suren var sanırım, ama bu çok izafidir bu. sana kaç motor lazım ne tip motorlar sureceksin servo harici motorlar ıcın genelde motor surucu eklentısı takılır o zaman neredeyse 30-40 tane bağlanır işe ve projeye gore cok seçenek var.

  64. Serkan YILDIRIM dedi ki:

    Merhaba, ne zaman step motor kontrolü ile ilgili araştırma yapsam yerli ve yabancı kaynakların genelinde step motoru 1 sn sağa 1 sn sola döndürme projeleri var. Adamlar plotter,cnc,printer yapıyor. Ben mesela her bir step motoru bir pompa gibi kullanmak istiyorum. Genel işleyiş mantığı kokteyl hazırlama robotu gibi. buton 1 e basayım, bir kaç motor aynı anda ya da sırayla belirli işlemleri yapsın. Ama olmuyor. Bilgiler ya bahsettiğim gibi sağa sola dön ya da belirli bir şekle göre gcode üretimi halinde. İstediğim gibi, (hız,step,ayrı motorlar,lcd) kontrol edebilmek istiyorum. Ne önerirsiniz kaynak olarak ?

  65. hocam bn step motorla ultra sonic mesafe sönsörü ile kontrol etmek istiyorum ama bir türlü yapamadım diyelimki motor donuyor sensöre elimi 5 cm yaklastırdımda durup geriye dönmesini istiyorum ama birtürlü başaramadım

    • Ömer Koman dedi ki:

      önce sensor mesafesini ölç sonra motor hareketini yap. sensorde mesafe kritik kalınca motoru durdur sonra yön tayini yap. foruma gel gerekirse programı oraya koy yardım eden olacaktır.

  66. utku dedi ki:

    çizgi izleyen robot için arduino kodlarını yazamadım robot için kod atarmisinız.

  67. Hanifi dedi ki:

    Step motoru arduino’nun 5v çıkışı ile beslediğim de sağlıklı bir dönüş alamadım. Bu yüzden step motor için harici bir güç kaynağı kullandım. Sizde de öyle oldu mu acaba?

  68. orhan dedi ki:

    Merhaba cnc shield e drv885 ters takılı halde enerji verilrse drv8825 ve cnc shield yanarmı acaba
    teşekkürler

    • Ömer Koman dedi ki:

      yandı mı da soruyorsun yoksa yakmaya mı niyetin var? yanması birazda nasıl ters bağladığına bağlı komple bilgisayarın usb si dahil herşeyin yanması da mümkün hiç bir şeyin yanmaması da mumkun. çalışmıyorsa entegresini bir telefon tamircisine soktur yenisini tak yada yeni sürücü ile değiştir.

  69. baha dedi ki:

    Abi öncelikle merhaba ben 3 adet cny70 ( devre kurmadan direkt kullanarak) ve L293D motor shield kullanarak çizgi izleyen robot yapmak istiyorum ama bir turlu yazilim konusunu basaramiyorum shield kutuphaneaini kurdum ama karisik geldi bana bir turlu kodlari yazamiyorum bilen arkadaslardan yardim istiyorum nasil yazabilirim yada yazan olursa verebilirmi fakat cny70 leri kuloanirkan bir entegrw falan kullanmada direkt ucunu analog cikislardan vererek bir de unutmusum ARDUİNO ile lutfennn yardim eder misiniz!!!! Abi

    • Ömer Koman dedi ki:

      özelden proje alamıyorum. siz forumdan konuyu açın oldugu kadar yardım gelirse olur, forumda mevcut konuların altına girmeyın ana konu açarak sorun. bu işlerde aciliyet oldumu işler hep karmaşaya suruklenıyor bu durumlarda panik yapmadan işi kucuk bloklara ayrın ve bunları çalıştırarak ilerleyin. çalışmayan kod parçacıklarını sorun programınızdak ibloklar bittikçe proje çok daha sağlıklı olacaktır. hep derim arduino basittir ama kolay değildir.

      • baha dedi ki:

        Değerli yorumunuz için çok teşekkur ederim dediğiniz gibi denemeye başladım baya yararı oldu çok tesekkur ederim.

  70. eyüp dedi ki:

    biz ardino kontrollü c# ile kodlayarak step kontrollü motor yapmak istiyoruz.bilgisayara bağlayarak kontrolünü ordan yapmamız lazım yardımcı olabilirmisiniz.yada satın alabilirmiyiz yardım edin…

    • Ömer Koman dedi ki:

      sitemiz ticari aracılık yapmamaktadır. kodunuzu foruma koyun yapamadıgınız yeri sorun daha kolay sizin için.

  71. Ceyda Özel dedi ki:

    İyi günler.Hava basıncını ölcen bir sensör tasarlıyorum ama eksiklerim var kodlarda.Yardımcı olabilirseniz cok memnun olurum.İşlemci aduc842 sensör bmp180 i2c fonksiyonlu.Kodlar aşagıdakı gibi ama okunan değerin lcd de görülmesi gereken yerler eksik.Şimdiden teşekkür ederim.
    ORG 0000H
    SJMP MAIN
    ORG 0003H
    LJMP EX0ISR

    MAIN:

    MOV IE,#81H
    ;—————LCD 8-BİT———-
    ;LCD’NİN MİKROİŞLEMCİ BAĞLANTILARI

    E EQU P3.7 ; PIN 6 ENABLE
    RW EQU P3.6 ;
    RS EQU P3.5 ;/REGİSTER SELECT
    DATA EQU P2 ; DATA LİNES

    ;———————————————————-

    ;———————————————————-

    GO:
    GO2: LCALL ADC_AL
    LCALL LCD_RESET
    LCALL LCD_YAZ2
    SJMP GO2

    ;———————LİMİTLERİ_AL————————–
    ;KULLANILANLAR=R0,R5,R2,P1

    UPDOWNLIMIT: MOV R0,#50H
    MOV R5,#00H
    MOV P2,#00H

    SCAN:
    SATIR1:MOV P1,#11111110B
    JNB P1.5, BIR
    JNB P1.6, IKI
    JNB P1.7, UC

    SATIR2:MOV P1,#11111101B
    JNB P1.5, DORT
    JNB P1.6, BES
    JNB P1.7, ALTI

    SATIR3:MOV P1,#11111011B
    JNB P1.5, YEDI
    JNB P1.6, ARASEKIZ
    JNB P1.7, ARADOKUZ

    SATIR4:MOV P1,#11110111B
    JNB P1.6,SIFIR
    SJMP SCAN

    ARADOKUZ:LJMP DOKUZ
    ARASEKIZ:LJMP SEKIZ

    SIFIR:
    MOV P2,#03FH;—-0—-
    MOV R2,#0
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    LJMP GIRISKONTROL

    BIR:
    MOV P2,#006H
    MOV R2,#1
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    LJMP GIRISKONTROL
    IKI:
    MOV P2,#05BH
    MOV R2,#2
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL
    UC:
    MOV P2,#04FH
    MOV R2,#3
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL
    DORT:
    MOV P2,#066H
    MOV R2,#4
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL

    BES:
    MOV P2,#06DH
    MOV R2,#5
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL
    ALTI:
    MOV P2,#07DH
    MOV R2,#6
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL
    YEDI:
    MOV P2,#007H
    MOV R2,#7
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL

    SEKIZ:
    MOV P2,#07FH
    MOV R2,#8
    INC R5
    CALL YAZ
    CALL BİRSANİYE
    SJMP GIRISKONTROL

    DOKUZ:
    MOV P2,#06FH
    MOV R2,#9
    INC R5
    CALL YAZ
    CALL BİRSANİYE

    SJMP GIRISKONTROL

    GIRISKONTROL2:LJMP SCAN
    GIRISKONTROL:
    CJNE R5,#04H,GIRISKONTROL2
    MOV R0,#50H
    RET

    ;————-OKU——————
    ;Buraya sensör okuma kodları gelecek ???

    ;———-LCD_YAZ————–
    ;KULLANILANLAR=50H,51H,52H,53H,54H,55H,56H

    LCD_YAZ1:

    LCALL BİRİNCİSATİR

    LCD_YAZ2:
    LCALL İKİNCİSATİR

    MOV A,#’B’
    LCALL DATAGONDER
    MOV A,#’A’
    LCALL DATAGONDER
    MOV A,#’S’
    LCALL DATAGONDER
    MOV A,#’I’
    LCALL DATAGONDER
    MOV A,#’N’
    LCALL DATAGONDER
    MOV A,#’C’
    LCALL DATAGONDER
    MOV A,#’=’
    LCALL DATAGONDER

    MOV A,54H
    ADD A,#48
    LCALL DATAGONDER
    MOV A,55H
    ADD A,#48
    LCALL DATAGONDER
    MOV A,56H
    ADD A,#48
    LCALL DATAGONDER
    RET
    ;————YAZ———————–
    ;KULLANILANLAR=50H,51H,52H,53H,60H,61H

    YAZ: MOV A,R2
    MOV @R0,A
    INC R0
    CJNE R0,#54H,YAZ1

    MOV A,50H
    MOV B,#10
    MUL AB
    ADD A,51H
    MOV 60H,A

    MOV A,52H
    MOV B,#10
    MUL AB
    ADD A,53H
    MOV 61H,A

    YAZ1: RET

    ;———–BİRSANİYE—————-
    ;KULLANILANLAR=R3,T0

    BİRSANİYE:MOV TMOD,#01H
    MOV R3,#100
    LOOP:MOV TH0,#(-10000)
    MOV TL0,#(-10000)
    SETB TR0
    JNB TF0,$
    CLR TF0
    CLR TR0
    DJNZ R3,LOOP
    RET

    ;———–LCD FONKİSYONLARI———–
    ;KULLANILANLAR=DATA(P2),RS,RW,E,R6,R4

    LCD_RESET:

    MOV DATA,#38H
    CLR RS
    LCALL CLOCK
    LCALL DELAY
    MOV DATA,#38H

    CLR RS
    LCALL CLOCK
    LCALL DELAY
    MOV DATA,#38H
    CLR RS
    LCALL CLOCK
    LCALL DELAY
    MOV DATA,#3CH ;LCD FONKSİYONU SEÇME

    CLR RS
    LCALL CLOCK
    LCALL DELAY
    MOV DATA,#0CH

    CLR RS
    LCALL CLOCK
    LCALL DELAY

    MOV DATA,#06H
    CLR RS
    LCALL DELAY
    LCALL CLOCK
    RET

    LCD_RESET2:MOV DATA,#01H
    CLR RS
    LCALL CLOCK
    LCALL DELAY
    RET

    DATAGONDER:MOV DATA,A
    SETB RS
    LCALL CLOCK
    LCALL DELAY
    RET

    BİRİNCİSATİR:MOV DATA,#128
    CLR RS
    LCALL CLOCK
    RET

    İKİNCİSATİR:MOV DATA,#192
    CLR RS
    LCALL CLOCK
    RET

    CLOCK: CLR RW
    CLR E
    LCALL CLOCK2
    SETB E
    LCALL CLOCK2
    CLR E
    LCALL CLOCK2
    RET

    CLOCK2: MOV R6,#10
    DON: NOP
    NOP
    NOP
    NOP
    NOP
    DJNZ R6,DON
    RET

    DELAY: MOV R4,#5
    MOV TMOD,#01H
    DONG2: MOV TH0,#HIGH(-10000)
    MOV TL0,#LOW(-10000)
    SETB TR0
    JNB TF0,$
    CLR TF0
    CLR TR0
    DJNZ R4,DONG2
    RET

    EX0ISR:
    ACALL LCD_RESET2
    LCALL UPDOWNLIMIT
    LCALL ADC_AL
    LCALL KARSİLASTİR
    LCALL LCD_RESET
    LCALL LCD_YAZ1
    RETI

    • Ömer Koman dedi ki:

      size oncelikle yazının konusu ile alakasız bir kodu buraya koyarak bizi nasıl bahtiyar ettiniz anlatamam. buraya step motor için gelenleri de ayrıca şaşırttığınız içinde teşekkürü borç biliriz. kızım senın bu yazdığın kodun arduino ile ne alakası var yarısı assemler yarısı picbasic gibi bir şey sen nereden geldin böyle şaşkın şey. foruma gel sor. hey alllahım yaa seçip seçip yolluyorsun bunları siteye sabrımı mı deniyorsun anlamadım…

  72. ceyda dedi ki:

    Yanlış yere yazdığım için öncelikle özür dilerim.foruma yazmasını ben de biliyorum ama yanlıslık olmus herkes hata yapabilir ama bu sekilde konuşmanız da gerekmez.Neyse rahatsızlık için kusura bakmayın.

    • Ömer Koman dedi ki:

      hayat boyle ilerlerken herşeye dıkkat etmek zorundayız. verdiğiniz kodu arduinoya nasıl yukluyorsunuz? hiç arduino kodu gordunuz mu?

  73. Hüseyin Ozan ERDOĞAN dedi ki:

    Merhaba,
    Arduino mega 2560 kullanarak Nema 23 stepper motor sürmem gerekmekte.Elimde olan motor sürücüleri ise A4988 ve ULN2003.Ancak bağlantı şeması bulamadığım için bağlantı kısmında zorlanmaktayım.Bu konua yardımcı olur musunuz?

    • Ömer Koman dedi ki:

      verdiğiniz malzemeler oldukça yaygın kullanılıyor bağlantı ve kod bulmanız mumkun biraz daha google araştırın. foruma gelin sorun yapanlar var…

  74. mehmet murat demir dedi ki:

    temel olarak burada standart bir sürme yani 1 adım için kodlar yazılmış c den pek anlamasamda vb.net ten vasatın biraz üstünde anlamamla kodları çözebiliyorum. mega yı yeni sipariş verdim daha önce pic programlayarak ve transiztörlerle sürmüşlüğüm var ardiuno biraz daha basitleştirilmiş gibi pic kodları aha karışıktı sanki :).
    bakalım ilerlemeyi becerir ve üye olacak kadar başarı gösterirsem forumdada aktif olmaya çalışacağım.
    ek not: bazı step motorlarda çeyrek , yarım ve 3 çeyrek adım var sallıyorum 12 güç 34 bekleme mantığı genelde 4 kabloda daha karaşık ama 5 kabloda gayet kolay

  75. Hüseyin Ozan ERDOĞAN dedi ki:

    Merhaba,
    Arduino mega 2560 ve CWD556 motor dürücüsü kullanarak Nema 23 stepper motor sürmekteyim.Ancak kod yazılımında sorun yaşamaktayım.Kullanmış olduğum motoru ters yönde hareket ettirememekteyim.Aşağıda kullandığım kodlar yazılı.Forum da cevap bulamadığım için buraya yazıyorum.Teşekkür ederim.

    void setup() {
    pinMode(X_STEP_PIN , OUTPUT);
    pinMode(X_DIR_PIN , OUTPUT);
    pinMode(X_ENABLE_PIN , OUTPUT);
    digitalWrite(X_ENABLE_PIN , LOW);
    }

    void loop () {
    if (c100 && c<=200) {
    digitalWrite(X_DIR_PIN , LOW);
    }

    else{
    delay(1000);
    c=0;
    }
    c++ ;

    digitalWrite(X_STEP_PIN , HIGH);
    delay(1);
    digitalWrite(X_STEP_PIN , LOW);
    }

  76. Hüseyin Ozan ERDOĞAN dedi ki:

    Kodu yukarıda eksik yazmışım.

    #define X_STEP_PIN 54
    #define X_DIR_PIN 55
    #define X_ENABLE_PIN 38
    #define X_MIN_PIN 3
    #define X_MAX_PIN 2

    int c=0;

    void setup() {
    pinMode(X_STEP_PIN , OUTPUT);
    pinMode(X_DIR_PIN , OUTPUT);
    pinMode(X_ENABLE_PIN , OUTPUT);
    digitalWrite(X_ENABLE_PIN , LOW);
    }

    void loop () {
    if (c100 && c<=200) {
    digitalWrite(X_DIR_PIN , LOW);
    }

    else{
    delay(1000);
    c=0;
    }
    c++ ;

    digitalWrite(X_STEP_PIN , HIGH);
    delay(1);
    digitalWrite(X_STEP_PIN , LOW);
    }

    • Ömer Koman dedi ki:

      kodunda DIR_PIN sadece tek yonde kullanmışın digitalWrite(X_DIR_PIN , LOW);
      birde digitalWrite(X_DIR_PIN , HIGH);
      olması lazım diğer yon için

  77. Serkan ASLANBAY dedi ki:

    Merhabalar 2.8V 1.68A 1.65ohm Step Motor u L293d motor shield ile sürebilirmiyim. Shield 0.6 ampere kadar destekliyor. Motor etiketi yukarıdaki gibi fakat ben 2.8 volt değil 9- 12 volt kullanacağım. sizce arduino yada shield zarar görürmü ?

    • Ömer Koman dedi ki:

      ben hiç denemedim motora gereğinden fazla voltaj vermeyin buyuk ihtimal kavrulur sargılar yanarken hem shilde hemde arduinoya zarar verebılır. siz yinede bizim foruma sorun belki kullanan olmuştur uygun motor surucu onerisi gelebilir.

  78. Türker kılınç dedi ki:

    Merhaba. Kamera için dolly slider yaptim. Bu kayan mekanizma 1 saatte 2 m lik mesafe ilerleyecek. Arduino yu aldım ama düz dc motor bağladım. Sanırım bunun için step motor gerekiyor. Kodlama için olsun devre kurulumu için bir yer bulamadım. Bana yardımcı olabilecek olan var mı ?

    • Türker kılınç dedi ki:

      Sistemim bluetooth ile telefondan kontrol edilebiliyor. Illa 2 metreyi 1 saatte gidecek hali yok. Yarım saatte de gidebilir 15 dk da da. Bunun için ne yapabilirim işte

  79. Emir dedi ki:

    İyi günler! Hocam ben iki step motorla devre yapacam biri düz diğeride tersten dönecek. Kodlamalar hakkında yardımcı olursanız sevinirim. İlk projem!!

  80. ali dedi ki:

    kodları ve pinleri aynı şekilde kullandığım zaman step in bir tam adımını net bir şekilde göremiyorum.ama 1 dakika sonra motora baktığım zaman rulmanın yerinde bir değişiklik olduğu beliriyor.sebebi ve bir tam adımı nasıl yazacağımı açıklayabilir misiniz?!?

  81. Ömer Koman dedi ki:

    step motordaki adım denen şey loop kısmı bir kez çalıştığında motorun değiştirdiği açıdır. yukarıdaki rutin 500ms yani yarım sanıyede bir adım atar bunu hızlandırmak için delaytime değerini çok düşürebilirsiniz. eğer step motor reduktorluyse bir oranı vardır bu 1:200 gibi olabilir. yani 200 adımda 1 adım atacaktır, yani bir adım atmak için çok fazla adım atması gerekebilir. koddakı delay satırını kaldırıp denersenız bıraz daha hızlı olayı takıp edebılırsınız.

  82. Hakan Er dedi ki:

    Selam.
    Arduino ve step motoru ile basit bir proje yaptım. Yatay bir eksen üzerinde bir çeşit metre. Verdiğim ölçü kadar mil üzerindeki bir parça hareket ediyor. Amaç profil kesmek için.
    – Şu anda metrenin ilk pozisyonunu belirlemek için ya baştaki yada sonraki stop switche kadar gitmesi gerekiyor. Fakat bu durumda milimetrik hatalar oluşuyor.

    – Daha sonra switchleri sadece güvenlik için kullanmaya başladım ve motorun o anda kaçıncı turda olduğunu EEPROMa yazdırdım. Şu anda her hangi bir sorun yok.

    Aklıma takılan soru, EEPROM’un 100.000 defa yazılabilmesi. Bu sorunu nasıl aşabilirim.

    • Ömer Koman dedi ki:

      arduinoyu yedekleme amaçlı pille de besleyebilirsin enerji kesilmesine fırsat vermeyin tur değerlerini eeprom yerine hafızdaki bir değişkende tutmayı deneyebilirsiniz. foruma da gelin sorun.

  83. irfan dedi ki:

    selam
    arduino ile yeni tanıştım internette yaptığım araştırmalar ile biraz bilgi sahibi oldum şu an bile basit olan led yakma söndürme işlemini yapıyorum
    hobi olarak kafamda şöyle oluşturduğum bir projenin kadlarını nasıl yazarım orada kafa durdu 12 vdc motoru ileri yönde çalıştırmak istiyorum ve bir adet swich varmesela 20 defa swiche çarptığında motor dursun belli zaman sonra geri çalışsınaynı swiche tekrardan 20 defa çarpınça geri çalışma dursun zamanı beklesin tekrardan ileri çalissın bu dönğü için nasıl kaod yazmalıyım
    voıd setap apin mode 1 butoninput pin 2 röle output1 pin mode output3 röle 2 ile başlasam
    voıd loop ada işte gerisi kopuyor ne yazmalıyım delay kullanacampin2 low ,delay pin3low delay gibi o konuda yardımlarınızı bekliyorum herkese iyi çalışmalar
    elektrik teknisyeniyim otomasyonla uğraştığımdan bazı konular yabancı gelmiyor

    • Ömer Koman dedi ki:

      buradakı yazı step motor surmeyı anlatıyor basit 2 pinli motor sureceksenız motor surucu kartı almanızda fayda var cunku motoru her ıkı yonde de hareket ettırmek ıstıyorsunuz bunun için motoru bır h-bridge devre ıle surmenız lazım motor suruculerde bu devre hazır oldugundan yapmanız daha kolay olur. boyle bır devre kurduktan sonra gerısı yazılım becerınıze kalıyor projenızı yapabılırsınız. forum kısmına da gelın.

  84. Elif dedi ki:

    İyi günler,arduino ve step motorla ilk defa çalışma yapıcam.Benim projemde step motoru tuş takımına göre ara ara durdurup ara ara hareket ettirmeye dayanıyor bunun için kodlarda ne gibi değişiklik yapmam gerekiyor?Şimdiden teşekkürler…İyi çalışmalar…

    • Ömer Koman dedi ki:

      projeler adım adım gerçekleitirilir once yukarıdaki kodları test etmeniz lazım yukarıdaki programın loop ıcındeki kodlar sadece 1 adım atmasını sağlar loop içinde oldugu ıcın devamlı bu işlemi tekrarlar. siz butona basınca hareket etmesini istiyorsanız buton kodunuzun içine bu hareket kodlarını taşımanız yada bu kodu orneğin “MotorAdim” diye bır alt rutine taşıyıp rutini her cağırdıgınızda bır adım hareket edecektir. yukarıdaki kod bir yone hareketı sağlar siz diğer yone hareket için bu sefer kodları alttan yukarı doğru uygulayacaksınız. bazı motor suruculerde bu işlemleri kendı donanımı içinde halleder siz sadece motor donus yonu ve adım komutuu vermenız yeterli olabılır o zaman o surucuye uygun kodları kullanmanız lazım onceden araştırma yaparsanız ıyı olur.

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar