İçindekiler:

Arduino için Driven Step Hız Kontrol Menüsü: 6 Adım
Arduino için Driven Step Hız Kontrol Menüsü: 6 Adım

Video: Arduino için Driven Step Hız Kontrol Menüsü: 6 Adım

Video: Arduino için Driven Step Hız Kontrol Menüsü: 6 Adım
Video: A4988 Step Motor Sürücü ve NEMA 17 Step Motor Kullanımı 2024, Kasım
Anonim
Arduino için Driven Step Hız Kontrol Menüsü
Arduino için Driven Step Hız Kontrol Menüsü
Arduino için Driven Step Hız Kontrol Menüsü
Arduino için Driven Step Hız Kontrol Menüsü
Arduino için Driven Step Hız Kontrol Menüsü
Arduino için Driven Step Hız Kontrol Menüsü

Bu SpeedStepper kitaplığı, step motorun hız kontrolüne izin vermek için AccelStepper kitaplığının yeniden yazılmış halidir. SpeedStepper kitaplığı, ayarlanan motor hızını değiştirmenize olanak tanır ve ardından AccelStepper kitaplığıyla aynı algoritmayı kullanarak yeni ayarlanan hıza hızlanır/yavaşlar. SpeedStepper kitaplığı ayrıca artı ve eksi limiti ve bir 'ev' konumu ayarlamanıza olanak tanır. Ana konuma dönmek için bir goHome komutu vardır.

Sınırlamalar: SpeedStepper kitaplığı yalnızca yön ve adım çıkışlarını çalıştırır ve bu nedenle step motoru fiilen sürmek için Easy Driver gibi bir motor sürücüsüne bağlanması gerekir. AccelStepper kitaplığı, gerektiğinde bu kitaplığa kopyalanabilecek daha fazla sürüş seçeneği sunar.

Her biri bir motor veya motor sürücüsü olmadan çalıştırılabilen üç örnek çizim sağlanmıştır. speedStepperPlot çizimi, örnek hız komutlarını ve goHome komutunu verir ve elde edilen hız ve konumun bir grafiğini oluşturur. speedStepperSetup taslağı, motorun başlangıç noktasını ve sınırlarını ayarlamak ve ardından motoru çalıştırmak ve hızı yukarı ve aşağı ayarlamak ve bitirmek için Home'a gitmek için menü odaklı bir kurulum sağlar. speedStepperProfile çizimi, bir hız profili ayarlama ve yürütme örneğini gösterir.

AccelStepper kütüphanesi iyi konum kontrolü sağlarken, Europa'da Biyolojik Örnekler Toplama Prototip Buz Eritme Probu için hız kontrolüne ihtiyaç vardı. İşte prototipin motor yerine ağırlık kullanan önceki bir versiyonunun videosu. Revizyon 1.1, bir kullanıcı bir pompanın hız profilini kontrol etmek için bir araç talep ettikten sonra hız profillerini ekledi.

Bu kütüphane Arduino Uno ve Mega2560 üzerinde çalışır, ancak prototip için daha büyük bellek / daha hızlı işlemci SparkFun Redboard Turbo kullanıldı.

Bu talimat, Arduino için Step Hız Kontrol Kütüphanesinde çevrimiçi olarak da mevcuttur.

Gereçler

Örnek çizimleri çalıştırmak için yalnızca bir Arduino UNO veya Mega2560 ve yazılım kitaplıklarına ihtiyaç vardır.

Kitaplığın tezgah testi için Easy Driver, 200 adım/dev, 12V 350mA step motor ve 12 DC besleme 2A veya daha büyük, örn. https://www.sparkfun.com/products/14934. USB A'dan Mikro kabloya USB'den TTL'ye Seri KabloArduino IDE V1.8.9 ve üzerinde çalışacak bir bilgisayar. BlockingInput ve pfodBufferedStream sınıfları için SpeedStepper kitaplığıpfodParser kitaplığı Engellemeyen gecikmeler için millisDelay kitaplığı

Adım 1: Kitaplık İşlevleri

SpeedStepper kitaplığı, kitaplık tarafından belirlenen sınırlarla sınırlanan step motoru çalıştırır. Mevcut çeşitli kitaplık yöntemleri için SpeedStepper.h dosyasına bakın. İşte onların arkasındaki mantığın bir özeti.

Adımın konumu, adım sayısı (darbeler) sayılarak izlenir. Kitaplık, konumu setPlusLimit(int32_t) ve setMinusLimit(int32_t) konumları arasında olacak şekilde sınırlar. Artı limit her zaman >= 0 ve eksi limit her zaman <= 0'dır. Başlatmada motor konumu 0'dır (home) ve limitler çok büyük +/- sayılara (yaklaşık +/-1e9 adımlar) ayarlanır. setAcceleration(float) motorun hızı ne kadar hızlı değiştireceğini ayarlar. Motor artı veya eksi limitine yaklaştıkça limitte durana kadar bu hızda yavaşlayacaktır. Başlatmada hızlanma 1.0 adım/sn/sn'ye ayarlanır. Hızlanma ayarı her zaman +ve sayısıdır. setSpeed(float) ayarının işareti motorun hareket edeceği yönü belirler.

setSpeed(float), motoru mevcut hızından hızlandırmak / yavaşlatmak için hızı ayarlar. setSpeed(float) ile ayarlanabilen hız, mutlak değerde, ayarlar, setMaxSpeed(float), varsayılan 1000 adım/sn ve setMinSpeed(float), varsayılan 0.003 adım/sn ile sınırlıdır. Bu varsayılanlar aynı zamanda kitaplığın setMaxSpeed() ve setMinSpeed() için kabul edeceği mutlak sabit kodlanmış hız sınırlarıdır. Bir maksimum hız > 1000 adım/sn ayarlamak istiyorsanız, maxMaxSpeed(1000)'i istediğiniz maksimum hıza değiştirmek için SpeedStepper.cpp dosyasındaki ilk satırı düzenlemeniz gerekir. Pratikte maksimum hız, kitaplığın run() yöntemine yapılan çağrılar arasındaki zamanla da sınırlıdır. 1000 adım/sn için run() yöntemi en az 1mS'de bir çağrılmalıdır. Aşağıdaki Gecikme bölümüne bakın.

Minimum hızdan daha düşük bir hız ayarlamaya çalışmak motorun durmasına neden olur. Bu ayarlayıcıların her birinin karşılık gelen bir alıcısı vardır, bkz. SpeedStepper.h dosyası. Hız için getSetSpeed(), setSpeed() aracılığıyla ayarladığınız hızı döndürürken getSpeed(), hızlanarak/yavaşladıkça ayarladığınız hıza göre değişen mevcut motor hızını döndürür. Motor +ve'yi düşündüğünüz yönde gitmiyorsa, motorun hareket yönünü +ve hızları ile değiştirmek için invertDirectionLogic()'i çağırabilirsiniz.

getCurrentPosition(), 'home' (0) ile karşılaştırıldığında mevcut motor konumunu döndürür. Mevcut motor konumunu setCurrentPosition(int32_t) geçersiz kılabilirsiniz. Yeni pozisyon, ayarlanan artı/eksi limitleri dahilinde olacak şekilde sınırlandırılmıştır.

Başlangıçta motor 0 konumunda durdurulur. setSpeed(50.0) öğesinin çağrılması, +ve yönünde maksimum 50 adım/dk hıza hızlanmaya başlamasına neden olur. hardStop() işlevinin çağrılması, motoru hemen olduğu yerde durduracaktır. Öte yandan stop() yönteminin çağrılması hızı sıfıra ayarlayacak ve motoru durdurmak için yavaşlatacaktır. stopAndSetHome() işlevinin çağrılması, motoru hemen durduracak ve konumunu 0'a ayarlayacaktır. Artı/eksi limit değerleri değiştirilmez, ancak şimdi bu yeni 0 (ana) konumuna yönlendirilir. goHome()'u çağırmak, stepper'ı bu 0 (ana) konumuna döndürür ve durur. setSpeed()'i çağırmak eve gitmeyi iptal eder.

SpeedStepper kitaplığı ayrıca, çalışan bir profili kesmek için setProfile(SpeedProfileStruct* profileArray, size_t arrayLen), startProfile(), stopProfile() ve isProfileRunning() yöntemleri aracılığıyla hız profili kontrolü sağlar. speedStepperProfile örnek çizimine bakın.

Adım 2: SpeedStepperPlot Örneğinin Motor Olmadan Çalıştırılması

SpeedStepperPlot Örneğinin Motor Olmadan Çalıştırılması
SpeedStepperPlot Örneğinin Motor Olmadan Çalıştırılması

Arduino IDE V1.8.9'u kurun SpeedStepper kitaplığını indirin ve kurun SpeedStepper.zip dosyasını kaydedin ve ardından Arduino IDE menü öğesi Sketch → Include Library → Add. ZIP kitaplığını kullanarak kitaplığı içe aktarın millisDelay kitaplığını da indirin ve kurun

Örnekler → SpeedStepper → speedStepperPlot örnek çizimini açın (Gerekirse IDE'yi yeniden başlatın). Bu çizim, Seri ile çalışmak üzere yapılandırılmıştır, ör. UNO ve Mega vb. SparkFun Redboard Turbo üzerinde çalışmak için aşağıya bakın.

Bu örneği çalıştırmak için sürücü panosu veya step motor gerekmez. Bu örnekler, çıktı olarak D6 ve D7'yi kullanır. Çizimin üst kısmına yakın STEP_PIN ve DIR_PIN ayarlarını değiştirerek çıkış pinlerini herhangi bir dijital çıkışa değiştirebilirsiniz.

Çizimi panoya yükleyin ve ardından hız (KIRMIZI) ve konumun (MAVİ) çizimini göstermek için Araçlar → Seri Çizici'yi 115200 baud'da açın. x ekseni üzerinde. Eksi sınır -510'dur. Hız 0.0 olarak talep edildiğinden konum ~-390'da durur. x ekseni üzerindeki 380 noktasında, adımlayıcıyı sıfır konumuna döndüren goHome cmd verilir.

Bu speedStepperPlot çizimi, çeşitli hızlar ve ivmeler arasında geçiş yapmak için millisDelays kullanır. Çoğu durumda, bir sonraki örnekte olduğu gibi bir SpeedStepperProfile kullanmak daha basittir.

Adım 3: SpeedStepperProfile Örneğini Motorsuz Çalıştırma

SpeedStepperProfile Örneğini Motorsuz Çalıştırma
SpeedStepperProfile Örneğini Motorsuz Çalıştırma

Örnekler → SpeedStepper → speedStepperPlot örnek çizimini açın, bu çizim Arduino Seri Çiziciyi kullanarak yukarıdaki grafiği üretir ve örneğin bir pompa çalıştırılıyorsa önceden belirlenmiş bir hız profili çalıştırmanın bir örneğidir.

Step Hız Profilleri, SpeedStepper.h dosyasında tanımlanan bir SpeedProfileStruct dizisinden oluşur.

struct SpeedProfileStruct {

şamandıra hızı; // bu adımın sonundaki hedef hız unsigned long deltaTms; // mevcut hızdan (bu adımın başlangıcında) hedef hıza hızlanma zamanı };

Her adım için hedef hızı ve önceki hedef hızdan bu hedef hıza ulaşmak için mS cinsinden deltaTms süresini içeren bir SpeedProfileStruct dizisi tanımlayın. DeltaTms sıfır veya çok küçükse, hız hemen yeni hedef hıza atlayacaktır. Aksi takdirde, gerekli ivme hesaplanacak setAcceleration() çağrılacak ve ardından yeni hedef hız için setSpeed() çağrısı gelecek. Her durumda profil, mevcut artı ve eksi konum limitleri ve maks/min hız ayarları ile sınırlandırılacaktır. Bir hızı korumak istiyorsanız, önceki hızı, tutulmasını istediğiniz süre ile tekrarlamanız yeterlidir. Yeni hedef hız mevcut hız ile aynı olduğu için hesaplanan ivme sıfır olur ve hızda herhangi bir değişiklik olmaz.

Bu SpeedProfileStruct dizisi yukarıdaki grafiği üretti

const SpeedProfileStruct profili = { { 0, 0}, // zaten durdurulmamışsa hemen dur { 0, 1000}, // 1sn boyunca sıfırı tut { -50, 0}, // -50'ye atla { -200, 2000}, // -200'e rampa { -200, 6000}, // 6sn boyunca -200'de tutun { -50, 2000}, // -50'ye rampa { 0, 0}, // // hemen dur { 0, 1500}, // 1.5 saniye boyunca sıfırı basılı tutun { 50, 0}, // 50'ye atlayın { 200, 2000}, // 200'e rampa { 200, 6000}, // 200'ü 6 saniye basılı tutun { 50, 2000}, // 50'ye rampa { 0, 0}, // // hemen dur { 0, 1000} // sıfırı tut // çıktıyı çizmek için }; const size_t PROFILE_LEN = sizeof(profil) / sizeof(SpeedProfileStruct); // profil dizisinin boyutunu hesapla

Profil, setProfile(SpeedProfileStruct* profileArray, size_t arrayLen) çağrılarak ayarlanır ör. stepper.setProfile(profil, PROFILE_LEN);

Profil ayarlandıktan sonra, mevcut motor hızından çalıştırmaya başlamak için startProfile()'ı çağırın (genellikle durdurulan noktadan başlarsınız). Profilin sonunda motor sadece son hedef hızda çalışmaya devam edecektir. Profilin hala çalışıp çalışmadığını görmek için isProfileRunning() yöntemi çağrılabilir. Profili erken durdurmak istiyorsanız, profili terk edecek ve motoru durduracak stopProfile() öğesini çağırabilirsiniz.

Adım 4: SpeedStepperSetup Örneğinin Motor Olmadan Çalıştırılması

Örnek çizim, kendi step motor uygulamanız için bir temel olarak tasarlanmıştır. Zaten orada değilse, motora ana konumuna hareket etmenize ve ardından isteğe bağlı olarak artı ve eksi limitlerini sıfırlamanıza ve ardından motoru bu aralıkta çalıştırmanıza izin veren menü odaklı bir arayüz sağlar. 'Çalıştır' menüsü, hızı artırmanıza ve azaltmanıza, mevcut hızda donmanıza, durmanıza ve ayrıca eve dönmenize olanak tanır.

Bu çizim, stepi kontrol etmek için kendi sensör girişlerinizi ekleyebilmeniz için loop()'u duyarlı tutan bir dizi yazılım özelliğini göstermektedir. Hız kontrolünü engelleyebilecek gecikmeleri önlemek için özen gösterilmesi gerekir. (Bkz. Gecikmeler Kötüdür)

Yukarıdaki SpeedStepperPlot'u çalıştırmak için kullanılan kitaplıkları kurun ve ardından pfodParser kitaplığını da kurun. pfodParser kitaplığı, döngünün () çalışmasını engelleyerek kullanıcı girişini ve menü çıkışını işlemek için kullanılan NonBlockingInput ve pfodBufferedStream sınıflarını sağlar.

Örnekler → SpeedStepper → speedSpeedSetup örneğini açın. Bu çizim, Seri ile çalışmak üzere yapılandırılmıştır, ör. UNO ve Mega vb. SparkFun Redboard Turbo üzerinde çalışmak için aşağıya bakın.

Bu örneği çalıştırmak için sürücü panosu veya step motor gerekmez. Bu örnekler, çıktı olarak D6 ve D7'yi kullanır. Çizimin üst kısmına yakın STEP_PIN ve DIR_PIN ayarlarını değiştirerek çıkış pinlerini herhangi bir dijital çıkışa değiştirebilirsiniz. Krokiyi panoya yükleyin ve ardından KURULUM menüsünü görmek için Araçlar → Seri Monitör'ü 115200'de açın.

SETUP pos:0 sp:0.00 +Lim:500000 -Lim:-500 LATENCY: step:492uS loop:0uS p -- Home l'yi ayarla -- limitleri ayarla h -- goHome r -- run >

Çizim çalıştığında, adımlayıcının mevcut konumu 'ana' (0) konumu olarak alınır. Kademeyi gerçek 'ana' konumuna yeniden konumlandırmanız gerekirse, ANA SAYFA AYARI menüsünü görüntülemek için p komutunu girin.

HOME SET pos:0 sp:0.00 +Lim:1073741808 -Lim:-1073741808 GECİKME: step:752uS loop:3852uS x -- buraya setHome ve çıkış + -- Forward - -- Reverse s -- swap Forward/Reverse -- hardStop >

Gördüğünüz gibi krokide kodlanmış limitler kaldırıldı, böylece stepper'ı istediğiniz yere yeniden konumlandırabilirsiniz. Fiziksel sınırları aşmamaya özen göstermelisiniz, aksi takdirde bir şeyi kırabilirsiniz.

Adımlayıcıyı ileriye doğru hareket ettirmeye başlamak için + cmd'yi kullanın, yanlış yönde hareket ettiğini fark ederseniz, durdurmak için bir komut olmayan veya yalnızca boş bir satır girin ve ardından İleri yönünü değiştirmek için komutu kullanın. Bir sonraki çalıştırma için bunu düzeltmek için çizimi kurulumda invertDirectionLogic() çağrısı içerecek şekilde güncellemelisiniz.

Adımlayıcıyı doğru sıfır konumuna konumlandırmak için + / - cmds'yi kullanın. Motor yavaş çalışır ve ilerledikçe hızı artırır, durdurmak için hattı kullanın ve boşaltın. Bunun için maksimum hız ve limitler menüsü setupMenus.cpp'nin üst kısmındaki MAX_SETUP_SPEED tarafından belirlenir.

Motor 'ana' konumunda konumlandırıldığında, mevcut konumu 0 olarak yeniden ayarlamak için x cmd'yi kullanın ve KURULUM menüsüne dönün.

Sınırları ayarlamanız gerekiyorsa, genellikle yalnızca ilk kurulumda, LIMITS AYARLA menüsüne girmek için l cmd'yi kullanın.

LİMİT AYARLA pos:0 sp:0.00 +Lim:1073741808 -Lim:-1073741808 GECİKME: step:944uS loop:5796uS l -- setLimit burada + -- İleri - -- Geri h -- goHome x -- çıkış -- hardStop >

Artı sınırına daha fazla ilerlemek için + cmd'yi kullanın ve ardından artı sınırı olarak ayarlamak için l cmd'yi kullanın. Daha sonra h komutu 0'a dönmek için kullanılabilir ve – cmd, motorun eksi limitteki konumuna geri dönerse hareket etmek için kullanılabilir. Eksi sınırını ayarlamak için tekrar l cmd'yi kullanın. Artı ve eksi limitlerinin konumlarını not edin ve setup() yönteminin setPlusLimit ve setMinusLimit deyimlerini bu değerlerle güncelleyin.

Limitler ayarlandığında, KURULUM menüsüne dönmek için x cmd'yi kullanın ve ardından RUN menüsünü açmak için r cmd'yi kullanabilirsiniz.

RUN MENU pos:0 sp:3.31 +Lim:500000 -Lim:-500 LATENCY: step:944uS loop:5796uS + -- Hızlanma - -- Hız düşürme h -- goHome. -- hardStop -- dondurma Hızı >+ poz:4 sp:9.49 +Lim:500000 -Lim:-500 LATENCY: step:792uS loop:5664uS pos:42 sp:29.15 +Lim:500000 -Lim:-500 LATENCY: step:792uS loop:5664uS pos:120 sp:49.09 +Lim:500000 -Lim:-500 LATENCY: step:792uS loop:5664uS pos:238 sp:69.06 +Lim:500000 -Lim:-500 LATENCY: step:792uS loop: 5664uS

+ cmd ileri yönde hızlanmaya başlar ve her 2 saniyede bir konumu ve hızı yazdırır. Motor istediğiniz hıza ulaştığında herhangi bir tuş (veya boş bir giriş) ile ivmeyi durdurabilirsiniz. Durdurmak için – cmd aşağı tuşunu kullanarak hızı azaltabilirsiniz. Durdurulursa – cmd tersine hızlanır.

Bu RUN menüsü projenizin manuel kontrolünü sağlar. Otomatik kontrol için başka sensörler eklemeniz gerekecektir.

5. Adım: Gecikme

Step motor kontrolü, her adıma komut veren yazılıma bağlıdır. Ayarlanan hızı korumak için çiziminizin stepper.run() yöntemini geçerli hız için doğru zamanda bir sonraki adımı başlatmaya yetecek sıklıkta çağırması gerekir. Sensörler aracılığıyla kontrol için yeni ölçümleri hemen işleyebilmeniz gerekir. Konum/hız çıktısı, çiziminizin yeterince hızlı olup olmadığını kontrol etmenize izin veren iki GECİKME ölçümü içerir.

Adım Gecikmesi (pfodBufferedStream)

Adım gecikmesi, stepper.run() yöntemine yapılan ardışık çağrılar arasındaki maksimum gecikmeyi ölçer. Adım motorunu saniyede 1000 adımda çalıştırmak için adım gecikmesinin 1000uS'den (1mS) az olması gerekir. Bu çizimin ilk versiyonu, birçok milisaniyelik bir gecikme süresine sahipti. Bu ekstra çağrıların üstesinden gelmek için, kod aracılığıyla eklenen runStepper() yöntemine (stepper.run() öğesini çağırır) yapılan çağrılar. Bu, sorunu tamamen çözmedi çünkü menü ve çıktı yazdırma ifadeleri, küçük Seri Tx arabelleği dolduğunda çizimi engelledi. Bu engellemeyi önlemek için, yazdırma ifadelerinin hızla yazabileceği 360 baytlık bir çıktı yazdırma arabelleği eklemek için pfodParser kitaplığından pfodBufferedStream kullanıldı. Daha sonra pfodBufferedStream, bu durumda 115200 belirtilen baud hızında baytları serbest bırakır. pfodBufferedStream, arabellek dolduğunda engelleme veya yalnızca taşma karakterlerini bırakma seçeneğine sahiptir. Burada, arabellek dolduğunda fazladan karakter bırakacak şekilde ayarlanmıştır, böylece Serial'in karakter göndermesini beklerken çizim engellenmez.

Döngü Gecikmesi (NonBlockingInput)

Döngü gecikmesi, loop() yöntemine yapılan ardışık çağrılar arasındaki maksimum gecikmeyi ölçer. Bu, yeni sensör ölçümlerini ne kadar hızlı işleyebileceğinizi ve motor ayar hızını ayarlayabileceğinizi belirler. O zaman ne kadar hızlı olması gerektiği, neyi kontrol etmeye çalıştığınıza bağlıdır.

Print ifadelerinden kaynaklanan gecikmeler, yukarıdaki pfodBufferedStream kullanılarak kaldırıldı, ancak kullanıcının girdisini işlemek için girdinin yalnızca ilk karakterini almanız ve satırın geri kalanını yok saymanız gerekir. pfodParer kitaplığındaki NonBlockingInput sınıfı, girdi olduğunda readInput() kullanarak sıfır olmayan bir karakter döndürmek ve döngüyü engellemeden 10mS boyunca hiçbir karakter alınmayana kadar clearInput() kullanarak aşağıdaki karakterleri temizlemek ve atmak için kullanılır. ()

Elbette, sensörleri okumak ve yeni ayarlanan hızı hesaplamak için eklediğiniz ekstra kodla döngü gecikmesi artacaktır. Birçok sensör kitaplığı, bir ölçümün başlatılması ile sonucun alınması arasında yalnızca gecikme (..) kullanarak sıralamayı alır. Engellemeyen uygun bir gecikmeden sonra ölçümü almak için bunun yerine millisDelay kullanmak için bu kitaplıkları yeniden yazmanız gerekecektir.

Adım 6: SpeedStepperSetup'ı Step Motor ve SparkFun Redboard Turbo ile Çalıştırma

SpeedStepperSetup'ı Step Motor ve SparkFun Redboard Turbo ile Çalıştırma
SpeedStepperSetup'ı Step Motor ve SparkFun Redboard Turbo ile Çalıştırma
SpeedStepperSetup'ı Step Motor ve SparkFun Redboard Turbo ile Çalıştırma
SpeedStepperSetup'ı Step Motor ve SparkFun Redboard Turbo ile Çalıştırma

SpeedStepperSetup taslağını gerçek anlamda çalıştırmak için bir step motora, sürücüye ve güç kaynağına ihtiyacınız olacak ve bu örnekte SparkFun Redboard Turbo.

Yukarıdaki bağlantı şeması (pdf versiyonu) bağlantıları göstermektedir. SpeedStepperSetup çiziminde SERIAL tanımını #define SERIAL Serial1 olarak değiştirin

Step Motor, Güç Kaynağı, Sürücü ve Koruma

Step motorların birçok türü ve boyutu vardır. Burada test için iki bobinli 12V 350mA step motor kullanılmıştır. Bu stepper'a güç sağlamak için 12V veya daha fazla ve 350mA'dan büyük bir güç kaynağına ihtiyacınız var.

Bu kitaplık yalnızca bir yön ve adım çıkışı sağlar, bu nedenle adım motoruyla arabirim oluşturmak için bir sürücüye ihtiyacınız vardır. Easy Driver ve Big Easy Driver motorun bobinlerine giden akımı kontrol eder, böylece daha yüksek voltajlı bir güç kaynağını güvenle kullanabilirsiniz, örneğin 3.3V motor için 6V besleme kullanarak. Easy Driver, 150mA/coil ve 700mA/coil arasında besleme yapabilir. Daha yüksek akımlar için Big Easy Driver, bobin başına 2A'ya kadar güç sağlayabilir. Easy Drive sayfasının altındaki SSS'leri okuyun.

Bu örnekler, Adım ve Yön çıkışları olarak D6 ve D7'yi kullanır. Çizimin üst kısmına yakın STEP_PIN ve DIR_PIN ayarlarını değiştirerek çıkış pinlerini herhangi bir dijital çıkışa değiştirebilirsiniz.

Sparkfun Redboard Turbo'yu Programlama

Redboard Turbo'yu programlamak sorunlu. Programlama başarısız olursa, önce sıfırlama düğmesine bir kez basın ve Arduino Tools menüsünde COM portunu yeniden seçin ve tekrar deneyin. Bu işe yaramazsa, sıfırlama düğmesine iki kez basın ve tekrar deneyin.

Easy Driver'ı kablolama

İki bobinli step motorun 4 teli vardır. Her bobine bağlanan çiftleri bulmak için bir multimetre kullanın ve ardından bir bobini Easy Driver A terminallerine ve diğer bobini B terminaline bağlayın. Bunları hangi yöne bağladığınız önemli değil çünkü hareket yönünü değiştirmek için kurulum menüsündeki s cmd'yi kullanabilirsiniz.

Motor güç kaynağı M+'ya bağlanır ve GNDS3/5V bağlantısıyla kartın mantık seviyesini ayarlayın. SparkFun Redboard Turbo gibi 3.3V mikroişlemci çıkışları için bağlantıyı kısa devre yapın (açık bırakırsanız 5V dijital sinyaller için uygundur, örn. UNO, Mega)GND, STEP, DIR pinlerini mikroişlemci GND'ye ve adım ve dir çıkış pinleri. Motoru sürmek için başka bağlantı gerekmez.

USB'den TTL'ye Seri Kablo

SpeedStepperSetup taslağını Uno/Mega'dan Redboard Turbo'ya taşırken, saf bir şekilde #define SERIAL Serial'i Redboard Turbo usb seri bağlantısına uyacak şekilde #define SERIAL SerialUSB ile değiştirebilirsiniz, ancak sonuçta ortaya çıkan step gecikmesinin yaklaşık 10mS olduğunu göreceksiniz. Bu, UNO'dan 10 kat daha yavaştır. Bu, Redboard işlemcinin USB bağlantısını nasıl yönettiğinden kaynaklanmaktadır. Bunu aşmak için, bir USB - TTL Seri Kablosunu D0/D1'e bağlayın ve step motoru kontrol etmek için donanım seri bağlantısını kullanmak için #define SERIAL Serial1'i ayarlayın. Seri1'i kullanmak, adım ve döngü gecikmesi için UNO'dan 3 kat daha hızlı olan LATENCY: step:345uS loop:2016uS verir

Terminal Programı

Arduino Seri Monitörü, cmd satırına char'ı girmeniz ve ardından göndermek için Enter'a basmanız gerektiğinden step motoru kontrol etmek için kullanmak biraz daha zordur. Daha hızlı ve daha duyarlı bir yol, USB'den TTL'ye kablo COM bağlantı noktasına bağlı PC için TeraTerm (veya CoolTerm Mac) bir terminal penceresi açmaktır. Sonra o pencerede bir cmd tuşuna basmak hemen gönderir. Enter tuşuna basmak sadece boş bir satır gönderin.

Motor hız aralığının ayarlanması

Yukarıda kablolandığı gibi, Easy Drive 1/8'lik adımlar için yapılandırılır, bu nedenle 1000 adım/saniye, motoru 1000/8/200 adım/devir = saniyede 0,625 devir veya maksimum 37,5 rpm'de döndürür. Girişleri MS1/MS2 olarak değiştirerek 1/8, ¼, ½ ve tam adımlar arasında geçiş yapabilirsiniz. Tam adımlar için hem MS1 hem de MS2'yi GND'ye bağlayın. Bu, 300 rpm'ye kadar hızlara izin verecektir. Uygun MS1/MS2 ayarlarının seçilmesi, motor ile tahrik edilen parça arasındaki kurulu dişli oranını ayarlamanıza olanak tanır.

Donanım Koruması

SpeedStepper kitaplığı, motor hareketi üzerinde konum limitleri belirlemenize izin verirken, konumun puntalanması, yazılım tarafından çıktı olarak verilen adımları sayarak yapılır. Motor durursa, yani tork motoru bir sonraki adımda sürmek için yetersizse, yazılım konumu motor konumuyla senkronize olmayacaktır. Ardından 'goHome' komutunu kullandığınızda motor başlangıç konumunu aşacaktır. Donanımın zarar görmesini önlemek için motor güç kaynağının bağlantısını kesmek için limit anahtarlarını zor sınırlara yerleştirmelisiniz.

Motor akımı limitinin ayarlanması

İlk önce potansiyometrenin en düşük ayarına getirin. yani TP1'deki voltaj minimumdur. Potansiyometre hassastır, bu nedenle potansiyometreyi mekanik durakları geçmeye zorlamayın. Motoru yavaş, sabit bir hızda yavaş olarak ayarlayın, ardından motor adımlar arasında atlama yapana veya sarsıntı yapmayana kadar potansiyometreyi yavaşça çevirin.

Çözüm

Bu proje, SpeedStepper kitaplığının pratik bir uygulamada nasıl kullanılacağını gösterir. AccelStepper kitaplığı iyi konum kontrolü sağlarken, Europa'da Biyolojik Örneklerin Toplanması için Prototip Buz Eritme Probu için hız kontrolüne ihtiyaç duyuldu, bu nedenle AccelStepper kitaplığı, uç limitler ve bir goHome işlevi ile hız kontrolü sağlamak için yeniden yazıldı.

Önerilen: