İçindekiler:

Arduino: Step Motor için Hassas Lib: 19 Adım
Arduino: Step Motor için Hassas Lib: 19 Adım

Video: Arduino: Step Motor için Hassas Lib: 19 Adım

Video: Arduino: Step Motor için Hassas Lib: 19 Adım
Video: ARDUINO STEP MOTOR KONTROLÜ ( ARDUİNO DERSLERİ #39 ) 2024, Kasım
Anonim
Image
Image
Genel Değişkenler
Genel Değişkenler

Bugün sizlere limit anahtarlı tam adımlı motor sürücüsü, hızlanma ve mikro adımlı motor hareketi için bir kitaplık göstereceğim. Hem Arduino Uno hem de Arduino Mega üzerinde çalışan bu Lib, motorları sadece adım sayısına göre değil, milimetre bazında da hareket ettirmenizi sağlar. Ve aynı zamanda oldukça doğru.

Bu kitaplığın önemli bir özelliği, yalnızca X, Y değil, aynı zamanda örneğin bir bölüm anahtarı olan kendi CNC makinenizi oluşturmanıza izin vermesidir, çünkü bu hazır bir GRBL değildir, daha çok programlamadır. sizin için ideal makineyi yapmanızı sağlar.

Ancak aşağıdaki açıklama önemli bir detay! Bu video sadece programlamaya zaten alışmış olanlar içindir. Arduino programlamaya aşina değilseniz öncelikle kanalımdaki diğer tanıtım videolarını izlemelisiniz. Bunun nedeni, bu özel videoda ileri düzey bir konuyu tartışıyor olmam ve videoda kullanılan Lib'i daha ayrıntılı olarak açıklamam: Hızlanma ve Strok Sonu ile Step Motor.

1. Adım: StepDriver Kitaplığı

Bu kitaplık, piyasadaki en yaygın üç sürücü türünü kapsar: A4988, DRV8825 ve TB6600. Sürücülerin pinlerini yapılandırarak, sıfırlama ve Uyku moduna yerleştirmenin yanı sıra Enable pinine etki eden motor çıkışlarını etkinleştirip devre dışı bırakmalarına izin verir. Ayrıca sürücünün mikro adım pinlerinin girişlerini ayarlar ve anahtarları ve aktivasyon seviyelerini (yüksek veya düşük) sınırlar. Ayrıca mm/s² cinsinden sürekli ivme, mm/s cinsinden maksimum hız ve mm/s cinsinden minimum hız ile motor hareket koduna sahiptir.

Hızlanma ve Strok Sonu ile Step Motor videosunun 1. ve 2. kısımlarını izleyenler için, bu yeni kitaplığı bugün indirin, çünkü ilk dosyada kullanımını kolaylaştırmak için bazı değişiklikler yaptım.

Adım 2: Global Değişkenler

Global değişkenlerin her birinin tam olarak ne için olduğunu gösteriyorum.

Adım 3: Fonksiyonlar - Sürücü Pinlerini Ayarlama

Fonksiyonlar - Sürücü Pinlerini Ayarlama
Fonksiyonlar - Sürücü Pinlerini Ayarlama

Burada bazı yöntemleri anlatıyorum.

Pinout ayarını ve Arduino pinlerini çıktı olarak belirledim.

Adım 4: Fonksiyonlar - Sürücünün Temel Fonksiyonları

Fonksiyonlar - Sürücünün Temel Fonksiyonları
Fonksiyonlar - Sürücünün Temel Fonksiyonları

Bu bölümde, sürücünün konfigürasyonu ve temel fonksiyonları ile çalışıyoruz.

Adım 5: Fonksiyonlar - Motor Adım Ayarı

Fonksiyonlar - Motor Adım Ayarı
Fonksiyonlar - Motor Adım Ayarı
Fonksiyonlar - Motor Adım Ayarı
Fonksiyonlar - Motor Adım Ayarı

Kodun bu adımında, motorun yürütmesi gereken milimetre başına adım miktarını yapılandırıyoruz.

Adım 6: Fonksiyonlar - Motor Adım Modunu Ayarlama

Fonksiyonlar - Motor Adım Modunu Ayarlama
Fonksiyonlar - Motor Adım Modunu Ayarlama
Fonksiyonlar - Motor Adım Modunu Ayarlama
Fonksiyonlar - Motor Adım Modunu Ayarlama
Fonksiyonlar - Motor Adım Modunu Ayarlama
Fonksiyonlar - Motor Adım Modunu Ayarlama

Bu tablo, motor adım modu için ayarları gösterir. İşte bazı örnekler.

Adım 7: Fonksiyonlar - Limit Anahtarlarının Ayarlanması

Fonksiyonlar - Limit Anahtarlarını Ayarlama
Fonksiyonlar - Limit Anahtarlarını Ayarlama

Burada bütün ve boole değerlerini okumam gerekiyor. Maksimum ve minimum limit uç pinini ayarlarken aktif tuşun yukarı mı aşağı mı olduğunu ayarlamak gerekir.

Adım 8: Fonksiyonlar - Limit Anahtarlarının Okunması

Fonksiyonlar - Limit Anahtarlarının Okunması
Fonksiyonlar - Limit Anahtarlarının Okunması
Fonksiyonlar - Limit Anahtarlarının Okunması
Fonksiyonlar - Limit Anahtarlarının Okunması
Fonksiyonlar - Limit Anahtarlarının Okunması
Fonksiyonlar - Limit Anahtarlarının Okunması

Bu kısım Lib'de geçen hafta kullanıma sunduğum kısımdan farklı. Neden değiştirdim? Eh, bazılarının yerini almak için eRead'i oluşturdum. Burada, eRead LVL'yi, digitalRead'i (pin) okuyacak ve DOĞRU değerini döndürecektir. Bütün bunların yüksekte yapılması gerekiyor. Aktif anahtar ile aşağıdaki çalışma düşük seviyede olacaktır. Burada size "Gerçek" tablosunu göstermek için kullanacağım.

Kodun görüntüsüne, kaynak kodun bu bölümünde Artan'a doğru ilerlediğimi ve henüz kurs sonu tuşuna basmadığımı anlamama yardımcı olacak bir diyagram yerleştirdim.

Şimdi, bu görüntü işletim sistemi bool DRV8825'te, motorun hala büyüme yönünde hareket ettiğini gösteriyorum. Ancak, maksimum limit anahtarı etkinleştirildi. O halde mekanizma hareketi durdurmalıdır.

Son olarak, aynı hareketi gösteriyorum ama ters yönde.

Burada, kurs sonu anahtarını zaten etkinleştirmişsiniz.

Adım 9: Fonksiyonlar - Hareket Kurulumu

Fonksiyonlar - Hareket Kurulumu
Fonksiyonlar - Hareket Kurulumu

motionConfig yönteminin ana faydası, bir step motorun kontrolörünü karşılamak için saniyedeki milimetreyi (CNC makinelerinde kullanılan bir ölçüm) adımlara dönüştürmektir. Bu nedenle, bu bölümde, milimetreleri değil, adımları anlamak için değişkenleri somutlaştırıyorum.

Adım 10: Fonksiyonlar - Hareket Fonksiyonu

Fonksiyonlar - Hareket Fonksiyonu
Fonksiyonlar - Hareket Fonksiyonu

Bu adımda istenilen yönde bir adım hareket ettiren komutu mikrosaniye cinsinden bir periyotta ele alıyoruz. Ayrıca sürücünün yön pimini, gecikme süresini ve limit anahtarlarının yönünü de ayarlıyoruz.

Adım 11: Fonksiyonlar - Hareket Fonksiyonu - Değişkenler

Fonksiyonlar - Hareket Fonksiyonu - Değişkenler
Fonksiyonlar - Hareket Fonksiyonu - Değişkenler

Bu bölümde, diğerlerinin yanı sıra, maksimum ve minimum hız dönemlerini, yörünge mesafesini ve yörüngeyi kesmek için gerekli adımları içeren tüm değişkenleri yapılandırıyoruz.

Adım 12: Fonksiyonlar - Hareket Fonksiyonu - Hızlanma

Fonksiyonlar - Hareket Fonksiyonu - Hızlanma
Fonksiyonlar - Hareket Fonksiyonu - Hızlanma
Fonksiyonlar - Hareket Fonksiyonu - Hızlanma
Fonksiyonlar - Hareket Fonksiyonu - Hızlanma

Burada, Torricelli denklemi ile hesaplanan ivme verisine nasıl ulaştığımız hakkında bazı detaylar sunuyorum, çünkü bu, ivmenin çalışacağı uzayları hesaba katıyor, zamanı değil. Ancak burada tüm denklemin yalnızca bir kod satırından ibaret olduğunu anlamak önemlidir.

Yukarıdaki resimde bir trapez belirledik çünkü ilk devir sayısı çoğu step motor için kötü. Yavaşlamada da aynı şey oluyor. Bu nedenle, hızlanma ve yavaşlama arasındaki dönemde bir yamuk hayal ediyoruz.

Adım 13: Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız

Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız
Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız
Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız
Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız

Burada hızlanmada kullanılan adım sayısını tutuyoruz, sürekli hızda devam ediyoruz ve aşağıdaki resimde görülebilen maksimum hızda devam ediyoruz.

Adım 14: Fonksiyonlar - Hareket Fonksiyonu - Yavaşlama

Fonksiyonlar - Hareket Fonksiyonu - Yavaşlama
Fonksiyonlar - Hareket Fonksiyonu - Yavaşlama
Fonksiyonlar - Hareket Fonksiyonu - Yavaşlama
Fonksiyonlar - Hareket Fonksiyonu - Yavaşlama

Burada bu sefer negatif ivme değerine sahip başka bir denklemimiz var. Ayrıca aşağıdaki resimde Yavaşlama etiketli dikdörtgeni temsil eden bir kod satırında da görüntülenir.

Adım 15: Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız

Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız
Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız
Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız
Fonksiyonlar - Hareket Fonksiyonu - Sürekli Hız

Aşağıda görüldüğü gibi yörüngenin ikinci yarısında çalışmak için sürekli hıza dönüyoruz.

Adım 16: İşlevler - Hareket Etme İşlevi - Dönüşleri Hareket Etme

Fonksiyonlar - Hareket Etme Fonksiyonu - Dönüşler Hareket Etme
Fonksiyonlar - Hareket Etme Fonksiyonu - Dönüşler Hareket Etme

Bu kısımda motoru belirli sayıda dönüşte istenilen yönde hareket ettirerek dönüş sayısını milimetreye çeviriyoruz. Son olarak motoru istenilen yönde hareket ettiriyoruz.

Adım 17: Hareket Tablosu - Konum Hızı

Hareket Grafiği - Konum Hızı
Hareket Grafiği - Konum Hızı

Bu grafikte, Hızlanma bölümünde kullandığımız denklemden çıkarılan verilerim var. Değerleri alıp Arduino serisinde oynadım ve bundan Excel'e geçtim ve bu tablo ortaya çıktı. Bu tablo, adımın ilerlemesini gösterir.

Adım 18: Hareket Tablosu - Konum Vs. Konum

Hareket Grafiği - Konum Vs. Konum
Hareket Grafiği - Konum Vs. Konum

Burada, konumu adım adım ve hız olarak alıyoruz ve mikrosaniye cinsinden periyoda dönüştürüyoruz. Bu adımda periyodun hız ile ters orantılı olduğuna dikkat çekiyoruz.

Adım 19: Hareket Tablosu - Hız Vs. An

Hareket Grafiği - Hız Vs. An
Hareket Grafiği - Hız Vs. An

Son olarak, anın bir fonksiyonu olarak hıza sahibiz ve bu nedenle, zamanın bir fonksiyonu olarak hız olduğu için düz bir çizgimiz var.

Önerilen: