2019年12月24日火曜日

OctoPrint-Slic3r プラグイン

OctoPrint に STLファイルを食わせて、gcode を吐かせるプラグイン。
もうちょっとだけ正確に言えば、スライサーである Slic3r へのフロントエンドというか、Web-UI のLauncher か?

プラグイン自体は、他のOctoPrint の、プラグインと同様にプラグインマネージャからインストールできる。
けど、肝心の Slic3r は自動ではインストールされないし、コンパイル済みのバイナリ配布とかも無さそうなので、自力でナントカしないといけない。

一応、OctoPrint-Slic3r の詳解ページ に、ビルド支援のシェルスクリプトが載っているのだけど、コレだと上手く動作しなくて困ったので、ここにメモを残しておく。

ズッコケる理由は主に3つ。(もっと他にもあるかも?)
  1)メモリが足りない
  2)gtkが古い
  3)コンパイラの指定が古い

とりあえず、RAM不足はスワップ大盛りにして誤魔化すしかない。
最初に root権限で
/etc/dphys-swapfile
を開いて
set CONF_SWAPSIZE=100
みたいな行を探す。
100 Mバイトとか全然足りてないので、一気に2048Mバイトまで増やすので
set CONF_SWAPSIZE=2048
に書き換える。
書き換えたら、reboot して free -h してホントに増えてるか確認する。
OctoPi にインストールを試みた訳だけど、Raspbian もどんどんバージョンが上がってるから、色々と新しくなってて、シェルスクリプトで指定されるパッケージがいくつか無くなってたりする。

次はコンパイラとかgtkの問題に対処する。
gcc-4.7 とかが、正にそれで、4.9ならあるから、それで賄う、みたいな泥縄な感じの対応で凌ぎたい。
gtk も2系がダメなら3系を使えばいいじゃないの作戦で…。

色々と試行錯誤したので、クチャクチャになってるけど
install.sh
SLIC3R_REPO="https://github.com/alexrj/Slic3r.git"
SLIC3R_VERSION="1.3.0"
SLIC3R_DIR=~/Slic3r
# sudo apt-get install build-essential gcc-4.7 g++-4.7
# sudo apt install -y libgtk2.0-dev libwxgtk2.8-dev
sudo apt install -y build-essential  gcc-4.9 g++-4.9
sudo apt install -y git git-core
sudo apt install -y libboost-all-dev libboost-geometry-utils-perl libboost-system-dev libboost-thread-dev
sudo apt install -y libwxgtk3.0-dev libgtk-3-dev libcurl4-openssl-dev
sudo apt install -y libwx-perl libmodule-build-perl libnet-dbus-perl libextutils-cbuilder-perl libperl-dev libextutils-cppguess-perl libeigen3-dev libglew-dev libglewmx-dev cpanminus
sudo cpan ExtUtils::CBuilder ExtUtils::CppGuess Alien::wxWidgets CPAN::Mini  ExtUtils::XSpp::Cmd  ExtUtils::Typemaps::Basic
sudo cpanm AAR/Boost-Geometry-Utils-0.06.tar.gz Math::Clipper Math::ConvexHull Math::ConvexHull::MonotoneChain Math::Geometry::Voronoi Math::PlanePath Moo IO::Scalar Class::XSAccessor Growl::GNTP XML::SAX::ExpatXS PAR::Packer
echo "Cloning Slic3r repository..."
git clone $SLIC3R_REPO
cd $SLIC3R_DIR
git checkout $SLIC3R_VERSION
echo "Building and testing Scli3r..."
sudo perl Build.PL
echo "If everything was installed properly,you should be able to run Slic3r with the command ./slic3r.pl"
ぐらいの感じでインストール出来たりしないだろうか?
うちでは、こんな感じで、なんとなくインストールできたよ、事例ってことで…。

あとは、OctoPrint のプラグインの設定に戻って、OctoPrint-Slic3r が使用する Slic3r の在り処を教えておけば、STLファイルをアップロードした時に
「ねぇ?スライスする?するよね?スライス!しないの??」みたいな感じのダイアログボックスが開いて、スライス出来るようになるみたいだが、私の環境には
スライス用のプロファイルが1個も無いのでテスト出来ていない。

お粗末様でした。









ファームウェア更新 - Marlin 2.0.0

Anycubic Kossel Linear Plus のファームウェアを更新した。

http://www.lpomykal.cz/3d-printers/kossel/kossel-marlin-firmware/
から、Marlin 2.0.0 を DL する。

ZIPを解いて、ino ファイルをコンパイルして書き込めば作業は完了。
の、ハズだったが
#define DELTA_PRINTABLE_RADIUS 130.0  // (mm)
って設定されてて、これだと造形エリアの直径が260mmになってしまう。
うちのKLPは、テーブルが240mmだから、ここの値は最大でも 120
余裕をみて 115 よりは小さめに収まってないと色々と拙い気がする。

あとは、ino ファイルをコンパイルして、ボードにアップロードするだけ。
KLPのコントローラ は、Arduino Mega 2560 + Ramps 1.4 相当って事になってるので、ボードの選択を間違えないことと、USBシリアル変換チップのドライバーが入っていれば、後は大して気にかけるべきことも無いと思う。

とりあえず、ファームウェアをアップロードして、一度 EEPROMをクリアした。

その後
http://www.lpomykal.cz/3d-printers/kossel/kossel-bed-calibration-marlin-fw/
に従って、ヘッドの移動に関する調整と
http://www.lpomykal.cz/3d-printers/kossel/kossel-pid-calibration/
に従って、ヘッドの温度制御に関する調整を行った。

以前、愚痴ったパラメーター調整の際のロータリーエンコーダの回転方向と値の増減の関係や、1クリックで4ステップの入力になってしまう問題が改善されているし、ヘッドの移動の最小値が以前の0.1mmステップから、0.025mmステップになっていて、設定を追い込める感じになっているので、これだけでも更新する価値は十分にあると思った。

2019年12月18日水曜日

Anycubic Kossel Linear Plus だった

Anycubic Kossel Plus って書いてしまってたのだけど、肝心なのは リニアガイドが使われてる、ってとこで、私が持ってるヤツは
Anycubic Kossel Linear Plus
と表記するのが正解らしい。
正解かどうかというよりは、正確だったり混乱する要素が少ないとか、紛れがない、というべきかも知れない。
もう今までの記事を掘り返して訂正するのも面倒なんで
「今後は気を付けます」
ぐらいで勘弁してください。

一応、蛇足とわかりつつ説明を加えると、リニアガイドのモデルの前にプーリーと称するゴム?のタイヤみたいなのを2020フレームの溝に沿わせて走らせるタイプのモデルが存在したので、区分としては、プーリーとリニアガイドに大別されて、造形ステージというかテーブルにヒーターが仕込まれてるかとか、テーブル(デルタなので丸型)の直径が何㎜かとかで、プラスとか無印とかに分かれるみたい。

買ったときは、そんな事気にしてなかったよ…。

で、ここからが本題。

Anycubic Kossel Linear Plus に関する、いくつかのリンク

Anycubic Kossel wiki
  Anycubic Kossel Linear Plus のエライ人 Lukas Pomikal さんのWebページ
  ここから
  Marlin 2.0 へのアップグレード
  とか
  ベッドのレベリング
  とか
  PID制御の補正
  とかの、とてもとても有用な情報に辿り着ける。

知ってる人には、「いまさら?」かもしれないけどね…。

以下は Thingiverse へのリンク

Kossel Marlin 2.0.0 - the newest firmware
  上で紹介した  Lukas Pomikal さんが Thingiverse にポストした
  Marlin 2.0 のページ
  同じものみたいだけど、一応…。

The most efficient Anycubic Kossel cooler
  成果物を冷やすノズルのアップグレード版
  標準のノズルはネジ4本で固定されている。
  ホットエンドのヒートシンクと、ノズルが干渉するので、ノズルを外さないとホットエンドが引き抜けない。
  このノズルはネジ2本で固定するように変更されている上に、ヒートシンクとの干渉が無いので、ホットエンドへのアクセスが容易になるメリットがある。
  もちろん、冷却性能の向上も期待できる。らしい。
  円形というか完全な環状のノズルでは見た目に反して冷却性能の向上には寄与しないか、または、冷却効率が下がるとされている。
  アルファベットの C の形になっているので、ベッドのレベリングに使用する
  Zプローブの脱着にも支障がない、と良いことづくめのようだ。

Anycubic Linear Plus Cura Profile
  Cura で使用するプロファイル
  他のスライサーでも参考にできるハズ。

Kossel Linear Delta Plus Corner Support
  ステッピングモーターのマウントの上に盛大に空いている穴のカバー
  兼
  柱どうしを繋ぎ留めて強度を増す
  一石二鳥のパーツ。
  とは言っても、今までのところ、強度が不足してると思った/感じた事はない。
  オサレパーツとかキヤスメパーツの類かも知れないし、もしかして、ヘッドの移動速度をゴリゴリに上げるために必要だったりするのかも知れない。
  少なくとも、ゴミの侵入をいくらかでも防ぐ効果は見込めそうではある。

Kossel Plus Frame 2020 Top Reinforcement
  前出のパーツが柱の根本に取り付けるものだったのに対して
  こちらは、柱の上の方に取り付けて、強度を(以下略
  上側のセクションの方が、ネジ留めの箇所が少ないので
  撚れ防止には、こちらの方が有用かも知れない、とも思うものの、撚れてる実感がないので効果が不明なのは同じ。

Anycubic Kossel Linear Plus carriage tensioner
  ベルトのテンションを調整可能にするキャリッジのアップグレード版
  柱の天辺に取り透けるプーリーの位置を調整するタイプよりもスマートな気がする。

Top and Footer Cap for AnyCubic Delta Linear Plus
  蓋
  柱のてっぺんに空いてる穴を隠す蓋
  あるいは
  柱の底に敷く足
  でも、足にするならクッション材とか滑り止めを張り付ける必要がありそう。

Anycubic Kossel E3D v6 hotend assembly
  文字通り、E3D の v6 ホットエンドを取り付けるためのパーツ
  v6は標準の v5 Jヘッド よりも短いので、スペーサーで調整したり
  マウント方法を変更する必要がある。
  エフェクターを変更すると、Zプローブが使えなくなる弊害があるが
  これは、エフェクターを標準のまま変更しないので、そういう問題が無い。
  v6で大型化されたヒートブロックも、利用できる模様。

  今のところ、v6ヘッドに変更する予定はないが、標準のマウント方式よりも
  このマウントの方がメンテナンス性が良さそうに思えるので一考の余地あり?

AnyCubic Kossel Linear Plus E3D V6 Mount
  上記のv6ヘッドマウント同様、標準エフェクター流用の別解
  見た目の印象が少し違う程度の差しか感じられない。
  冷却用のブロアファンを大型化する例が含まれているので参考までに…。

Anycubic Kossel basic effector
  標準のエフェクターと同じ形のモデルデータ
  カスタマイズのベースとして、あるいは鉄製の標準エフェクターの軽量化部品として。
  製作者は。プーリーエディションのエフェクターから採寸したので、リニアで使えるかどうかは分からない、としている。
  リニア向けと思われるタグも付けられているし、使えない、というコメントも付いていないので使える可能性はある。
  と、思いたい。

2019年12月15日日曜日

構造材、または、角材で「ウルァアァアアッッ!!」

 いきなり、アフィリエイトリンクで申し訳ないしカッコ悪いんだけども
中華キットものも意外と規格化されていて

こういう感じのアルミの角材みたいなのの組み合わせで出来ている事が多い。
手元にある3DプリンタもCNCミリングマシンも、以前使っていた借り物の直交式の3Dプリンタも、この手の構造材を使ってた。
これは、20mm角だけど、30mm角とか40㎜角のもある。
もちろん、太くなれば頑丈になるし、重くなるし、お高くもなる。

ここで紹介してるのは、Amazonで多分中華なお店の中華な材料だけど、確かモノタロウ?だと、国産の材料を好きな長さにカットして売ってくれてた気がする。
メーカーの直販サイトでも切り売りがあったかも知れない。
とても便利だけど、お値段も跳ね上がる。

あと、これを並べて連結したようなのもあって

こんな感じに板状になってる。
これは、4本分を束ねた2080だけど、2本分の2040とかもある。
多分、3本分の2060もあると思う。

で、このちょいとイカした角材を
こういうブラケットで固定する。

この手のブラケットの裏側に入れるナットの代わりに

 こういうのを挟み込むと、矩が出しやすいかもしれない。

あと、3Dプリンタがあるなら、ブラケットはプリントした方が良い場合もあるかと思う。
Corner Brackets For System20 2020 / 2040 Extrusion
だとか
T Slot Extrusion 2020 corner
なんかを、そのまま使うもよし、強度を増すようにアレンジして使うもよし。

という、分かりやすいが調べるとなると、ちょっとした手間がかかる事をメモ代わりにポストしてみました的エントリで御座いました。

貧乏人なので、こんなお高い材料ではなくホムセンで角材買ってきて、ノコとクギで解決したい所ではあるんですけど、反ったり捻じれたりしてない材を探すのは結構大変だし、切り貼りしてると思いのほか高くなったりするので、ここにお金をかけるのはアリだと思います。
レゴブロックみたく組んでバラシて組み直して無限に遊べますよ。

捨て板を調達しないと

CNC3018の加工テーブルに乗せる板を調達したい。

テーブルと同寸で厚みは10mmもあれば十分?
四隅に穴をあけてテーブルにネジ留めする。

捨て板にグリッドを描く/罫書く、または、彫り込んで作業ガイドにする。
貫通穴を掘って、裏面に爪付きナットを埋め込んで、クランプベースにしたい。

あと、ちっちゃいクイッククランプバイスも欲しい。

が、手持ちの定規よりも正確な定規を用意するのが先だな。
今はホームセンターで買ったノギスで0.1mmまでは読めるけど、0.01mmのデジタルノギスが欲しい。

2019年12月14日土曜日

OctoPrint / OctoPi

基本的にはGコードを送るためのソフト

ネットワーク越しに、Webブラウザから操作する。
単なるSender/Controllerではなく、USBカメラを使用して遠隔監視する機能なども追加されている。
プラグインをインストールして機能を追加することも出来る。

3Dプリンタで使用することを意図して開発されているが、プラグインでGRBLにも対応する。
Windows / MacOS / Linux に対応している。
RaspberryPiでも動作可能なので、PCを常時起動しておく必要がなくなるなどのメリットがある。



インストールに関して難しい事は「何もない」はず。
普通に Raspberry に OSをインストールするだけの簡単なお仕事です。
分からなければ、ググればスクショ付きで丁寧に解説されているWebページなりBlogなりが見つかるはず。
多少の英語を苦にしないのなら、公式サイトの説明に従えば良い。


RaspberryPi向けにOS丸ごとパッケージ化したものがOctoPi。

詳細は公式サイト ↓ で…。

プラグインリポジトリ
  https://plugins.octoprint.org/

Webcam Tab
  ウェブカメラの映像を独立したタブに表示させるプラグイン。
  私は一番最初に、このプラグインをインストールしたけど、ぶっちゃけ不要だった。
  このプラグインはコントロール画面からカメラ映像を切り離してしまうので、映像を見ながらヘッドを動かす事が出来なくなってしまう。
  まあ、カメラ映像を頼りに遠隔でヘッドを動かす、なんて機会は滅多にないとは思うけど…。

  後述するダッシュボードを追加すればカメラ映像と出力状況を同時に表示してくれる。

Multicam
  複数のカメラを取り扱えるようにするプラグイン。
  普通に2台めのUSBカメラを繋げばいいのかと思いきや、カメラのストリームを追加する事になるので、ストリームサーバーを持ったカメラのサポートツールが必要になる。
  motion とか、インストールしておけばおkなんだけど、motion の説明が大変なので、見なかった事にして下さい。



  カメラ/ストリーム とにかく映像ソースを追加すると、コントロール画面に切り替えボタンが追加される。
  つまり、2台以上のカメラ映像を同時に表示する事はできない。
  あと、この Multicam と 上述の Webcam Tab は相性が良くないというか、タブ表示は1台めのカメラ映像しか表示してくれないので、実質的に併用不可なので注意が必要。
  OctoPrint-Dashboard プラグインで、ダッシュボードにカメラ映像を追加する場合も2台め以降は無視されて、1台めのカメラ映像が自動的に採用される、
  やや残念な点もあるけど、これはこれでアリかも知れない。
  実用性はともかく、試してみると面白いとは思う。

OctoPrint-Dashboard
  現在のプリンターの状態をザックリと表示するページを追加してくれるプラグイン。
  ザックリと、というと聞こえが悪いので、一覧性が高い簡潔な表示、という事にしよう。


  このプラグインは DisplayLayerProgress という別のプラグインに依存しているので、そちらもインストールする必要がある。
  プラグインマネージャーは依存関係を自動的に解決してくれたりしないようだ。

Resource Monitor
  OctoPrint サーバーとなっているホストのリソースを表示するプラグイン。
  ディスクの使用量など、一部の情報は OctoPrint-Dashboard でダッシュボードに表示出来るし、出力中はリソースの変動状況よりもカメラ映像を見る事が多いので、思ったよりも出番が無い可哀想なプラグインでもある。
  正直、無ければ無いで、そんなに困らないと思う。




以下は、気になってるけどインストールしていないプラグイン。

OctoPrint-Enclosure
  GPIOにセンサーを接続して監視するプラグイン。
  これも IFTTT 対応らしいので、OctoPrint-IFTTT よりも、こちらを選ぶべき?

  https://plugins.octoprint.org/plugins/enclosure/

OctoPrint-IFTTT
  出力の終了時などに IFTTT をトリガーするプラグイン。

OctoPrint-Slic3r
  スライサー関係のプラグインもいくつかあるみたいだけど、良くわかっていないので要調査。

  非力なRaspberryPiでスライスするのもどうか、とか色々と思うところはあるが、プリンターに食わせるデータを集約する事には、相応に意味があると考えている。
  出力される成果物の品質は、スライス設定に大きく影響されるので、元の形状データとスライスの設定を併せて管理したい。



The system OctoPrint is running on is currently throttled. Due to that it's not possible to install new plugins in order to avoid possible issues caused by system instability.
とか出てプラグインがインストール出来なかったり、システムのアップデートが出来なくなる場合の対処

間違っていたので訂正(2019/12/23)
監視を止めてしまう事で、プラグインのインストールを抑止する仕掛けも動かなくなる(但し、これによって生じる不具合もある)だろうと考えていて、一時的に問題がなくなったと思ってたら、いつの間にか再現していた。

ちゃんと、根本から解決しないとダメだ。

電源の容量不足かCPUの加熱によって、システムが制限状態になっている、という事なのだけど、Webブラウザで見ると 雷のマーク(⚡みたいなの)が出ていたので、原因は電源の問題らしい。

容量は足りているはずなので、USBケーブルを 2A対応 ってのに換えてみたら、落ち着いた模様。
5V 4A のACアダプタでも、⚡が出たという話もあったので、USBケーブルの選定は意外と大事なのかも知れない。
因みに、私が使用したのは100均のケーブルなんだけど、いつ、何処で買ったものか分からない。
多分、一番近くにある、セリアだかミーツだかで買ったもののような気がする。
問題があったケーブルは、ダイソーで大昔に買ったやつで、USBケーブルに500mA以上流すという発送はなかった時代の商品だったと思う。

当たり前の話だけど電源は大事だ。

スパナマークのアイコンをクリックして設定画面を開く



This will regularly check with the Pi if something is amiss either with power regulation or CPU/GPU temperature.

のチェックを外す


そして再起動
というか、この手順は後で編集して別エントリにしておいた方が良さそうだねぇ。

とりあえず、おしまい。

2019年11月21日木曜日

Anycubic Kossel Plus ホットエンド交換

実は購入して間もないころにヒーターカートリッジが壊れたことがあって、その時にホットエンドのアセンブリを2セット買っていた。

ヒーターは抜けたけど、サーミスタが抜けなくて、ヒーターを固定していたイモネジもバカになっていて新しいヒーターを固定出来そうになかったので、丸ごと交換を試みた訳だけど、色気を出して「使える部品は極力再利用する!」とか思ってたら、今度はスロートで詰まりましたよ?的な事になってて、修理する気力が湧かないと言うか「毎日使うもんでもないし、次に使う時でいいか」という先送りの結果。

なんというか2セット買った内の1.5セット分使った感じで、今度はアセンブリではなくて、ノズル単体とかで補充した方が良いのかもしれない。

まあ、ホットエンドは5個ぐらい持っておいて、フィラメントごとに使い分ける、みたいな、お大尽方式もアリな気がするけど、Anycubic の Kossel Plus はホットエンドの交換が地味に面倒なので、真のお大尽はフィラメントごとにプリンタを丸っと用意するのだと思った。

お金欲しいね。

2019年11月8日金曜日

CNC 3018 X軸もトラブルシューティング

 組み上げた時のチェック不足

ヘッドを右に動かしていくと、残り1/4ぐらいの所で動かなくなる症状が出た。
手で回そうにも、がっちり固定されてるような感触。
「あー、こりゃ脱調する訳だ」って納得。
モーターが相当頑張ったみたいで、右にも左にも動きにくい所に入り込んでしまった感じ。
送りネジの取り付け前に、スライドシャフトの調整の時点では問題なかったので、送りネジを取り付ける際に、モーター寄りの方で並行が出ていないのだと思った。

対策は簡単で、モーターを固定しているブラケットを緩めて、ヘッドを右に寄せてから締め直すだけ。
組む時に左も右もいっぱいに寄せてから固定していれば、こんな事にはならない。
多分、送りネジを手で回すのが面倒で「後で」って思って、それっきり、なパターン。

ダメ人間め!

2019年11月7日木曜日

3DプリントとCNCミリング

3D造形の基本についてメモ

Woodpecker CNC 3018 の調整について考えていて、自分が何も知らない事に気が付いた。
いや、自分が物を知らないという自覚は子供の頃からあるのだけど、単に物を知らないのではなくて、物事に対する理解が浅いというか、見て、知ってはいても、本質に届いていない感じがする。
というよりも明らかに届いてない。

見て、聞いて、試してみても、その先の考察が足りないのが主な原因だと思う。

話が大幅に横道に反れたけど、このブログで取り扱っているテーマについて、少しは掘り下げる努力をしてみたい。
誰かの役に立つかどうか?は問題ではなくて、自分自身を理解を深めるための作業として…。
自分自身の役に立つかどうかも、あまり気にしてはいない。
損得勘定で自分の行動を決めると、大抵のことは無為だったりする事も経験的に知っているから、そうしたくはない。

で、ここからが本題。

現状、私の手元にある機械で、3D造形に使えるのが、3DプリンターとCNCミリングマシンの2つ。
世の中には他にも色々と便利な物があるし、私が知らない機械とか技術とかもあるだろうし、これからも増えていくだろう。
けど、2019年の時点でポピュラーなのは、この2つだと思う。
3Dプリンターは大まかに2つに分けられる。
ここで取り扱うのは、FDMとか略される、溶かしたプラスチックを押し出して積み上げていくタイプのやつ。
FDMでも、いくつかの種類があるけど、いわゆる直交型とか呼ばれるヤツが主流派だと思う。
ちなみに、ここで取り扱ってるのはデルタ型で、直交型とは少しだけ違うけど、使い方には大した違いはない。(というのは乱暴すぎる?)

で、結論を先にいうと、この2つの機械は、本質的には同じ物だ。
3軸の加工機として、何らかの道具をXYZの各軸について、正確な位置に運ぶ。
3Dプリンタは溶かした樹脂を吐くノズルを動かして、造形テーブルの上にニルニル積んでいく。
CNCミリングマシンは、ドリルみたいな回転する刃物を、テーブルに固定された材料に押し当てて、ギョリギョリ削っていく。

そう、積み上げるか削るのか、道具で「足す」のか「引く」のか、の差しかない。
もちろん、フィラメントを押し出して、木材とか金属とかを削ることは出来ないし、逆に、刃物を振り回して何もない空間に何かを形成することも出来ないので、そういう意味で言えば2つの機械は決定的に違う。
それでも、「足す」か「引く」かの違いであって、どこをどのように加工するか、という指示で動いているという点は共通している。

では、得られる結果が全く同じになるか?というと、そこは全く違う。
CNCミリングマシンでは、中が空の物体を作ることは不可能で、中空に限らず、元々の材料を削るための刃物が通る場所のない形状を削り出す事は出来ない。
3Dプリンターはミリングマシンより、いくらか自由度が高いが、こちらも全くの空中に造形するとか、思いっきり細長い物体なんかは苦手だ。

どちらの場合でも、出力したい形状を指定する所は共通している。
立体の形状をPC内で表現するために何らかのモデリングツールを使用する。
広い意味では、CADと呼ばれるツールがそれで、DXFとかSTLとかの形式でデータを受け渡す。
モデリングして得られたデータを、プリンタなりミリングマシンに渡す形式に変換する。
ちなみに、3DプリンタとかCNCミリングマシンには、Gコードと呼ばれる形式のデータを渡すことになる。

この変換が肝で、ここで、積み上げるのか、削るのかが決まる。
もう少し正確に言うと、どちらに適したツールを選ぶのが先で、大抵の場合は何を作りたいかで、データを作るツールが半ば自動的に決まってしまう。
ツールにも色々あるけれど、全部を使うことは出来ない。
無料のものもあれば恐ろしく高価なのもあるし、使い易さとか好みとかも加味すると、自ずと使えるツールは絞り込まれる。

んー、ちょっと、話が見えにくくなってきた気がする。
整理すると
  1)形状を作る
  2)形状をGコードに変換する
  3)機械にGコードを送り込んで加工する
という、3つのステップに分かることが出来るだろう。
それぞれ、単体/単機能のツールもある。
1と2がくっついているもの。
2と3がくっついているもの(この場合は3が主体)。
1と2と3の全部入りってのもある。

WebサイトでもBlogでも、色々なツールが紹介されていて、多機能なものになるほど、上記の3つの境界が曖昧になっていたり、「そんなの常識だから」説明が省略されていたりすることも少なくない。

そこら辺についても、今後も機会があればメモを追加していこうと思う。
とりあえず、今回のエントリのまとめは

「盛る」のと「削る」のの差があるので、ツール(プログラム)は使い分けよう。
という一点。

長々書いて、たったこれだけ。
書き手のセンスのなさが丸出しだね。
落胆しつつ、今回はここまで。

2019年11月6日水曜日

Woodpecker って

CNCそのものの名前ではなくて、コントローラーの名前なの?
3Dプリンターで言うところの、LAMPSとか、そんな感じ??

つか、うちに来た中華CNCキットは、基板とか微妙に違ってるから、Woodpecker のパチモンだったりするのかな?

元々は、Arduino + A4988モータードライバーシールド だった所に GRBL がデファクトスタンダード化して、CNCシールドは GRBLシールドになった?
GRBLシールドの亜種として、A4988モジュールが載る基板に Arduino 相当の機能も押し込んだり、Arduino Nano (または互換機)をモジュールとして搭載する製品が出てきて、そのコピー品が出回るようになった。

亜種から、さらに派生して多様な商品が売られてはいるものの、ソフトウェア的には Uno 相当の AVR Mega328 で、A4988 を制御する、という辺りで互換性が保たれているように見える。

ただ、今回、テストにあたって、GRBLControl の他に試してみた Candle だと何故か動かなかったりした。
Y軸の問題解決が優先だったので、PCサイドのソフトを追うのは後回しにしたが、ぶっちゃけ、シリアルポートに向かってGコードをえっちらおっちら投げるだけの作業が何故できないのかが不明。
まあ、その辺は後で時間を取って調べる事にして、とりあえずは、SVGのデータとか作って、G-Codeを生成させて、カマボコ板かなんか彫ってみるとこまで進みたい。

CNCシールドは V3.0 以前と V3.1 以降では、少し仕様が異なっている。
V3.0以前だと、スピンドルを単純にON/OFFするだけだったが、V3.1以降だと PWM制御でスピンドルの回転数を調節可能になった。
うちに来た中華CNCは、スピンドルの回転数調整が出来ている感じなので、V3.1互換なんだろう。

CNC 3018 Y軸のトラブルシューティング

問題はY軸(テーブル)が一方向にしか進められない事。
PC画面のボタンで、手前への移動を指示しようが奥への移動を支持しようが、実際のテーブルの動きは、手前か奥かの一方通行で方向が逆転することはない。

確か、ArduinoからA4988への結線で、DIRとSTEPという信号線があって、今回の場合、DIRがLだかHだかに固定されてしまっていて、反転できなくなっているのではないかと推測してみる。

X軸のA4988モジュールを引っこ抜いて、Y軸のとこに挿す。
この状態でY軸を振ってみると正しく動く。
で、Y軸のとこにあったA4988モジュールをX軸のとこに挿してX軸を動かしてみると、左右どちらに振っても右にしか動かなくなった。

これで、A4988モジュールの不良が確定。

DIRビットが伝わってないのは単にヘッダーピンのハンダ付け不良の可能性もあるので、試しにあっためて、なんか汚いハンダをコテ先で掬った分だけ追いハンダ。
これをダメ元でX軸のところに戻してテストしたら無事に動いた。

面倒だったけど、動いたのでヨシとする。
中華キットだし。

A4988モジュールは、何個か手持ちがあるので、ぶっ壊れてても何とか出来たのだけど、備えは往々にして無駄になる、というアレな展開は割とありがち。

いきなり何か彫るのも怖いので、ペンとか持たせてテストと調整を行えないものかと思案中。

CNC 3018 試運転の覚書

ちょっと前にテストした時の記録
上げておかないと多分忘れるし、ファイルも無くしそうなので…。

USBシリアル変換のCH340だったかのドライバーは既に導入されていて、コントローラ基板とPCをUSBケーブルで繋いだら、普通にCOMポートが追加された。

ソフトはGRBLControl 0.8.1 で、GitHub からコンパイル済みのバイナリを ZIP で入手したもの。
https://github.com/trasz/grblControl

ZIPのアーカイブを展開すると、exe ファイルが含まれているので、それをダブルクリックするなりして実行。

初回起動時は COMポートの設定が空欄になっていて、「おめーが指示したとこには何にも繋がってねぇ!」的なメッセージが出て、何もできない。
メニューから、Service → Settings だか Options だかを選んで、それらしく設定。
ボーレートは115200のままで普通に動く模様。

後はスピンドルの項目で、スピンドルの回転を制御できるか? と
モーターが正しく動作して、XYZそれぞれの軸で移動できるか? を確認する

画面上に表示されている 上下左右の矢印ボタン で X軸とY軸 の移動。
X軸ではキャリッジが左右方向に動き、Y軸はテーブルが前後に動く。
少し離れた上下の矢印ボタン で Z軸 が動き、スピンドルを上げ下げする。

一応、動いてはいるしスピンドルモーターも回ってはいる。

ここで問題発生というか、まあ事前に分かっていた事ではあるけれども、どうやら、軸が反転していて気持ち悪いというか、このままだと切削はムリ。
なので、適切に移動してくれるように手配する必要がある。

X軸とZ軸は、普通に反転していて、Y軸は少し困ったことに、一方向にしか動かない。
Y軸について、もう少し追いかけると、コントローラ基板上には、Y軸のモーターに接続するコネクタが2個ある。
どちらに繋ぐかで、進行方向が決まっているようで、一方のコネクタだと、テーブルは手前にしか動かせず、他方では奥にしか動かせない。
これはファームウェアの仕様というよりも、この基板に固有の事情があるんじゃないか?って気がしているが、追いかけるための手がかりがない。よって少し先送り。


コントローラのファームウェアは GRBL らしいので、何かコマンドを叩いて
「違うよ」って教えるだけで、逆方向に動いてしまうのは修正できる。
もちろん、モーターの結線を変えて反対に回るようにする、って手もある。

キットには中文主体(一部英文)の紙で、軸の反転についての説明もあったのだけど、それは、特定のアプリの設定で反転させる、というものなので、違うアプリでは通用しないというか、まあ、アプリごとに違う方法で設定しなくてはならない。

与えられた GCodeに対して、どっちにモーターを回すか?ってのは、割と普遍的というか、系全体で統一されているべきなので、アプリでひっくり返す、というのはちょっと違う気がする。
私の理解としては「小手先の対処」であり、「正しいとは言えない」ので避けたい事柄。
いや、まあ「使えるなら何でも良い」といえば、それも正解ではあるけれど、そこは個人的な好みを優先したい。

ともあれ、現状把握のために設定?をダンプする。
$$ コマンドの結果は
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=0 (dir port invert mask:00000000)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=800.000 (x max rate, mm/min)
$111=800.000 (y max rate, mm/min)
$112=800.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)
単なるダンプではなく、何を意味しているかの説明が加えられているのが有り難い。
とは言え、それほど詳細ではないので、参考程度。
XYZのそれぞれの軸を反転させるかどうかは $3 で決まるらしく
00000ZYX でビットマスクというか、1に設定した軸が反転する模様。

最初に起動した直後はZ軸を動かすたびに、コキコキと音がしていたのが、何度かテストしているうちに静かになった。
ほんの数回で慣らしが終わるとは思えないので、何かしらのトラブルが起きるかも知れない?

2019年11月3日日曜日

OK,グーグル

部屋に Google Home mini を置いて結構経つけど、部屋が暗いときの時刻の確認と、カップ麺作るときのラーメンタイマー程度にしか使えていない。

要するに「今何時?」と「3分後にアラーム」が主な用途。
まあ、日付時刻は正確に返ってくるし、アラームもほぼ正確。
なので、これはこれでいい。

で、アラームが鳴っている時に「ストップ」とか「アラーム止めて」とか言うだけじゃなくて、「ありがとう」でも、アラームを停止する事ができる。
これって AI でも何でもなくて、単にアラーム鳴動中には「ありがとう」が「停止」系のワードの1つ、あるいはエイリアスとして働いているに過ぎないのだろう事は容易に想像がつく。

それが悪いとは全く思わないし、むしろ技術云々よりも前の段階での話として、そういう実装は素晴らしいと思う。
ただ、できれば「ありがとう」に対して「どういたしまして」的なリアクションが無いのだ。
「停止」には「停止しました」、「止めて」には「止めました」のように、基本的にオウム返しで良いので、貴方のボイスコマンドを受け付けましたよ、という反応が欲しいのだ。
もっと言えば、単にビープ音でもいい。
「ピ」「ブブー」だけでも、それなりの応答が可能になる。

スタンスとしては、子供だまし的でいいから、もう少しだけ、人に寄り添う感覚が欲しい。

2019年11月2日土曜日

愛すべきキ○ガイと愉快なナカマたち

汎用ロジックICで頑張るキチ○イジンさん


チャンネルは↓
https://www.youtube.com/user/eaterbc/videos

2019年10月23日の時点で、チャンネル登録者が 38.6万人 もいるという現実。
こんなニッチそうな動画を見たいというアタマのおかしい人達(褒め言葉ですヨ?)が、こんなにも沢山いるのだから世界は広い。

まあ、日本でも「TTLでCPUを作ろう」みたいな本が結構な数売れたようだし、関心を持っている人は多いのだな…とは思った。

パソコン以前、マイコンの黎明期には、こういう事をやっていた人たちもいただろう。
もう、みんな爺ちゃん婆ちゃんになってると思うけど、お達者でがんばって頂きたい。
とか言うと、まるで他人事だけど、私もアッチ側が近い方だと思う。

ちょっと気が滅入る話になったけれども

2019年10月24日木曜日

Arduinoと互換機的な何か

AnyCubic の Kossel Liniar Plus には、Mega2560 互換+LAMPS1.4? 辺りの A4988 を1枚の基板にまとめた TriGorilla とかいうコントローラーが使われている。
ファームウェアのアップデートは、Cura から行っているので、ブートローダーとかは気にしたことはないが、多分、Optiboot を書き込めば、ソフト的にはキッチリ Mega2560 互換機になると思う。

CNC3080 の方は、多分 Uno 互換というか、初代Arduinoから連綿と続く、AVR ATMega328 の血脈 + GRBLシールド相当の こちらも A4988 でモーター制御する基板が使われている。
もう少し正確を期するなら、Arduino Nanoもどき(USBシリアルがCH340とか)の小型の互換機を、モータードライバーの基板の上に載せてる風で、純正?の構成とは少し様子というか風体は異なる。
まあ、中身が分かってれば「あー、ハイハイ」って感じではある。

他にも、予備って訳でもないけど、学習用に買ったものがいくつかあって、その中には純正のArduinoも含まれている。
1つは、ほぼ最初に買った Duemillanove(綴り合ってる?)で、シールドのピン配置が少し変わってしまって使いづらくなったので最近は出番がない。
ただ、こいつにはメリットもあって、USBシリアル変換にFT232が使われていて、何かとツブシが効くので、捨てるには少々惜しい気がして手元に置いている。
とは言え、FT232のUSBシリアル変換基板は、マルツ製の持っていて、ブレッドボードには、そっちを使う。
秋月でも同じようなモジュールが1000円ほどで売られているし、基板の形状に拘らなければ、ほぼ同機能のものが Amazon とか AliExpress とかで、半額以下で買えたりもする。

ArduinoがUNO R3から?USBシリアル変換にAVRの16u2を載せてきたので、FT232の出番は今後は少なくなるだろう。というか、FTDIのチップが有り難かったのは、BitBangモードの存在が大きいのだけれど、それも昔の話だし、今後そういうのが有り難く思えるシチュエーションも、そうそう無いだろうと思う。

で、16u2 に触れたので思い出したのが、もう1つの純正Arduino である Leonard で、これには 16u2 を少しゴージャスにした 32u4 てのが載っている。
フラットパッケージのチップ1個で完結しているので、基板の上がスカスカな印象。
まあ、これはシールドのピン配置も現行品であるので、ごく普通のArduinoである、という事にしておきたい。
で、更にこのLeonard互換というか、32u4 をDIP化したようなモジュールがあって、機能的には Micro に相当する。らしい。のだが、Microの現物を見た事もないし、特に深追いして調べてもいないので、よく分からない。
16u2 にせよ 32u4 にせよ、単なるUSBシリアル変換という訳でもなくて、汎用のUSBデバイスが作れる AVR チップで、シリアルは HID-CDC だし、スケッチのサンプルには、HIDでキーボードとマウスとゲームコントローラの例が含まれている。
もちろん、これはこれで、多少の問題もあったりするのだけど、その話は別の機会があれば、そちらで…。

ARM系もいくつか買い置きがあるのだけど、もう文字だらけで後で読み返す気力が湧かない気がするので、そっちも別の機会があれば…。
色んなものが、どんどん先送りされていくが、人生そんなに長くないし、先送りしている先で、更に余計なものを積んでいくので…。

で、まとめに入ると、Arduino 互換機は、USBシリアル変換チップが多様すぎて、色々買い込むとシリアルドライバだけで何が何だか、みたいな事になりがち。なので、3DプリンタやCNCミルのキットとかについてくる互換機も、純正品か、もっと純正に近い構成の互換機に置き換えたい。
または、AVR系からARM系に載せ替えたい。

2019年10月15日火曜日

CNC3018

結局、板ナットを近所のホームセンターで買ってきた。
板ナットを買ったついでに、M5x10mm の鍋ネジも買って、キットのキャップボルトを置き換える事にした。

なんというか、指でボルト・ナットを回している時に、なんかシックリ来ないとか、ザリッって感触があったりとか、まあ、格安中華だから仕方ないところ。
100セットぐらい買っても1000円しなかった。

ただし、プラスねじになったので、組立ての順序を良く考えないと、ドライバーが入らない、という間抜けな事態に陥りかねない点には注意が必要。

なんというか、ちょっとしたパズル要素?
極短のビットとショートスタビとか持ってれば何とでもなるかも知れず…。

フレームを組むのに 10mm だと少し長すぎて、ワッシャーを一枚噛ませてギリギリな感じ。
ホームセンターには8mmも置いてあったけど、それだと今度はほんの少し短い、という事になりそう。
付属のワッシャーが薄いので、少し厚めのワッシャーに換えるとかすると丁度良いのかも?
それかスプリングワッシャーを追加するか?

X軸のリードスクリューの振れ止めにあたる部品は3Dプリント品なんだけど、妙に分厚いので、これは10mmではなくて15mmは必要だと思った。
あと、コントローラーの基板の固定ねじも15mmは必要。
基板をショートさせないように?樹脂製のスペーサーがついているのだけど、フレーム側にはワッシャーを噛ませたいところ…機械的な強度は全く必要ないけど、縁起物みたいな意味で…。

あと、テーブルとスライド用のベアリングとかを接続しているM6のボルトも絶妙に短くて作業性が悪かった。
20191016追記:使用されているのは M6x16mm なので 20mmぐらいのに換える?

そこは、もう組み終わってるから弄らなければ問題ない事にしても良いが、こういうのを放っておくと、後で激しく苛立たされる事になるのは、過去の経験上明らかなので、次にホームセンターか、その近所にでも足を運ぶ事があれば、ねじを買うのを忘れないようにしたい。

2020材に角ブラケットのフレームは組んでみると、意外にヨレヨレというか、直角がキチンと出ない状態で組むことが出来てしまう。
仮組みして、力をかけて正しく90度になるように歪めるイメージで面とか角を出した。
なんというか、思ったほどスマートではない作業でちょっとガッカリしつつも、すこしだけ楽しかった。

オマケ?で付いてきてるコレットとエンドミルはイマイチな感じなので、後でアマかアリを漁る事にする。

ソフトウェアとかは後日。

2019年10月11日金曜日

AnyCubic Kossel Plus の ココがダメぽ

別に AnyCubic だけでなくて デルタ全般に言えることかも知れないけど、操作性に若干問題があるように思える。

問題は3点

1)
ロータリーエンコーダーでパラメーターを増減する際に、1クリックで4ステップ進んでしまう。
クリック感が無いタイプのエンコーダーを使っていれば、まだ何とかなったはずだけど、クリックタイプは途中で止めるのが難しいので1ステップ単位での調整が難しくなっている。
これはデルタに限らず直交系のプリンターでも同じのような気がする。
デルタだと下側のエンドストップがないので、ヘッドの高さ調整で、最後の0.1mmを追い込みたい時に、いっぺんに0.4mmも動いてしまうと、ヘッドをテーブルに押し付ける事になってしまって、あちこちにダメージを与えかねないので注意が必要だ。

2)
こっちの方が重要かもしれない。というか、個人的はコッチが本題。
ロータリーエンコーダーの回転方向に対して、パラメータの増減が逆になっている。
普通に考えれば、時計方向に回せば、パラメータ増加、反時計回りで減少、となるはずだが、なぜか逆になっている。

ヘッドを下げたい →
  高さを0またはマイナス方向へ移動させなければならない ← まあ、わかる
  パラメータをマイナス方向へ ← わかる
  ロータリーエンコーダーを時計方向へ回す ← 逆だろ、JK
と。

直感と反する方向に想定の4倍も動いてしまう操作系にイライラしっぱなし。
まあ、プリンターの目的からすれば、成果物を正しく出力するのが第一義なので、操作性とか深く考えないものかも知れない。

3)
ストップスイッチの意味がない。
デルタなので、ヘッドの最低位置が各キャリッジの最低値とはならない事から、ボトム側のストップスイッチは省略されている。
が、一応?アッパー側のストップスイッチは用意されている。

ストップスイッチは用意されているにも関わらず、手動でヘッドを下げようとしてると、上述した2)のパラメータの増減の問題で、ヘッドを上げてしまうことがある。
電源投入後はヘッドが上がりきった状態なので、そこからヘッドを上げるとストップスイッチを押すのだけど、そこでモーターが止まる訳でもなくて、ガゴガゴと異音を発して何だか気持ち悪い事になる。

常識で考えれば、ストップスイッチを無視してモーターを回すような事はないはず、というか、そうでなければ、何のためのストップスイッチなのか?と…。
っていうか、意味がわからないよ。

)=================================================

ま、どの問題もファームウェアの問題なので、気に入らない場所は書き換えれば済みそうな話ではある。
結局、中華のキットプリンターを買う、というのは良くも悪くも、こういう事なのだ。
完成度に少々問題があるのが普通、ぐらいの感覚で付き合う必要がある。
一方で、仕様の大半がオープンだし見て分からない部分は少ないので、ちょっとした問題があっても、自力で対応する道があったり無かったりする。

最初から問題ないレベルの完成度の製品であれば、オープンソースで自前でナニカをどうにかする、みたいな必要もないのだから、オープンである事のメリットはない、という事になってる辺り、なんというか、妙な禅問答みたいな事になっているのは、3Dプリンターとかに限らず枚挙に暇がなさそうではある。

ファームウェア

AnyCubic の Kossel Plus のファームウェア更新が出てたので試してみたら、何かがおかしい。

エクストルーダーが動作していないように見える。
モーターかドライバーが焼け死んだのかと思って、軸を入れ替えて無理やり回してみたところ、問題なく動いているので、部品が損傷している訳ではなさそうだ。
ホットエンドを加熱して、フィラメントを手で押し込めば、それなりに吐き出すのでヘッド詰まりでも無さそう。

こんな感じで消去法で原因を探ってみて、というか、色々考えるまでもなく、直近で変更したのはファームウェアなので、そこが最も疑わしい…。
思うに、フィラメントの送り量相当のモーター駆動が出来ていない。

例えばだけど、1cm送り出しに対して何らかの係数をかけてモーターを何ステップ分回すか?ってのを決めてるとこがあって、そこで用いられる係数が0なら、どれだけ送らせようが戻させようが、モーターの回転は0だ。

何か、その係数に当たる部分を設定する箇所があるはずなんだけど、設定メニューがあるのか、あるいは何かファイルを操作する必要があるのか…。

あと、いくつか気になるというか気に入らない点があって、ファームウェアをコンパイルできないか?検討したい気持ちになりつつある。
甘えた事を言わせて貰えば、キットのプリンタを買ったのだから、出来るだけ手をかけずに、ただただ普通に「お客さん」として、使うだけに徹したいのだけど、やっぱり、そう簡単にはいかないらしい。

具体的に、何がどう気に入らないとかは、書き出すと長くなるので、別エントリをポストの予定。

2019年10月8日火曜日

後入れナット

記事にしてないけど、最近CNC3018のキットを買った。
写真撮りながら組み立てるのも面倒だし、結構昔からあるキットなので、今さら何か書くべきことがあるとも思えず…。

ただ、こいつも3Dプリンタと構造はほぼ同じだし、造りも良く似ている点があって、構造の大半をアルミのフレーム材に頼っている。
デルタだと60度のアングルを自前で何とかする必要があって、Kosselの構成の肝になっている感じだけど、普通に直角に組んでいくなら90度のアングルが簡単に手に入る状況になっている。

で、このフレームとアングルをボルトとナットで固定するのに、2020のフレームの溝に後から嵌め込めるナットがよく使われている。
これが気に入らない、という話。

レゴブロック的に、組んだりバラしたりを繰り返すには実に都合が良いのだけれど、設計が決まってしまえば後からナットを入れる必要はない。
後から「ナットが入る≒後でナットが外せる」なので、何かの拍子にナットごと抜ける可能性もある訳だ。
Kossel では、リニアガイドの取り付けの際に、ナットが上手く締まってなくてガイドレールがヨレて出力がヘロヘロになる(一応、形にはなっていたが…)という経験もした。
これは、私の経験不足による単純なミスだけれど、後入れのナットでなければ防げたはずの問題でもある。

CNC3018だと、そこそこ強度が欲しいはずのフレームで後入れナットを使う意味がわからない。
まあ、後で組み直すには好都合だとは思うけれども、一回組んだら半年や一年は組み直す事もなさそうだし、そんなに長寿命の製品ではないとも思う。

ちゃんとした?Tナットを買って、Kossel も組み直そうかと、少し考えている。