Apa manfaat menggunakan elektronik berbasis ARM?

22

Sebagian besar elektronik menggunakan mikrokontroler seperti AVR, tapi saya melihat chip ARM dalam elektronik baru. Chip ARM dikatakan lebih kuat, tetapi di bidang apa yang terkait dengan pencetakan 3D dapatkah ini membantu? Apa saja fitur yang diperjuangkan AVR dan di mana ARM bisa lebih baik?

Gerakan Kecepatan Tinggi? Printer delta? Tampilan grafis?

Dan apakah AVR benar-benar batasan di sana?

Lars Pötter
sumber

Jawaban:

23

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:

  1. Melakukan perhitungan percepatan sentripetal untuk kurva di beberapa segmen gcode
  2. 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".

Ryan Carlyle
sumber
Jika matematika dan komputasi realtime adalah masalah, lalu mengapa tidak ada banyak upaya dalam logika yang sepenuhnya dapat diprogram seperti FPGA yang digunakan untuk menggerakkan kontrol stepper dan sejenisnya?
Reinstate Monica - ζ--
Bukankah FPGA mahal?
Leo Ervin
Biaya tambahan dan kerumitan. Mengapa mengoordinasikan dua chip saat Anda dapat menggunakan satu chip yang lebih cepat? Sebenarnya ada sejumlah proyek berbasis FPGA di luar sana, tetapi tidak satu pun dari mereka yang mencapai masa kritis untuk penggunaan pengguna.
Ryan Carlyle
1
@RyanCarlyle Gagasan bahwa dua chip perlu dikoordinasikan tidak benar. FPGA dapat menangani serial, parsing, perencanaan, dan melangkah dalam satu paket (dengan MCU soft-core dimungkinkan). Biaya adalah faktornya.
Reinstate Monica - ζ--
11

Secara umum, AVR sebenarnya kurang kuat daripada banyak core ARM yang digunakan saat ini. Sebagian besar printer dengan AVR tidak memiliki coprocessor floating-point, meskipun banyak langkah dan kontrol gerakan dapat dilakukan dalam matematika bilangan bulat saja (kecuali untuk G2 / G3). Marlin dapat menyela untuk penanganan langkah hingga 10.000 kali per detik pada AVR, menerjemahkan menjadi 40000 langkah per detik. Ini tidak terlalu berguna tanpa komponen mekanis yang dapat bergerak pada kecepatan tersebut dan masih mencetak hasil yang bermakna (atau jauh lebih tepat dan memiliki jumlah langkah-per-mm yang jauh lebih tinggi pada kecepatan yang sama).

Tampilan grafis bukan hal yang sangat melelahkan untuk dilakukan pada kecepatan rendah - kecepatan tinggi atau antarmuka yang aneh mungkin memerlukan daya lebih atau interupsi khusus.

Saat-saat ketika ARM mungkin penting adalah untuk pengaturan yang lebih berat untuk matematika dan terutama floating-point-berat seperti delta, di mana setiap gerakan memerlukan banyak operasi floating-point dan trigonometri, dan navigasi dalam menu pada AVR 16MHz (atmega2560) dijelaskan sebagai "sangat lambat", tetapi Marlin berhasil mencetak hasil yang berarti pada printer bergaya delta.

Jelas, inti ARM yang lebih cepat dalam melakukan soft floating-point, atau mendukung hardfloat (perangkat keras yang melakukan operasi floating point dengan sangat efisien) akan melihat manfaat untuk proses tersebut.

Pasang kembali Monica - ζ--
sumber
3

Secara umum, mikrokontroler seperti AVR adalah single core / single thread - jadi ketika bekerja dalam loop sementara untuk menjalankan pengontrol motor, Anda mungkin kekurangan sumber daya untuk melakukan hal lain, seperti menavigasi menu secara efisien.

Banyak prosesor ARM yang sekarang menjadi multi-inti / multi-utas, artinya Anda dapat memiliki satu utas yang berfungsi untuk mencetak Anda, sementara yang lain gratis untuk apa pun yang mungkin ingin dilakukan pengguna.

mis. Setiap prosesor AVR yang menjalankan server web lokal untuk memungkinkan akses jarak jauh ke printer akan sangat mendasar, di mana ARM umumnya akan memberikan fleksibilitas yang jauh lebih tinggi.

Matt Clark
sumber
Perhatikan bahwa jika firmware tidak menggunakan kode multithread yang baik, overhead dari komunikasi antar-thread dan antar-proses mungkin sangat tinggi.
Reinstate Monica - ζ--
Jangan bingung prosesor aplikasi berkinerja tinggi multi-inti dengan prosesor kelas-M yang dioptimalkan secara waktu nyata. Ya, ada dual core Cortex-M dengan kinerja mengesankan, tetapi mereka tidak multi-threaded.
Sean Houlihane
2

Prosesor AVR memiliki kinerja yang cukup untuk pencetakan standar. Tetapi tidak memiliki kinerja untuk

  • printer delta (lihat jawaban hexafraction )
  • menu tampilan (ini sangat lambat pada printer RepRap saya yang menggunakan ATmega2560)
  • antarmuka web (ethernet)

Perbandingan spesifikasi teknis harus menjelaskan sendiri. CPU ARM khusus ini setidaknya 10x lebih cepat berlawanan dengan ATmega2560:

CPU ARM-Cortex M3 LPC1769 (digunakan dalam Smoothieboard )

  • CPU: Cortex-M3 , 1 inti
  • arsitektur: ARMv7-M (32-bit)
  • frekuensi: 96-120 Mhz
  • ingatan
    • Flash: 512 kB
    • RAM: 64 kB

Mikrokontroler ATmega2560

  • arsitektur: 8-bit
  • frekuensi: 16 MHz
  • ingatan
    • Memori flash 256 KB dimana 8 KB digunakan oleh bootloader
    • SRAM: 8 KB
    • EEPROM: 4 KB
amra
sumber
1

Prosesor AVR adalah 8 bit - dengan demikian mereka hanya dapat mengambil data dari memori 8 bit pada satu waktu - sementara ARM adalah 32 bit dan dapat mengambil data 32 bit pada suatu waktu. Resolusi posisi memerlukan nilai minimum 24 bit - ini berarti AVR mengambil 3 pengambilan data untuk posisi - sedangkan ARM mengambil 1 data diambil.

Lebih buruk lagi, prosesor AVR secara internal membagi jam dengan 3, sehingga AVR 40 MHz berjalan pada 13,3 MHz pada umumnya, sementara ARM adalah 1 jam siklus per transaksi bus dan pemrosesan instruksi - ini termasuk 32 bit dengan 32 bit kelipatan dalam 1 siklus jam.

Peta memori pada prosesor ARM adalah lebar 32 bit atau 4 GB sementara prosesor 8 bit hanya memiliki bus alamat 16 bit atau 64 KB - yang berarti bahwa transfer bank mulai berlaku pada program apa pun di atas 64 KB - ini membutuhkan instruksi dan waktu untuk dilakukan - sementara dengan ARM ini bukan masalah.

Aspek biaya hampir sama dengan AVR - hanya membutuhkan firmware yang didesain ulang.

Adapun FPGA:

  • Harganya sama atau lebih dari prosesor
  • Mereka cepat, khusus, perangkat dan dapat dikonfigurasi untuk tugas khusus
  • Mereka memiliki faktor biaya tambahan:
    • banyak lagi topi decoupling diperlukan karena kecepatan sirkuit di FPGA.
    • Membutuhkan catu daya tambahan, dan pesawat ground dan rencana daya - yang cenderung berarti (dan mensyaratkan) minimum papan 4 lapisan, atau mungkin 6 lapisan, yang menambah biaya elektronik

Hasil menambahkan FPGA ke AVR akan lebih mahal dibandingkan dengan prosesor ARM yang lebih kuat.

JamesP166
sumber
1
Hai dan selamat datang di SE.3DPrinting! Jawaban Anda bisa mendapat banyak manfaat dari penggunaan huruf besar yang benar, peningkatan tata letak, dan penggunaan ukuran memori yang benar. Harap perbarui jawabannya.
0scar
Hai James dan banyak terima kasih atas jawaban Anda yang sangat menarik dan informatif. Namun, saya akan setuju dengan 0scar ... huruf besar yang benar, penggunaan yang konsisten dari unit SI yang benar (yaitu MHz, GB, KB, dll.) Akan secara drastis meningkatkan keterbacaan jawaban Anda, seperti halnya pengurangan penggunaan beberapa tanda hubung ( - -dan - - - -) yang agak mengganggu, tbh.
Greenonline