LinuxCNC Servo Pulse Ayarı Nasıl Yapılır?

📑 İçindekiler (Tıkla Aç)
LinuxCNC servo pulse ayarı, eksenlerin doğru hareket etmesini sağlamak için SCALE ve PULSE_WIDTH parametrelerinin yapılandırılmasıyla yapılır. SCALE, encoder çözünürlüğü ve mekanik aktarım oranlarına göre G-kodu birimlerini (mm/inç) encoder sayısına dönüştürürken, PULSE_WIDTH ise servo sürücülerine gönderilen adım palsinin süresini (mikrosaniye) belirleyerek doğru tetiklemeyi sağlar. Bu ayarlar, LinuxCNC’nin INI ve HAL dosyaları üzerinden hassasiyetle yapılandırılır.
LinuxCNC Servo Pulse Ayarı Nasıl Yapılır? Nedir?
LinuxCNC, açık kaynaklı ve gerçek zamanlı bir sayısal kontrol (CNC) yazılımıdır. Endüstriyel otomasyon sistemlerinde, özellikle hassas konumlandırma gerektiren tezgahlar ve robotik uygulamalar için kritik öneme sahip olan servo motorların kontrolü, doğru pulse ayarlarıyla mümkün olur. LinuxCNC’de servo motorların hareketini yöneten temel prensip, kontrol kartı (genellikle mesa kartları gibi donanımlar) tarafından üretilen dijital palslerin (adım ve yön sinyalleri) servo sürücülere iletilmesidir. Bu palsler, sürücünün motoru belirli bir miktar döndürmesini sağlar. Bu döndürme miktarı, motorun enkoderi aracılığıyla geri beslenir ve LinuxCNC, bu geri beslemeyi kullanarak hedeflenen konum ile mevcut konum arasındaki farkı hesaplar ve bir PID döngüsü ile motoru doğru konuma getirir.
Servo pulse ayarı, temelde iki ana parametreyi kapsar: SCALE ve PULSE_WIDTH. Bu iki parametre, sistemin mekanik hassasiyetini, hız limitlerini ve servo sürücü ile olan iletişimini doğrudan etkiler. Yanlış ayarlanmış pals parametreleri, motorun titremesine, konum hatasına, hız limitlerinin aşılamamasına veya hatta hiç hareket etmemesine neden olabilir. Bu nedenle, LinuxCNC tabanlı bir sistemin kurulumunda ve optimizasyonunda bu ayarların doğru bir şekilde yapılması hayati önem taşır. SCALE değeri, G-kodu ile verilen birim başına (örneğin 1 mm) motorun kaç enkoder sayımı yapması gerektiğini belirlerken, PULSE_WIDTH ise bu sayımı tetikleyen palsin minimum süresini tanımlar. Bu ayarlar, genellikle sistemin INI dosyasında veya HAL (Hardware Abstraction Layer) dosyasında tanımlanır ve sistemin ilk başlatılmasında yüklenir.
Çalışma Prensibi ve Teknik Veriler
LinuxCNC’de servo motor kontrolü, kapalı döngü bir sistemdir. Bu sistemde, LinuxCNC yazılımı tarafından hesaplanan hedef konum, stepgen (adım jeneratörü) modülü aracılığıyla pals sinyallerine dönüştürülür. Bu palsler, fiziksel bir kontrol kartı (örn. Mesa 7i76E) üzerinden servo sürücülere gönderilir. Servo sürücü, bu palsleri yorumlayarak servo motoru döndürür. Motorun arkasında bulunan enkoder, motorun mevcut konumunu sürekli olarak LinuxCNC’ye geri bildirir. LinuxCNC, hedef konum ile geri bildirilen konum arasındaki farkı (hata) hesaplar ve bu hatayı minimize etmek için PID (Oransal-İntegral-Türevsel) kontrol algoritmasını kullanarak yeni pals sinyalleri üretir. Bu döngü saniyede binlerce kez tekrarlanarak motorun hassas bir şekilde hedeflenen konuma ulaşması sağlanır.
Bu süreçte, pulse ayarlarının rolü kritik öneme sahiptir:
-
SCALE (Ölçek Faktörü): Bu parametre, G-kodu komutlarında belirtilen birimlerin (genellikle milimetre veya inç) servo motorun enkoder sayımlarına nasıl dönüştürüleceğini tanımlar. Doğru SCALE değeri, sistemin mekanik yapısına (vida hatvesi, dişli oranları) ve enkoderin çözünürlüğüne bağlıdır. Hesaplama şu şekilde yapılabilir:
SCALE = (Enkoder Çözünürlüğü * Dişli Oranı) / Vida Hatvesi
Burada:- Enkoder Çözünürlüğü: Enkoderin bir tam turda ürettiği pals sayısıdır (örneğin, 2000 CPR – Counts Per Revolution).
- Dişli Oranı: Motorun bir turu başına tahrik edilen mekanik bileşenin tur sayısıdır (örneğin, 1:1, 2:1). Eğer doğrudan bağlantı varsa 1’dir.
- Vida Hatvesi: Lineer eksenlerde, vida milinin bir turda ilerlettiği mesafedir (örneğin, 5 mm/tur).
Örneğin, 2000 CPR enkoderli bir motor, 5mm hatveli bir vida milini doğrudan sürüyor ve 1:1 dişli oranı varsa, SCALE = (2000 * 1) / 5 = 400 olur. Bu, LinuxCNC’nin 1 mm hareket etmek için 400 enkoder sayımı yapması gerektiğini anladığı anlamına gelir. Yanlış bir SCALE değeri, tezgahın G-kodu komutlarına göre yanlış mesafeler kat etmesine neden olur. Bu parametre genellikle INI dosyasının
[AXIS_N]veya[JOINT_N]bölümünde yer alır. -
PULSE_WIDTH (Pals Genişliği): Bu parametre, servo sürücüye gönderilen her bir “adım” palsinin süresini mikrosaniye cinsinden belirler. Her servo sürücünün belirli bir minimum pals genişliği gereksinimi vardır. Bu değer genellikle sürücünün veri sayfasında belirtilir (örneğin, 2.5 µs, 5 µs). Eğer PULSE_WIDTH çok kısa ayarlanırsa, sürücü palsi algılayamayabilir ve motor hareket etmez veya düzensiz hareket eder. Çok uzun ayarlanması ise, sistemin maksimum adım frekansını düşürür ve dolayısıyla motorun ulaşabileceği maksimum hızı sınırlar. Bu durum, özellikle yüksek hızlı uygulamalarda performans kaybına yol açabilir. PULSE_WIDTH, genellikle INI dosyasının
[EMCMOT]bölümünde veya HAL dosyasında stepgen bileşeninin ayarlarında bulunur. - PULSE_MIN_PERIOD (Minimum Pals Periyodu) ve DIRSETUP/DIRHOLD: Bu parametreler de pals ayarlarının bir parçasıdır. PULSE_MIN_PERIOD, iki pals arasındaki minimum süreyi belirleyerek maksimum adım frekansını sınırlar. DIRSETUP ve DIRHOLD ise yön (direction) sinyali ile adım (step) sinyali arasındaki zaman gecikmelerini ayarlayarak sürücünün yön değişikliğini doğru algılamasını sağlar. Bu değerler de sürücü veri sayfalarından alınmalıdır.
| Parametre | Değer/Açıklama |
|---|---|
| SCALE | Her G-kodu birimi (mm/inç) için gereken enkoder sayımı. Hesaplama: (Enkoder CPR * Dişli Oranı) / Vida Hatvesi. Örn: 400 (counts/mm). |
| PULSE_WIDTH | Adım palsinin süresi (mikrosaniye). Sürücü veri sayfasından kontrol edilir. Örn: 5000 (ns) veya 5 (µs). |
| MAX_VELOCITY | Eksenin ulaşabileceği maksimum hız (mm/s veya inç/s). Mekanik sınırlamalara ve motor torkuna göre ayarlanır. Örn: 100 (mm/s). |
| MAX_ACCELERATION | Eksenin ulaşabileceği maksimum ivme (mm/s² veya inç/s²). Mekanik yapı ve motor gücü ile orantılıdır. Örn: 500 (mm/s²). |
| DIRSETUP/DIRHOLD | Yön sinyali ile adım sinyali arasındaki gecikme süreleri (ns). Sürücüye göre ayarlanır. Örn: 10000 (ns). |
| PULSE_MIN_PERIOD | İki adım palsi arasındaki minimum süre (ns). Maksimum adım frekansını belirler. Örn: 20000 (ns). |
| PID Ayarları (P, I, D) | Servo döngüsünün kararlılığını ve tepki süresini ayarlayan katsayılar. Hassas ayar gerektirir. Örn: P=100, I=0.1, D=1. |

Sahada Dikkat Edilmesi Gerekenler
- Doğru Enkoder ve Mekanik Hesaplamalar: SCALE değerini belirlerken enkoder çözünürlüğünü, vida hatvesini ve varsa dişli oranlarını son derece hassas bir şekilde ölçün ve hesaplayın. Küçük bir hata bile zamanla büyük konum sapmalarına yol açabilir. Örneğin, enkoderin PPR (Pals Per Revolution) yerine CPR (Counts Per Revolution) değerinin kullanıldığından emin olun. Bazı enkoderler 4x kodlama yapar, bu durumda PPR değeri 4 ile çarpılarak CPR elde edilir.
- Sürücü Veri Sayfalarına Titizlikle Uygunluk: Servo sürücünüzün veri sayfasını dikkatlice inceleyin. PULSE_WIDTH, DIRSETUP ve DIRHOLD gibi zamanlama parametreleri için üreticinin önerdiği minimum ve maksimum değerlere kesinlikle uyun. Bu değerlerin dışında bir ayar, motorun düzgün çalışmamasına, titremesine veya hiç hareket etmemesine neden olabilir. Genellikle, önerilen minimum değerden biraz daha yüksek bir PULSE_WIDTH kullanmak daha güvenli bir başlangıç noktası olabilir.
- Elektriksel Gürültü ve İzolasyon: Endüstriyel ortamlarda elektriksel gürültü yaygın bir sorundur. Servo pals sinyalleri, yüksek frekanslı anahtarlama yapan motor sürücülerinden ve diğer güç elektroniği cihazlarından etkilenebilir. Sinyal kablolarını ekranlı (shielded) kullanın ve topraklamayı doğru yapın. Kontrol kartı ile sürücüler arasındaki sinyal kablolarını güç kablolarından ayrı rotalarda geçirmeye özen gösterin. Optik izolatörler, gürültüyü azaltmada etkili bir yöntemdir.
- Mekanik Boşluk (Backlash) ve Rijitlik: Servo sistemlerde mekanik boşluklar, özellikle yön değiştirirken konum hatalarına yol açar. LinuxCNC’de backlash telafisi yapılabilse de, en iyi çözüm mekanik sistemdeki boşlukları minimize etmektir. Redüktörler, kaplinler ve vida millerindeki boşlukları kontrol edin. Sistemin genel rijitliği, PID ayarlarının etkinliğini ve servo tepkisini doğrudan etkiler. Gevşek bağlantılar veya esnek yapılar, titreşime ve konumlandırma hatalarına neden olabilir.
- Kademeli Test ve Doğrulama: Ayarları yaptıktan sonra sistemi hemen tam hızda çalıştırmayın. Öncelikle motorun doğru yönde hareket ettiğini, küçük mesafelerde (örneğin 10 mm) doğru ilerlediğini test edin. Ardından hızı ve ivmeyi kademeli olarak artırarak sistemin kararlılığını gözlemleyin. Bir kadranlı komparatör veya lazer interferometre gibi hassas ölçüm cihazları kullanarak gerçek hareket mesafesini, G-kodu ile verilen komutlarla karşılaştırın.
- Yedekleme ve Versiyon Kontrolü: Herhangi bir ayar değişikliği yapmadan önce INI ve HAL dosyalarınızın bir yedeğini alın. Bu, yanlış bir ayar yapıldığında kolayca geri dönmenizi sağlar. Büyük projelerde, versiyon kontrol sistemleri (Git gibi) kullanarak yapılandırma dosyalarındaki değişiklikleri takip etmek, ekip çalışması ve sorun giderme açısından büyük fayda sağlar.

Sık Karşılaşılan Sorunlar ve Çözümleri
-
Motor Titremesi veya Gürültü:
- Sorun: Motor rölantide titriyor, istenmeyen sesler çıkarıyor veya düzgün hareket etmiyor.
- Çözüm:
- PULSE_WIDTH Kontrolü: Sürücünün veri sayfasındaki minimum PULSE_WIDTH değerini kontrol edin. Genellikle 2-5 mikrosaniye (2000-5000 ns) aralığındadır. Bu değeri biraz artırarak (örneğin 5000 ns’den 7500 ns’ye) sürücünün palsi algıladığından emin olun.
- PID Ayarları: Titreme genellikle yanlış PID ayarlarından kaynaklanır. Özellikle P (Oransal) kazancının çok yüksek olması, sistemin salınım yapmasına neden olabilir. P’yi kademeli olarak düşürün. D (Türevsel) kazancı ise titreşimi sönümlemeye yardımcı olabilir.
- Gürültü Kontrolü: Sinyal kablolarının ekranlı olduğundan ve güç kablolarından uzak tutulduğundan emin olun. Topraklama sorunlarını kontrol edin.
-
Hatalı Mesafe Katetme (Yanlış Konumlandırma):
- Sorun: G-kodu ile 100 mm hareket komutu verildiğinde motor 98 mm veya 102 mm hareket ediyor.
- Çözüm:
- SCALE Değeri: SCALE parametresinin doğru hesaplandığından emin olun. Enkoder çözünürlüğünü (CPR), vida hatvesini ve varsa dişli oranlarını tekrar ölçün ve hesaplayın.
- Mekanik Boşluk (Backlash): Özellikle yön değiştirirken bu sorun belirginleşiyorsa, mekanik boşluk olabilir. Backlash telafisi ayarlarını LinuxCNC’de yapılandırın veya mekanik boşluğu giderin.
- Motor Kaybı (Step Loss): Servo sistemlerde kayıp nadirdir ancak motorun torku yetersizse veya mekanik sıkışma varsa olabilir. MAX_VELOCITY ve MAX_ACCELERATION değerlerini kontrol edin.
-
Motor Hareket Etmiyor veya Düzensiz Hareket Ediyor:
- Sorun: Motor hiç hareket etmiyor veya sadece titriyor.
- Çözüm:
- Kablolama Kontrolü: Servo sürücüye giden pals ve yön sinyal kablolarının doğru bağlandığından ve kopukluk olmadığından emin olun.
- Sürücü Enable Sinyali: Servo sürücünün “Enable” (Etkinleştirme) sinyalinin LinuxCNC tarafından doğru bir şekilde verildiğini kontrol edin. Genellikle HAL dosyasında bu bağlantı yapılır.
- PULSE_WIDTH: Daha önce belirtildiği gibi, PULSE_WIDTH’in sürücünün algılayabileceği minimum değerden büyük olduğundan emin olun.
- Limit Anahtarları: Bazen limit anahtarlarının yanlış tetiklenmesi veya yanlış bağlanması, motorun hareket etmesini engelleyebilir. Limit anahtarlarının durumunu LinuxCNC’nin HAL göstericisinden kontrol edin.
- Güç Kaynağı: Servo sürücü ve motor için yeterli güç sağlandığından emin olun. Voltaj düşüşleri veya yetersiz akım motorun performansını etkileyebilir.
-
“Joint N following error” veya “Motor overtravel” Hataları:
- Sorun: Sistem hareket sırasında takip hatası veriyor veya limit dışına çıktığını belirtiyor.
- Çözüm:
- PID Ayarları: Takip hatası genellikle yanlış PID ayarlarından kaynaklanır. P kazancını artırmak tepkiyi hızlandırabilir ancak aşırı artış salınıma yol açar. D kazancı, aşırı atımı (overshoot) azaltabilir. I kazancı ise uzun vadeli statik hatayı giderir.
- MAX_VELOCITY/MAX_ACCELERATION: Motorun veya mekanik sistemin kaldırabileceğinden daha yüksek hız veya ivme ayarlanmış olabilir. Bu değerleri düşürerek test edin.
- Mekanik Sürtünme/Sıkışma: Mekanik sistemde sürtünme veya sıkışma olması, motorun hedeflenen hıza ulaşmasını engelleyerek takip hatasına neden olabilir.
- Limit Anahtarları: Limit anahtarlarının doğru konumda ve hassasiyette ayarlandığından emin olun. Bazen yanlış tetikleme veya gürültü nedeniyle hatalı limit uyarısı alınabilir.
Uzman Tavsiyesi
LinuxCNC’de servo motor pulse ayarları, bir endüstriyel otomasyon sisteminin hassasiyetini, kararlılığını ve performansını doğrudan belirleyen temel yapılandırma adımlarından biridir. Bu ayarların doğru yapılması, G-kodu komutlarının fiziksel harekete kusursuz bir şekilde dönüşmesini, yüksek hızlı ve hassas işleme yeteneğini ve uzun vadede sistemin güvenilirliğini garanti eder. Sahada çalışan bir uzman olarak, bu sürece sistematik ve sabırlı bir yaklaşımla yaklaşmanın önemini vurgulamak isterim. Herhangi bir parametreyi değiştirirken, bu değişikliğin sistemin diğer bileşenleri üzerindeki potansiyel etkilerini göz önünde bulundurun. Başlangıçta yavaş hızlarda ve küçük hareketlerle test etmek, olası sorunları erken aşamada tespit etmenizi sağlar.
Unutmayın ki her servo motor, sürücü ve mekanik sistem kombinasyonu kendine özgüdür. Bir sistemde mükemmel çalışan ayarlar, başka bir sistemde sorunlara yol açabilir. Bu nedenle, üretici veri sayfalarını derinlemesine incelemek, LinuxCNC topluluğunun sunduğu kaynaklardan (forumlar, wiki) faydalanmak ve tecrübeli kullanıcılardan veya entegratörlerden destek almak, sürecinizi hızlandırabilir ve daha güvenilir sonuçlar elde etmenizi sağlayabilir. Özellikle PID ayarlarının optimizasyonu, biraz deneme-yanılma ve gözlem gerektiren bir süreçtir; bu noktada LinuxCNC’nin “Tune PID” veya “Plot” araçları büyük kolaylık sağlar. Elektriksel gürültüye karşı koruma, doğru topraklama ve kaliteli kablolama gibi temel elektrik prensiplerine uymak, yazılımsal ayarlar kadar önemlidir. Son olarak, tüm yapılandırma dosyalarınızı düzenli olarak yedeklemek, olası bir problemde hızlıca eski, çalışan bir duruma dönmenizi sağlayarak değerli zaman kaybını önleyecektir. Bu kılavuzdaki adımları takip ederek ve sürekli öğrenme ve gözlemle, LinuxCNC tabanlı servo sistemlerinizden en yüksek verimi alabilirsiniz.



































































































































































































