Arduino İle Step Motor Kontrolü

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tabela Fatihi
    kaygusuz
    kaygusuz's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    Arkadaşlar elimde bir step motor sürücüsü


    ve 1 tanede step motor var

    yarın karaköyden de arduion kart almayı düşünüyorum. malzemeler elimde mevcut bağlantıları filan hepsini yaptım yalnız arduion karta atılcak derlenmiş programın yazılımı konusunda sıkıntı var malesef yazılım konusunda sizler daha iyi bilirsiniz diye bi el atın ricam.

    olay şu;

    motoru ileri ve geri hareket ettircez. yani 1. butona bastık ileri gitti basılı tutuluncaya kadar. sonra 2. butona bastık geri gitti tutuluncaya kadar. yani ileri geri hareket ettircek kod lazım. veya
     
    motora dedikki butona bastım 20 cm ileri git ve dur. diğer butona bastım 20 cm geri gel ve dur. olay tamamen bu.
     veya program olarak bi butona basıp ileri gitsin diğer butona bassın geri gelsin program arayüz olarak olabilir
    yazılım konusunda bilgili müridlerden yardım istiyorum. yapabilen varsa konuşalım


    Aldananlar aldanmaktan zevk aldıkları için hile ortaya çıkmıyordu Tolstoy
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zndmn
    zndmn's avatar
    Kayıt Tarihi: 16/Eylül/2007
    Erkek

    hocam yazılımla biraz alakan varsa yazılımı çok kolaydır arduinonun sitesinden bile kısa vakitte öğrenebilirsin..

    kendi içinde bir çok örnekte var zaten derleme programının onlar bile fayda sağlar sana.. hani ben de motor sürmedim hiç ahkam kesmek gibi olmasın ama yine de durum böyle =)


    Zugzwang
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tabela Fatihi
    kaygusuz
    kaygusuz's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    hocam bi el yardım etmenizi istiyorum.


    Aldananlar aldanmaktan zevk aldıkları için hile ortaya çıkmıyordu Tolstoy
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hardening_Temp
    Hardening_Temp's avatar
    Kayıt Tarihi: 24/Aralık/2013
    Erkek

    Potansiyometre kullanarak kontrol şeması yukarıda bulunmaktadır.

     

    Elektrik şeması

     

    // Potansiyometre kullanılarak steppermotorkontrolü


     
    Stepper mystepper;  // stepper kontrolü için stepper objesi tanıtılır 
     
    int potpin = 0;  // Analog pin kullanılarak potansiyometreye bağlanması
    int val;    // analog pinden veri okuma için tanıtılan değişken 
     
    void setup() 
    { 
      mystepper.attach(9);  // stepperı 9. pine ekler
    } 
     
    void loop() 
    { 
      val = analogRead(potpin);            // potansiyometreyi okur
      val = map(val, 0, 1023, 0, 179);     // stepper ile kullanılması için oranlanır
      mystepper.write(val);                  // oranlanan değere göre stepper pozisyonunu oluşturur
      delay(15);                           // 15 saniye bekler
    }

    Potansiyometre herhangi bir elektronik devre de , ayar için kullanılan malzemedir.

    kendim bizzat ingilizce olarak steppermotorun dijital(sayısal) hesaplarıyla birlikte bir proje yapmıştım geçen dönem.Bir tek PWM ile çalıştıramadım devreyi, bizzat ellerimle kapıları kullanarak 2 gün boyunca oluşturduğum dijital kısmı var.

    Fakat bunu programlamaya dökerken birkaç noktada takılabilirim.

    Yani genel olarak steppermotorun half-section olarak çalıştırılmasında,belli bir sayısal algoritma oluşturulması gerekiyor.Aynı 01011010 modundan bir sonraki state olan 01101011 kısma geçmesi ve devam etmesi gibi.

    Tabi bu otomatik olarak steppermotorun otomatik olarak programlanmış hali olur.

    fakat sen buton kullanacaksan , aynı potansiyometredeki gibi küçük tanımlama kod biçimleri var, Tam aklımda yok.Button control yazarsan bulabilirsin.

    Hardening_Temp tarafından 22/Ağu/14 22:37 tarihinde düzenlenmiştir

    Söyleyeceklerimin kifayesi yok...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tabela Fatihi
    kaygusuz
    kaygusuz's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    sağol döküman için fakat elimdeki step motorun 4 çıkışı var sürücüye giden.aslında 2*4 yani bu potlu servo kontrol pek işime yaramaz gibi. eyvallah 



    Aldananlar aldanmaktan zevk aldıkları için hile ortaya çıkmıyordu Tolstoy
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Branxian
    Branxian's avatar
    Kayıt Tarihi: 07/Mart/2009
    Erkek

    Hocam o motorun 4 ucu büyük ihtimal ya güç girişleri ( + ) , ( - ) ve A/B fazları yada direk A, /A , B /B uçları olabilir.

    Biraz bakayım resimdeki motorun kodundan döküman bulabilicek miyim internetten.

    Arduino ile alakalı hiç birşey bilmiyorum ama bari bağlantılarda yardımcı olmaya çalışayım :)

    ,

    İnternetteki dökümanlarda hep çince be arkadaş :D

    Branxian tarafından 22/Ağu/14 23:47 tarihinde düzenlenmiştir

    Kurtla sevişen mazoşist koyun
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tabela Fatihi
    kaygusuz
    kaygusuz's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek
    Branxian bunu yazdı

    Hocam o motorun 4 ucu büyük ihtimal ya güç girişleri ( + ) , ( - ) ve A/B fazları yada direk A, /A , B /B uçları olabilir.

    Biraz bakayım resimdeki motorun kodundan döküman bulabilicek miyim internetten.

    Arduino ile alakalı hiç birşey bilmiyorum ama bari bağlantılarda yardımcı olmaya çalışayım :)

    ,

    İnternetteki dökümanlarda hep çince be arkadaş :D

    motorun uçlarını bağlamasını biiyorum hacım.sıkıntı kod 


    Aldananlar aldanmaktan zevk aldıkları için hile ortaya çıkmıyordu Tolstoy
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fotoğrafçı
    burakbet
    burakbet's avatar
    Kayıt Tarihi: 02/Mayıs/2007
    Erkek

    takip. sorun yaşıyorum. aynı sürücüden bende de var


    la?
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek

    arduinoda henüz step motor kullanmadım ama böyle bodoslama birşey çalışmazmı 

    arduino için 

    int mpin1=10;
    int mpin2=11;
    int mpin3=12;
    int mpin4=13;
    byte okuduk;
    int beklezaman=100; //değişkenleri tanımladık
    void setup(){
      pinMode(mpin1,OUTPUT);
      pinMode(mpin2,OUTPUT);
      pinMode(mpin3,OUTPUT);
      pinMode(mpin4,OUTPUT);  // pinlerde çıkış alacağımızı belirtik
      Serial.begin(9600); // serialport başlattık
    }
    void loop(){
      if(Serial.available() > 0)
      {
        okuduk=Serial.read(); //serial portu okuduk
        if(okuduk=='I') //bilgisayar seri porttan gelen ilerinin I si ise
        {
         digitalWrite(mpin1,HIGH);     
         digitalWrite(mpin2,LOW);     
         digitalWrite(mpin3,LOW);     
         digitalWrite(mpin4,LOW);
         delay(beklezaman);
         digitalWrite(mpin1,LOW);     
         digitalWrite(mpin2,HIGH);     
         digitalWrite(mpin3,LOW);     
         digitalWrite(mpin4,LOW);
         delay(beklezaman);
         digitalWrite(mpin1,LOW);     
         digitalWrite(mpin2,LOW);     
         digitalWrite(mpin3,HIGH);     
         digitalWrite(mpin4,LOW);
         delay(beklezaman);
         digitalWrite(mpin1,LOW);     
         digitalWrite(mpin2,LOW);     
         digitalWrite(mpin3,LOW);     
         digitalWrite(mpin4,HIGH);
         delay(beklezaman);
        } 
       if(okuduk=='G') //bilgisayar seri porttan gelen gerinin G si ise
        {
         digitalWrite(mpin4,HIGH);     
         digitalWrite(mpin3,LOW);     
         digitalWrite(mpin2,LOW);     
         digitalWrite(mpin1,LOW);
         delay(beklezaman);
         digitalWrite(mpin4,LOW);     
         digitalWrite(mpin3,HIGH);     
         digitalWrite(mpin2,LOW);     
         digitalWrite(mpin1,LOW);
         delay(beklezaman);
         digitalWrite(mpin4,LOW);     
         digitalWrite(mpin3,LOW);     
         digitalWrite(mpin2,HIGH);     
         digitalWrite(mpin1,LOW);
         delay(beklezaman);
         digitalWrite(mpin4,LOW);     
         digitalWrite(mpin3,LOW);     
         digitalWrite(mpin2,LOW);     
         digitalWrite(mpin1,HIGH);
         delay(beklezaman);
        }
      }
    }

    c# için 

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports; // bunu ekleyecen
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            SerialPort gonder = new SerialPort("COM3",9600);// port tanımladık arduino hangi porttan bağlı ise o portu yazacan bende com3 ten bağlı
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                gonder.Open(); //portu açtık 
                gonder.Write("I");//veriyi gönderdik 
                gonder.Close(); //portu kapattık
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                gonder.Open();
                gonder.Write("G");
                gonder.Close();
            }
          
        }
    }
    wert tarafından 23/Ağu/14 04:26 tarihinde düzenlenmiştir

    |sadece aptalların başarısı ders notu ile ölçülür|
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tabela Fatihi
    kaygusuz
    kaygusuz's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    ARKADAŞLAR olmadı.

    şimdi ki yapacağımız butona bas ileri gitsin dursun. kısa ve özet.

    C bilen müridlerdn yardım istiyorum bu konuda


    Aldananlar aldanmaktan zevk aldıkları için hile ortaya çıkmıyordu Tolstoy
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    n3xt
    n3xt's avatar
    Kayıt Tarihi: 07/Aralık/2009
    Erkek

    Hocam bu driver step dir olarak çalışır yani digital bacaktan her pulse verdiğinde 1 step atar.

    Driver ın üzerinde micro step ayarları var 1 pulse da kaç kaç tur dönsün diye. Dir (direction) bacağıylada yönü kontrol edersin. 1 saat yönü 0 saat yönü tersi gibi.

     

    bildr.org 

    http://bildr.org/2011/06/easydriver/

    yani

    digitalWrite(STEP_PIN, HIGH);

    delayMicroseconds(usDelay);

    digitalWrite(STEP_PIN, LOW);

    delayMicroseconds(usDelay);

     

    Örnek olarak 200 pulse lık bir step motorun var, 200 defa yukarıdaki kodu yazarsan 360 derece döner. ( tabi for kullan)

    micro step 1/16 yaparsan 3200 pulse da 360 derece olur.

    micro step 1/8 yaparsan 1600 pulse da 360 derece olur.

     

    n3xt tarafından 26/Ağu/14 20:00 tarihinde düzenlenmiştir

    İş kurma işi biraz uzun sürdü. ben askere gitmicem demedim ki lan.
Toplam Hit: 4277 Toplam Mesaj: 13