3D yazıcı kontrolörleri çok, çok hızlı bir çok şey yapmak zorunda. Saniyede binlerce tam senkronize adım atımı gönderirken kinematik ve dinamik hesaplamaları yapmak gerçekten çok zor . Eski 3D yazıcı kontrol cihazlarında kullanılan 8bit AVR mikrokontrolör serisi 1990'ların sonlarında Mr Coffee işlemcisiydi. Basit (sadece Kartezyen) yazıcılarda sadece temel baskı işlevlerini yerine getirerek işlemci zamanına tamamen bağlı kalıyorlar ve ek hesaplama yükü eklemek onları yavaşlatacak ve yavaşlama, kekemelik, duraklama vb.
"Ama 8bit yazıcım iyi çalışıyor" diyorsunuz. Hayır değil. Baskı performansınız, fark etseniz de etmeseniz de, sınırlıdır. Dilimleyiciler, artık otomatik olarak bellenimin performans eksikliklerini sizden gizliyor. Örneğin, çevre üzerindeki baskı hızlarını oldukça yavaşlatmanın standart uygulaması, büyük ölçüde iki şey için yetersiz kaynaklara sahip 8 bit işlemcilerin bir sonucudur:
- Çoklu gcode segmentleri boyunca eğriler için merkezcil ivme hesaplamaları yapma
- Organik modeller veya pürüzsüz yaylar gibi çok küçük kesimlere sahip gcode için gcode iletimi / işlenmesi ve hareket planlamasını takip etmek
Düzgün bir yay veya karmaşık bir eğri içinde çok küçük bir dizi bölüm ile sunulduğunda, 8 bit bellenim muhtemelen gerekli komut işleme hızını tıkayacak ve baskıya kekemelik yaratacaktır. Bu inanılmaz derecede kısa duraklamalar, ekstruderdeki artık basıncın fazladan plastik çıkmasını sağlayarak baskıya biraz etki etmesini sağlar. Bu nedenle çoğu dilimleyici, ürün yazılımı üzerindeki yükü hafifletmek için eğrileri otomatik olarak düşürür ve çözünürlüğü düşürerek gcode verir. Sorun çözüldü değil mi?
Ancak bir başka sorun daha var - tüm büyük açık kaynaklı 3D yazıcı kontrol cihazlarının temelini oluşturan GRBL hareket kontrolü algoritmaları, 8bit işlemcilerin yeterince hızlı çalışmasına izin vermek için birçok kısayol ve kesmeyle tasarlandı. Örneğin, temel algoritma yalnızca iki bölüm arasındaki köşedeki hız veya hız değişikliğine bakar ve hareket yönü boyunca ne zaman yavaşlayacağına / hızlanacağına karar vermek için bunu kullanır. Merkezcil / radyal ivmeyi hiçbir şekilde hesaplamaz veya dikkate almaz. Bu kutu, düşük çözünürlüklü modelleri yazdırırken gerçekten etkili bir kesmektir, ancak çok sayıda küçük kesime sahip pürüzsüz eğrilerde sefil bir şekilde başarısız olur. Ürün yazılımı, yönlü eğrinin içindeki neredeyse doğrusal iki bölümün köşesinde kayda değer bir hız değişikliği tespit etmez ve bu nedenle eğri için yavaşlamaz.
Karmaşık perimetreleri hızlandırılmadan yazdırma, komut verilen besleme hızının iyi kalite elde etmek için çok düşük olması gerektiği anlamına gelir. Yazıcıların çoğu, diğer hız sınırlarına ulaşmadan önce düşük karmaşıklıktaki dolgunda 80-120 mm / sn çalışabilmesine rağmen, karmaşık perimetrelerde yaklaşık 40 mm / sn veya daha azıyla sınırlıdır.
Düşük güç işlemcilerinin ihtiyaç duyduğu komut işlem hızı limitleri ve hareket planlayıcı eksiklikleri arasında, baskı hızlarının pratikte fizik ve yazıcı donanımı için kesinlikle gerekenden çok daha düşük olması gerekir. Bunların hepsi 8bit işlemcilerden geliyor. Bu sorunla başa çıkmak için geçici çözümler ve en iyi uygulamalar araç zincirlerine ve ekosisteme o kadar derinden girer ki, çok az insan bir problem olduğunu bile fark eder. Ancak bunun üstesinden gelinebilecek gerçek bir sınır var: Daha sıkı bir hareket planlayıcısı çalıştıran yüksek hızlı bir işlemci, daha iyi baskı kalitesinde daha yüksek ortalama baskı hızları üretebilir .
Bununla birlikte, ARM tabanlı yazılımlar daha yavaş hareket planlayıcılarına doğru yavaşça hareket ediyor. Bu, şu anda Cortex M3 gibi düşük seviye ARM'lerden daha da hızlı işlemcilere doğru yaklaşan bir kaymaya neden olan büyük bir gelişme alanı. Bir sürü ürün yazılımı özelliğini kazıklayarak 84 MHz Arduino Due'ı maksimize etmek aslında o kadar da zor değil.
8 bit işlemcilerin kullanılması da yazıcıları LOUDER yapar. Tipik bir 8 bitlik yazıcıdaki en büyük işlemci süresi tüketicisi, motorların hareket etmesini sağlamak için adım pulslarını ateşleyen adım kesmedir. Atmega AVR'deki tüm saat döngülerinin>% 60'ının ateşleme adımı atımlarına gitmesi oldukça tipiktir. Bu bir kesme olarak gerçekleştiğinden, yazıcının yapması gereken - ivme hesaplamaları ve ısıtıcı kontrolü gibi - diğer işlem görevleri, adım kesme olayları arasındaki kısa boşluklara sıkıştırılır.
Dikkatli ürün yazılımı tasarımı olmadan, adım darbeleri, LCD ekran güncellemeleri ve hızlanma hesaplamaları gibi diğer işlevleri tamamen "kalabalıklaştıracaktır". Tüm işlemci kaynaklarını kullanmadan daha yüksek hareket hızlarına izin vermek için, 8bit firmwares adım adımı başına iki (veya dört veya sekiz) adım atımını başlatan "yarım katlama" adı verilen bir moda sahiptir, böylece yarım (veya çeyrek veya sekizinci) ) aynı hareket hızını üretmek için birçok kademeli kesme kullanılabilir. Bu uygulama işlemciyi kapatır, ancak daha pürüzlü ve daha yüksek motor hareketine neden olur, çünkü adım darbeleri sabit bir frekanstan çok patlamalarda patlar. Aslında, adım adım kesmesi iki ya da dört adım attığında motorun mikro adım seviyesi işlevsel olarak daha kaba bir moda bırakılır. Böylece motorlar daha yüksek, daha az hassas
İlginç bir yan etki, Marlin tabanlı bir yazıcıyı 1/16 microstepping'den 1/32 microstepping'e değiştirirseniz ve aynı baskı hızlarını korursanız, bellenim, etkin mikrostepleme seviyenizi hemen aşağıya düşürerek adım adım iki katına çıkacaktır. 1/16.
ARM tabanlı yazılımlar ayrıca adım ikiye katlamayı da kullanır, ancak izin verilen adım hızları, çift / dört adımlama kullanılmadan önce tipik olarak ~ 8 kat daha yüksektir. Bu, daha yüksek hız ve / veya daha yumuşak hareket anlamına gelebilir.
8 bit AVR'lerde bir başka sorun da donanım kayan nokta eksikliği ve yüksek hassasiyetli hesaplamalar veya çok büyük sayılarla işlem yapmak için birçok saat döngüsü harcaması gerekiyor. Delta kinematik, otomatik seviyeleme işlevleri, büyük yazıcılar için son derece yüksek adım sayımlarıyla hareketleri hesaplama ve diğer gelişmiş işlevselliklerin tümü 8bit işlemcide çok fazla saat döngüsü alır. Zayıf bellenim tasarımı veya dikkatsizce birkaç ekstra kare kök gerektiren bir özellik eklenmesi ve trig fonksiyonları işlemciyi tamamen durdurabilir. Bu tür bir özellik sürünme ve kod şişirme, insanlar eski AVR'lerden giderek daha fazlasını istediklerinde Marlin'in zaman içindeki performansını ciddi şekilde etkiledi.
Buna karşılık, bir 32bit işlemci sadece daha hızlı bir saat ve daha fazla saat döngüsüne sahip değil, aynı zamanda daha az saat döngüsünde çok daha karmaşık matematik yapabiliyor çünkü 8bit'lik adımların çoğunu halleden özel bir işlevselliğe sahip. İşlemcinin yazılımda yapması gerekir.
8bit işlemciler çalışıyor mu? Elbette, ne oldukları ve ne istediğimiz için şaşırtıcı derecede iyi çalışıyorlar. Ancak, modern 3D yazıcıların performansını ve özelliklerini tartışmasız sınırlarlar. Bugünün 32bit işlemcilerin nesli bile, yüksek hızlı yazıcılar ve matematik ağırlıklı özellikler ile şimdiden maksimuma çıkarılıyor. 8bit işlemci, "modern" bir 3D yazıcı denetleyicisi olarak nitelendirilebilecek olanın ardında zaten iki kuşak.