回答:
3Dプリンターコントローラーは、非常に高速に多くの処理を行う必要があります。毎秒何千もの正確に同期したステップパルスを送信しながら、運動学と動力学の計算を実行することは、本当に非常に困難です。古い3Dプリンターコントローラーで使用されているマイクロコントローラーの8ビットAVRラインは、基本的に1990年代後半のMr Coffeeプロセッサーです。単純な(デカルト)プリンターで基本的な印刷機能を実行するだけで、プロセッサー時間を完全に最大限に活用できます。計算負荷を追加すると、それらが動かなくなり、スローダウン、down音、一時停止などが発生します。
「しかし、私の8ビットプリンターは正常に動作します」とあなたは言います。いいえ、そうではありません。それを実現するかどうかにかかわらず、印刷のパフォーマンスはそれによって制限されます。スライサーは、ファームウェアのパフォーマンスの欠点の多くを自動的に隠します。たとえば、境界線での印刷速度を大幅に低下させる標準的な手法は、主に2つのことに対して不十分なリソースを備えた8ビットプロセッサの結果です。
滑らかな円弧または複雑な曲線で一連の非常に小さなセグメントが表示されると、8ビットファームウェアは必要なコマンド処理速度を抑制し、印刷にスタッターが発生する可能性があります。これらの非常に短い休止により、押出機内の残圧により余分なプラスチックが押し出され、印刷物にわずかなズレが生じます。そのため、ほとんどのスライサーは自動的に曲線をデシメートし、解像度を下げてgcodeを出力し、ファームウェアの負荷を軽減します。問題は解決しましたか?
しかし、別の問題があります。すべての主要なオープンソース3Dプリンターコントローラーの基礎となるGRBLモーションコントロールアルゴリズムは、8ビットプロセッサーを十分に高速に実行できるように、多くのショートカットとハックで設計されています。たとえば、基本的なアルゴリズムは、2つのセグメント間のコーナーでの速度または速度の変化のみを調べ、それを使用して、モーションの方向に沿って減速/加速するタイミングを決定します。求心的/放射状の加速度を計算したり考慮したりすることは一切ありません。これは、箱型の低解像度モデルを印刷する場合に非常に効果的なハックですが、小さなセグメントが多数ある滑らかな曲線では悲惨なことに失敗します。ファームウェアは、ファセット曲線内のほぼ直線的な2つのセグメントの角で、感知できるほどの速度変化を検出しないため、曲線の速度が低下しません。
複雑な境界線を加速せずに印刷することは、良好な品質を得るためにコマンド送り速度を非常に低くする必要があることを意味します。ほとんどのプリンターは、他の速度制限に達する前に低複雑度のインフィルでおそらく80-120mm / sを実行できるにもかかわらず、複雑な境界線では約40mm / s以下に制限されています。
コマンド処理のレート制限と低電力プロセッサに必要なモーションプランナーの欠点の間では、印刷速度は実際には物理学とプリンタハードウェアに厳密に必要な速度よりもはるかに低くなければなりません。これはすべて8ビットプロセッサから来ています。この問題に対処するための回避策とベストプラクティスは、ツールチェーンとエコシステムに深く組み込まれているため、問題があることに気付く人はほとんどいません。しかし、それは克服できる本当の制限です。より厳密なモーションプランナーを実行する高速プロセッサは、より良い平均印刷速度を生成できます。印刷品質ます。
とはいえ、ARMベースのファームウェアは、より高度なモーションプランナーに向かってゆっくりと動いているだけです。これは現在、Cortex M3のようなローエンドARMからさらに高速なプロセッサへのシフトを実際に推進している大きな開発分野です。実際、多くのファームウェア機能を積み重ねて84 MHz Arduino Dueを最大限に活用するのはそれほど難しくありません。
また、8ビットプロセッサを使用することで、プリンターはさらに大きくなります。典型的な8ビットプリンターのプロセッサー時間の最大の消費者は、モーターを動かすためにステップパルスを発生させるステッパー割り込みです。Atmega AVRのすべてのクロックサイクルの60%を超えると、ステップパルスが発火します。これは割り込みとして発生するため、加速計算やヒーター制御など、プリンターが実行する必要がある他の処理タスクは、ステッパー割り込みイベント間の短いスペースに押し込まれます。
ファームウェアを慎重に設計しないと、ステップパルスはLCDディスプレイの更新や加速計算などの他の機能を完全に「排除」します。すべてのプロセッサリソースを使用せずに高いモーションレートを可能にするために、8ビットファームウェアには「ステップダブリング」と呼ばれるモードがあり、ステッパー割り込みごとに2(または4、または8)ステップパルスを起動して、半分(または1/4、または8 )同じモーション速度を生成するために、できるだけ多くのステッパー割り込みを使用できます。これにより、プロセッサのボトルネックが解消されますが、ステップパルスが一定の周波数ではなくバーストで発生するため、モーターの動きが粗くなり、大きくなります。実際には、ステッパー割り込みが2倍または4倍のステップを発生させると、モーターのマイクロステッピングレベルが機能的に粗モードに低下します。そのため、モーターの音量が大きくなり、精度が低下します。
興味深い副作用として、Marlinベースのプリンターを1/16マイクロステップから1/32マイクロステップに切り替え、同じ印刷速度を維持すると、ファームウェアは単純にステップ2倍を開始し、効果的なマイクロステップレベルをすぐに下げます。 1/16。
ARMベースのファームウェアもステップダブリングを使用しますが、ダブル/クワッドステッピングが使用される前に、許容されるステップレートは通常8倍以上高くなります。これは、高速化や滑らかな動きを意味します。
8ビットAVRのもう1つの問題は、ハードウェア浮動小数点の欠如であり、高精度の計算や非常に大きな数の処理に多くのクロックサイクルを費やす必要があることです。デルタキネマティクス、自動レベリング機能、大型プリンターの非常に高いステップカウントでの動きの計算、およびその他の高度な機能はすべて非常に時間がかかります、8ビットプロセッサーでのクロックサイクルを必要とします。ファームウェアの設計が不十分だったり、いくつかの余分な平方根やトリガー関数を必要とする機能を不注意に追加したりすると、プロセッサが完全に動かなくなる可能性があります。この種の機能のクリープとコードの肥大化は、人々が古いAVRをますます要求するにつれて、Marlinのパフォーマンスに深刻な影響を与えています。
これに対して、32ビットプロセッサは、より高速なクロックとより多くのクロックサイクルを備えているだけでなく、8ビットの多くのステップを処理する専用のハードウェア機能を備えているため、より少ないクロックサイクルでより複雑な演算を実行することもできますプロセッサはソフトウェアで実行する必要があります。
8ビットプロセッサは動作しますか?確かに、彼らは彼らが何であり、私たちが彼らに求めるものに対して驚くほどうまく機能します。しかし、それらは現代の3Dプリンターのパフォーマンスと機能を間違いなく制限します。現在の世代の32ビットプロセッサでさえ、高速プリンターと計算量の多い機能によって既に限界に達しつつあります。8ビットプロセッサは、「最新の」3Dプリンターコントローラーとして適格なものの2世代前に既にあります。
一般に、AVRは実際に現在使用されている多くのARMコアよりも強力ではありません。AVRを備えたほとんどのプリンターは浮動小数点コプロセッサーを備えていませんが、多くのステップおよび移動制御は整数のみの計算で実行できます(G2 / G3を除く)。Marlinは、AVRで1秒間に10000回までステップ処理を中断でき、1秒間に40000ステップに変換できます。これは、これらの速度で移動し、意味のある結果を印刷できる(または同様の速度ではるかに正確で、mmあたりのステップカウントがはるかに高い)機械部品なしでは特に有用ではありません。
グラフィックディスプレイは、低速で実行するのに特に負担となるものではありません。高速または奇妙なインターフェイスには、もう少し電力や専用の割り込みが必要になる場合があります。
ARMが重要となる可能性があるのは、デルタなどのより数学的に重い、特に浮動小数点が多いセットアップで、すべての動きに多くの浮動小数点およびトリガー操作が必要であり、16MHz AVR(atmega2560)のメニューのナビゲーションが説明されている場合です「痛々しいほど遅い」、しかしマーリンは、デルタ・スタイルプリンタで意味のある結果を印刷することに成功しません。
明らかに、ソフト浮動小数点の実行が高速であるか、またはハードフロート(浮動小数点演算を非常に効率的に実行するハードウェア)をサポートしているARMコアは、このようなプロセスにメリットがあります。
一般に、AVRなどのマイクロコントローラーはシングルコア/シングルスレッドです。したがって、モーターコントローラーを実行するためのwhileループで作業している間、メニューを効率的に操作するなど、他に何かを行うためのリソースが不足している可能性があります。
現在、多くのARMプロセッサはマルチコア/マルチスレッド化されています。つまり、1つのスレッドで印刷を実行し、別のスレッドでユーザーがやりたいことを何でも行うことができます。
すなわち、ローカルWebサーバーを実行してプリンターへのリモートアクセスを許可するAVRプロセッサーは、非常に基本的なものになりますが、ARMでは一般的に柔軟性が大幅に向上します。
AVRプロセッサは、標準印刷に十分なパフォーマンスを備えています。しかし、それはのためのパフォーマンスが不足しています
技術仕様の比較は自明のはずです。この特定のARM CPUは、ATmega2560とは反対に少なくとも10倍高速です。
AVRプロセッサは8ビットであるため、メモリからデータを一度に8ビットのみフェッチできますが、ARMは32ビットで、一度に32ビットのデータをフェッチできます。位置解決には最低24ビットの値が必要です。つまり、AVRは位置に対して3つのデータフェッチを必要としますが、ARMは1つのデータフェッチを必要とします。
さらに悪いことに、AVRプロセッサは内部でクロックを3分周するため、40 MHz AVRは通常13.3 MHzで動作しますが、ARMはバストランザクションと命令処理ごとに1クロックサイクルです。これには32ビットx 32ビットの倍数が含まれますクロックサイクル。
ARMプロセッサのメモリマップは32ビット幅または4 GBですが、8ビットプロセッサのアドレスバスは16ビットまたは64 KBのみです。これは、64 KBを超えるプログラムでバンクスイッチングが機能することを意味します。行われます-ARMではこれは問題ではありません。
コスト面はAVRとほぼ同じです-再設計されたファームウェアが必要です。
FPGAについて:
FPGAをAVRに追加した結果は、より強力なARMプロセッサを使用するよりも多くのコストがかかります。
- -
および- - - -
)どちらかというと気を散らすものです。