Step Motor Sürmede S Curve algoritması kullanımı

Mucit23

Üye
Katılım
7 Ekim 2022
Mesajlar
46
Selamlar

2 eksen step motor sürücü yapmak istiyorum. Daha önce basit birkaç uygulamam olmuştu. Kafamda takılan birkaç konu var.

S-Curve algoritmasında Step motor jerk titremesine girmemesi için ivmeyi ve hızı yavaş yavaş arttırıp azaltıyor. Buradaki mantık bildiğim kadarıyla şu

Scurve Algoritması ile Güncel pozisyon ve hedef pozisyona göre Hız pozisyon ivme değerleri hesaplanır.
Timer Update Frekansı hesaplanan Scurve değerlerine göre güncellenir
Timer Update frekansına göre kesme oluşur.
Kesme içerisinde yine Scurve hesaplamaları yapılır ve hesaplama sonucu elde edilen Scurve verileri ile yine Timer update frekansı güncellenir.
Son olarak kesme içerisinde Step motora puls gönderilerek adım attırılır. Güncel pozisyon değeri arttırılır yada azaltılır.

Bu döngü böyle devam ettirilir. Buradaki mantıkta bir yanlışlık var mı acaba?

Bu mantıkta Yüksek hızlarda STM32 MCU ya onlarca hesap yaptırıyor. Birkaç ayrı step motoru bu mantıkla kontrol ettiğimizde her motora bu işlemleri yapıp motorun hız ve pozisyon değerlerini kontrol etmek için nasıl bir yapı kurulmalı?
 
Klasik trapezoidal hiz kontrolunda ivme -Imax, 0, Imax olabilir.

S curve de Ivne jerkin integrali alinarak elde edilir.. Bu kez jerk -jmin, 0 , -jmax olur.

Yani ilave olarak bir integrator daha isin icine girecek.

Bu durumda ivme trapeziodal sekle burunur.

Once isin matematigini oturtacaksin. Timer kisimlari sonrasinda.
 
Son düzenleme:
Marlin firmware kaynak kodunu incele. Bu ve daha başka bir sürü algoritma gerçekleştirilmiş durumda

 
Aslında işin matematiğine kafa yorup çok boğulmak istemiyorum. Hızlıca en az maliyetli algoritmayı kullanıp geçmek istiyorum. Amacım bu değil. Daha önce Arduino platformunda kullanılan AccelStepper kütüphanesini STM32 tarafında derlenecek şekilde kopyalamıştım. Gayet verimli çalışıyordu. Fakat bu algoritma da her puls ürettiğinde kesme oluşturup kesme içerisinde pozisyon hız ivme hesabı yapıyordu. Bu konuyu açma sebebim aslında 3-4 motor olursa her motoru paralel bir şekilde kontrol edince MCU lar bu iş yüküyle nasıl başa çıkıyor. Bu konuda nasıl optimizasyonlar yapılıyor bunu öğrenmek.

Benim amacım iki Eksen XY platformunda bir tablada deprem sarsıntısı benzeri sarsıntılar yaratmak. Toplam hareket alanım +-50cm. Hatta CoreXY tarzı bir platform kurabilirim.

Ben ilk başta step motor kullanırım diye düşündüm ama AC servo kullanmak daha mantıklı. 400W servo sürücü takım uygun fiyata alabiliyorum. Daha önce 0.75KW servo sürücü takım kullanarak tek eksende benzer bir iş yaptım. Fakat orada Delta Asda A2 serisi servo sürücü kullanıp doğrudan PC ve Modbus üzerinden yazmış olduğum yazılımla Pozisyon değeri göndererek kontrol ediyordum. Delta Servo takımlar şuan çok pahalı. Daha uyguna Servo takım alıp Pulse ve DIR ile kontrol etmek daha uyguna gelecek. Daha önce hiç Servoları bu şekilde sürmedim ama mantık Step motorlarla aynı diye biliyorum.
 
Opera Anlık Görüntü_2025-12-25_001707_www.desmos.com.png


:)
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
8,704
Mesajlar
142,008
Üyeler
3,473
Son üye
vecivicivokke

Son kaynaklar

Son profil mesajları

Abdullah karaoglan falcon_browning Abdullah karaoglan wrote on falcon_browning's profile.
selamın aleyküm ses sistemindeki cızırtıyı hallettınızmi
"Araştırma, ne yaptığını bilmediğinde yaptığın şeydir." - Wernher von Braun
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Back
Top