ARM tabanlı elektronik kullanmanın faydası nedir?


22

Çoğu elektronik bir AVR gibi mikro denetleyiciler kullanır, ancak yeni elektroniklerde ARM çipleri görüyorum. ARM çiplerinin daha güçlü olduğu söyleniyor, ancak 3D baskı ile ilgili hangi alanlarda bu yardımcı olabilir? AVR’ın mücadele ettiği ve bir ARM’in daha iyi olabileceği özellikler nelerdir?

Yüksek hızlı hareket? Delta yazıcıları? Grafik ekranı?

Ve AVR gerçekten orada sınırlama var mı?

Yanıtlar:


23

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:

  1. Çoklu gcode segmentleri boyunca eğriler için merkezcil ivme hesaplamaları yapma
  2. 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.


Eğer gerçek zamanlı matematik ve hesaplama bir sorunsa, neden FPGA'nın step kontrolünü ve benzerlerini sürmek için kullanılması gibi tam olarak programlanabilir bir mantıkta pek çaba gösterilmiyor?
Monica’yı eski durumuna getirin - ζ--

FPGA'lar pahalı değil mi?
Leo Ervin

Ekstra maliyet ve karmaşıklık. Daha hızlı bir çip kullanabiliyorken neden iki çipi koordine edelim? Orada aslında bir kaç FPGA tabanlı proje var, ancak hiçbiri kullanıcı alımı için kritik bir kitleye çarpmadı.
Ryan Carlyle

1
@RyanCarlyle İki fişin koordine edilmesi gerektiği fikri doğru değil. Bir FPGA seri olarak tek bir pakette seri, ayrıştırma, planlama ve adımlama yapabilir (yumuşak çekirdekli MCU ile mümkün). Maliyet olsa da bir faktördür.
Reinstate Monica - ζ--


11

Genel olarak, AVR aslında bugün kullanılan birçok ARM çekirdeğinden daha az güçlüdür. AVR'li yazıcıların çoğunda kayan noktalı işlemciler yoktur, ancak çok fazla adım ve hareket kontrolü yalnızca tam sayıdaki matematikte yapılabilir (G2 / G3 hariç). Marlin, AVR'de saniyede 10000 kez basamağa müdahale ederek saniyede 40000 basamağa çevirebilir. Bu, özellikle bu hızlarda hareket edebilen ve yine de anlamlı sonuçlar basabilen (veya çok daha hassas olan ve benzer bir hızda mm başına adım başına çok daha yüksek bir adım olan) mekanik bileşenler olmadan kullanışlı değildir.

Grafik ekran, düşük hızlarda yapılacak özellikle vergilendirici bir şey değildir - yüksek hızlar veya garip arayüzler biraz daha fazla güç veya özel bir kesinti gerektirebilir.

ARM'in önemli olabileceği zamanlar, her hareketin çok fazla kayan nokta ve trig işlemi gerektirdiği ve 16MHz AVR'deki (atmega2560) menülerdeki navigasyonun tanımlandığı delta gibi daha ağır ve özellikle kayan nokta ağırlıklı kurulumlar içindir. olarak "acı yavaş", ancak Marlin delta tarzı yazıcılarda anlamlı sonuçlar baskı başarılı gelmez.

Açıkça görülüyor ki, yumuşak kayan nokta gerçekleştirmede daha hızlı olan ya da sert yüzeyli yüzeyi destekleyen (kayan nokta işlemlerini çok verimli yapan donanım) bir ARM çekirdeği bu tür işlemler için bir fayda görecektir.


3

Genel olarak, AVR gibi mikrodenetleyiciler tek çekirdekli / tek dişlidir - bu nedenle motor denetleyicisini çalıştırmak için bir süre döngüsü içinde çalışırken, bir menüde verimli gezinmek gibi başka bir şey yapmak için kaynaklarınız eksik olabilir.

Günümüzde birçok ARM işlemcisi çok çekirdekli / çok parçacıklıdır, yani bir iş parçacığı yazdırırken çalışabilir, diğeri ise kullanıcının yapabileceği her şey için ücretsizdir.

yani, yazıcıya uzaktan erişime izin vermek için yerel bir web sunucusu çalıştıran herhangi bir AVR işlemcisi, ARM'in genel olarak çok daha fazla esnekliğe izin vereceği acı bir şekilde temel olacaktır.


Bir ürün yazılımı iyi okuyuculu kod kullanmıyorsa, dişler arası ve süreçler arası iletişimden kaynaklanan ek yükün çok yüksek olabileceğini unutmayın.
Monica’yı eski durumuna getirin - ζ-- 10:16

Çok çekirdekli yüksek performanslı uygulama işlemcilerini gerçek zamanlı olarak optimize edilmiş M sınıfı işlemcilerle karıştırmayın. Evet, etkileyici performansa sahip çift çekirdekli Cortex-M var, ancak çok parçacıklı değiller.
Sean Houlihane

2

AVR işlemci, standart baskı için yeterli performansa sahiptir. Ancak bunun için performans yoksundur

  • Delta yazıcılar (bkz. hexafraction answer )
  • ekran menüsü (ATmega2560 kullanan RepRap yazıcımda çok yavaş)
  • web arayüzü (ethernet)

Teknik özelliklerin karşılaştırılması kendini açıklamalıdır. Bu özel ARM CPU, ATmega2560'a göre en az 10 kat daha hızlı:

CPU ARM-Cortex M3 LPC1769 ( Smoothieboard'ta kullanılır )

  • CPU: Cortex-M3 , 1 çekirdekli
  • mimari: ARMv7-M (32 bit)
  • frekans: 96-120 Mhz
  • bellek
    • Flash: 512 kB
    • RAM: 64 kB

Mikrodenetleyici ATmega2560

  • mimari: 8 bit
  • frekans: 16 MHz
  • bellek
    • flash Bellek 256 KB olan 8 KB, bootloader tarafından kullanılır
    • SRAM: 8 KB
    • EEPROM: 4 KB

1

AVR işlemciler 8 bittir - bu nedenle bir seferde yalnızca 8 bit bellekten veri alabilirler - bir ARM 32 bittir ve bir seferde 32 bit veri alabilirler. Konum çözünürlüğü minimum 24 bitlik bir değer gerektirir - bu, AVR'nin konum için 3 veri alımını alması anlamına gelir; oysa ARM, 1 veri alımını alır.

Daha da kötüsü, AVR işlemciler dahili olarak saati 3'e böler, böylece 40 MHz AVR tipik olarak 13,3 MHz'de çalışır, bir ARM veri yolu işlemi ve komut işleme başına 1 saat döngüsü olur - bu, 1'de 32 bit x 32 bit içerir saat döngüsü.

ARM işlemcilerdeki bellek haritası 32 bit genişliğinde veya 4 GB'tır, 8 bit işlemciler ise yalnızca 16 bit veya 64 KB adres veriyoluna sahiptir - bu, banka anahtarlamanın 64 KB üzerindeki herhangi bir programda devreye gireceği anlamına gelir - bu işlem talimat ve zaman alır. yapılması gereken - ARM ile bu bir sorun değil.

Maliyet yönleri AVR'ler ile aynıdır - sadece yeniden tasarlanan bellenimi gerektirir.

FPGA'lara gelince:

  • İşlemciden aynı veya daha pahalı
  • Hızlı, uzman, cihazlardır ve özel görevler için yapılandırılabilirler
  • Ek maliyet faktörleri var:
    • FPGA'daki devrelerin hızından dolayı çok daha fazla dekuplaj kapağı gerekir.
    • Ek güç kaynakları ve toprak düzlemleri ve güç planları isteyin - ki bu da en az 4 kat kurulu veya muhtemelen 6 kat anlamına gelir (bu da elektroniğin maliyetine katkıda bulunur)

Bir AVR'ye FPGA eklemenin sonucu, daha güçlü bir ARM işlemciye gitmekten çok daha pahalıya mal olacak.


1
Merhaba ve SE.3DPrinting'e hoş geldiniz! Cevabınız doğru büyük harf kullanımı, düzen iyileştirme ve bellek boyutunun doğru kullanımından çok yararlanabilir. Lütfen cevabı güncelle.
0scar

Merhaba James ve çok ilginç ve bilgilendirici cevabınız için çok teşekkürler. Bununla birlikte, 0scar ... doğru büyük harf kullanımı, doğru SI birimlerinin tutarlı kullanımı (yani MHz, GB, KB, vb.) İle aynı fikirdeyim, birden fazla kısa çizgi kullanımının azaltılması gibi, cevabınızın okunabilirliğini büyük ölçüde artıracaktı. ( - -ve - - - -) oldukça rahatsız edici olan, tbh.
Greenonline
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.