円カクつき問題の原因の考察
前回で#FDMTestを実施し、円がカクつく問題が出た。
これは何が悪かったのか?
- STLデータ
公式が出しているSTLデータを使っており、流石にそのセンは無さそう - gcodeデータ
Ultimaker Cura 5.2.1を使用してスライスしている。
可能性は大いにあるが、プレビューを見る限りだとカクついていない。
しかしメッシュ修正→最大解像度を見るとデフォで0.25mmであり、これはかなり怪しい。
怪しいが、安易に細かくするとgcodeサイズが膨れ上がりこのような問題が起こるらしい。
とりあえず後回しにする。 - 通信速度
前回、実はUltimaker CuraからUSB経由で印刷を行っていた。
通信速度が遅ければ、バッファが間に合わずにカクつくかもしれない。
解決策の検討
通信速度の問題に関してはUSB経由で印刷せずにSDカードで印刷すれば解決しそうな話だが
毎回SDカードでPCとやりとりするのは正直面倒くさい。
そのため、Wifi内蔵のSDカードを購入した。
技適付きのものが東芝FlashAirのみで、新品では8GBで1万6千円、フリマで3,500円だったためフリマで落札。
まだ届いていないが、今後はそちらで対応したい。
それはそれとして、その前にUSB経由で印刷できないのかも一応検討してみる。
3Dプリンタデフォルトのボーレートは115.2kbps。
一般的なボーレートの範囲内での最高速度だが、これで速度が足りるのか?
-
必要ボーレートの計算
Dimensional Accuracyの円の最下段は直径25mm程度のため、円周は78.5mm。
250mm/sで動作するとして、0.314秒の時間で1周している。
Ultimaker Cura 5.2.1は円を直線に分割しG1コードで送信する。
転送されるG1コードは25mmの円で43回送信されているようだ。
G1コード一回につき約30バイト送信されているため、1周あたり約1290バイト=10320bps。
1秒あたり32866bps=32.9kbps。スタート/ストップビットを考えると40kbps弱ぐらい。
単純に見ると一応足りてはいる。
しかし、PCはリアルタイム性が無いため数百msの通信停止が入ることがある。
マイコンのメモリは合計数十kBなので2kBバッファできれば良いところだろう。
一番転送量の大きい瞬間では50msぐらいのバッファになるので、数百ms止まるとアンダーランしてしまう。
50mm/sの印刷速度(250msバッファ)ぐらいだったらギリ表面化しなさそうではあるが…。
何か、印刷速度が高速化したため問題が顕在化しそうで見えてる地雷臭がする。
受信バッファサイズとPCの送出停止時間が根本的な問題なため
これはボーレートが仮に上がったとしても解消しない。
現状、高速印刷は安定性のためにSDカードで印刷が安牌のようだ。
FlashAir化は正解だったということか(自画自賛)。 -
円の円弧化検討
速度を変えられないのであれば、データ自体をスリム化すればいいじゃない!
ということでUltimaker CuraにArc Welderプラグインを導入してG1の線分を円弧に近似してG2/G3命令に変換する。
ここやここで(有料記事だが)説明がある。
G2/G3命令であれば外壁の途中で止まることが原理上無くなるし、ファイルサイズも減り、転送負荷が減るはず。
#FDMTestをそのまま印刷すると4時間ぐらいかかってしまうため
テスト用として#FDMTestのDimensional Accuracyの部分をそれっぽく切り出したデータを
FreeCADで作り、そのstlデータからgcodeを生成した。
上記はとりあえず10μmでメッシュ化している。
で、円弧化の結果がこちら
デフォルト | Arc Welder使用 | |
---|---|---|
ファイルサイズ | 824kB | 219kB |
かなりスリム化した。
これは期待できる。
ちなみに上記モデルは通信路の負荷が足りないためか、印刷するとデフォルトでもきっちりした円になり
現象は再現できなかった。
Arc Welderの結果
印刷した結果がこちら。
ちなみにUSB経由で印刷している。
スマホカメラのマクロ性能が死にかけなので分かりづらいが
壁面のカクつきが減少している。
ちなみにそれでも0.2mm隙間のピンは抜けなかったのだが、効果はあったと言えるだろう。
結論と雑感
今回の結論と雑感
- 高速3Dプリンタは今のところUSB経由での印刷はやめといた方がいい
- 3Dプリンタにも2Dプリンタのような大容量プリンタバッファが必要になりそう
SDカードをプリンタバッファ化できないものか? - 通信路はUSBシリアルが手軽なのは分かるが、115.2kはもう限界かもしれない
- Arc WelderによるG1化→G2/G3化は円形状に効果がある。でも0.2mmのピンは抜けない
- FreeCAD→メッシュ化(stl)→G1命令連打→G2/G3化は迂遠過ぎる
step/igesデータ→G2/G3命令のロスレス変換が欲しい
この記事の有料部分に深く同意する
次はあまり手を入れたくなかったが最大分解能を修正してみたい。