Pengontrol printer 3D harus melakukan banyak hal dengan sangat, sangat cepat. Melakukan perhitungan kinematika dan dinamika sambil mengirim ribuan pulsa langkah yang disinkronkan secara tepat per detik adalah sangat, sangat sulit . Garis mikrokontroler AVR 8bit yang digunakan pada pengontrol printer 3D yang lebih tua pada dasarnya adalah prosesor Mr Coffee era 1990-an. Mereka sepenuhnya, benar-benar dimaksimalkan pada waktu prosesor hanya menjalankan fungsi pencetakan dasar dalam printer sederhana (misalnya Cartesian), dan menambahkan beban perhitungan tambahan akan meredamnya dan menyebabkan perlambatan, gagap, berhenti, dan sebagainya.
"Tapi printer 8bit saya berfungsi dengan baik," kata Anda. Tidak, tidak. Kinerja cetak Anda dibatasi olehnya, baik disadari atau tidak. Alat pengiris sekarang secara otomatis menyembunyikan banyak kekurangan kinerja firmware dari Anda. Sebagai contoh, praktik standar sangat memperlambat kecepatan cetak pada perimeter sebagian besar merupakan hasil dari prosesor 8bit memiliki sumber daya yang tidak memadai untuk dua hal:
- Melakukan perhitungan percepatan sentripetal untuk kurva di beberapa segmen gcode
- Mengikuti perkembangan transmisi / pemrosesan gcode dan perencanaan gerak untuk gcode dengan banyak segmen yang sangat kecil, seperti dalam model organik atau busur halus
Ketika disajikan dengan serangkaian segmen yang sangat kecil dalam lengkungan yang halus atau kurva yang kompleks, firmware 8bit kemungkinan akan tersedak pada tingkat pemrosesan perintah yang diperlukan dan memperkenalkan gagap pada cetakan. Jeda yang sangat singkat ini memungkinkan tekanan residual pada ekstruder untuk mendorong keluar beberapa plastik tambahan, membuat sedikit jerawat pada cetakan. Jadi sebagian besar slicer secara otomatis menghilangkan kurva dan output gcode dengan resolusi yang dikurangi untuk meringankan beban pada firmware. Masalah terpecahkan, bukan?
Tapi ada masalah lain - algoritma kontrol gerakan GRBL yang mendasari semua pengontrol printer 3D open source utama dirancang dengan banyak pintasan dan peretasan untuk memungkinkan prosesor 8bit untuk menjalankan cukup cepat. Sebagai contoh, algoritma dasar hanya melihat kecepatan atau perubahan kecepatan di sudut antara dua segmen, dan menggunakannya untuk memutuskan kapan melambat / berakselerasi di sepanjang arah gerakan. Itu tidak menghitung atau mempertimbangkan percepatan sentripetal / radial sama sekali. Ini adalah retasan yang benar-benar efektif ketika mencetak model rendah, beresolusi rendah, tetapi gagal total pada kurva yang halus dengan banyak segmen kecil. Firmware tidak mendeteksi perubahan kecepatan yang berarti di sudut dua segmen yang hampir linier dalam kurva faceted, dan dengan demikian tidak memperlambat kurva.
Mencetak perimeter kompleks tanpa akhir berarti laju gerak makan yang diperintahkan harus sangat rendah untuk mendapatkan kualitas yang baik. Sebagian besar printer terbatas pada sekitar 40mm / s atau kurang pada batas kompleks, meskipun mampu menjalankan mungkin 80-120mm / s pada infill dengan kompleksitas rendah sebelum mencapai batas kecepatan lainnya.
Antara batas kecepatan pemrosesan perintah dan kekurangan perencana gerak yang diperlukan oleh prosesor daya rendah, kecepatan cetak harus jauh lebih rendah dalam praktiknya daripada yang dibutuhkan secara ketat oleh fisika dan perangkat keras printer. Ini semua berasal dari prosesor 8bit. Solusi dan praktik terbaik untuk mengatasi masalah ini begitu dalam dimasukkan ke dalam rantai alat dan ekosistem yang sangat sedikit orang sadari bahkan ada masalah. Tetapi ini adalah batas nyata yang dapat diatasi: prosesor berkecepatan tinggi yang menjalankan perencana gerakan yang lebih keras dapat menghasilkan kecepatan cetak rata-rata yang lebih tinggi dengan kualitas cetak yang lebih baik.
Yang mengatakan, firmware berbasis ARM hanya perlahan bergerak menuju perencana gerak yang lebih maju. Ini adalah area pengembangan besar sekarang yang sebenarnya mendorong pergeseran yang akan datang dari ARM low-end seperti Cortex M3 menuju prosesor yang lebih cepat. Sebenarnya tidak terlalu sulit untuk memaksimalkan Arduino 84 MHz Karena dengan menumpuk banyak fitur firmware.
Penggunaan prosesor 8bit juga membuat printer LOUDER. Konsumen terbesar dari waktu prosesor dalam printer 8-bit yang khas adalah stepper interrupt yang menyalakan pulsa step untuk membuat motor bergerak. Ini cukup tipikal untuk> 60% dari semua siklus clock pada Atmega AVR untuk beralih ke pulsa step firing. Karena ini terjadi sebagai interupsi, tugas pemrosesan lain yang harus dilakukan printer - seperti perhitungan akselerasi dan kontrol pemanas - dimasukkan ke ruang singkat di antara peristiwa interupsi stepper.
Tanpa desain firmware yang teliti, pulsa langkah akan sepenuhnya "mengeluarkan" fungsi lain seperti pembaruan tampilan LCD dan perhitungan percepatan. Untuk memungkinkan laju gerak yang lebih tinggi tanpa menggunakan semua sumber daya prosesor, firmware 8-bit memiliki mode yang disebut "step doubling" yang menghasilkan dua (atau empat, atau delapan) pulsa step per stepper interrupt sehingga setengah (atau seperempat, atau delapan) ) karena banyak stepper interupsi dapat digunakan untuk menghasilkan kecepatan gerak yang sama. Praktik ini menghilangkan bottleneck prosesor, tetapi menyebabkan gerakan motor lebih kasar dan lebih keras karena pulsa langkah ditembakkan dalam semburan daripada frekuensi konstan. Akibatnya, tingkat langkah mikro motor secara fungsional turun ke mode kasar ketika stepper mengganggu api langkah ganda atau quad. Jadi motor menjadi lebih keras, kurang tepat,
Efek samping yang menarik adalah bahwa jika Anda mengganti printer berbasis Marlin dari 1/16 microstepping ke 1/32 microstepping, dan mempertahankan kecepatan cetak yang sama, firmware hanya akan memulai penggandaan langkah, menjatuhkan level microstepping efektif Anda segera kembali ke 1/16.
Firmwares berbasis ARM juga menggunakan penggandaan langkah, tetapi laju langkah yang diijinkan biasanya ~ 8 kali lebih tinggi sebelum melangkah ganda / quad digunakan. Itu bisa berarti kecepatan yang lebih tinggi dan / atau gerakan yang lebih halus.
Masalah lain dengan AVR 8bit adalah kurangnya floating point perangkat keras dan harus menghabiskan banyak siklus clock pada perhitungan presisi tinggi atau menangani angka yang sangat besar. Kinematika Delta, fungsi auto-leveling, menghitung gerakan dengan jumlah langkah yang sangat tinggi untuk printer besar, dan fungsi canggih lainnya semua memerlukan banyak siklus clock pada prosesor 8bit. Desain firmware yang buruk atau tidak sengaja menambahkan fitur yang membutuhkan beberapa akar kuadrat tambahan dan fungsi trigonometri dapat sepenuhnya menghambat prosesor. Jenis fitur merayap dan mengasapi kode ini telah berdampak serius terhadap kinerja Marlin seiring waktu ketika orang semakin banyak bertanya tentang AVR lama.
Sebagai perbandingan, prosesor 32bit tidak hanya memiliki clock yang lebih cepat dan lebih banyak clock cycle, ia juga mampu melakukan matematika yang jauh lebih kompleks dalam siklus clock yang lebih sedikit, karena ia memiliki fungsi perangkat keras khusus yang menangani banyak langkah 8bit. Prosesor harus dilakukan dalam perangkat lunak.
Apakah prosesor 8bit bekerja? Tentu, mereka bekerja sangat baik untuk apa mereka dan apa yang kita minta dari mereka. Tetapi mereka tidak diragukan lagi membatasi kinerja dan fitur-fitur printer 3D modern. Bahkan prosesor 32bit generasi sekarang ini sudah dimaksimalkan oleh printer berkecepatan tinggi dan fitur matematika. Prosesor 8bit sudah dua generasi di belakang apa yang akan memenuhi syarat sebagai pengontrol printer 3D "modern".