3dプリンタファームをつくる

ここのところ、むやみに3Dプリンターが増えましたので、やはりこれらを24時間稼働させられるようにしたいと思いました。そのためには、リモートからプリントするデータを送りこんだり、プリント中の状態を見たり、プリンターを操作したりできることが必要です。

そのため、あれこれしばらくやってましたが、かなりうまくいかないことがありましたので、下記にまとめておきます。

1.プリンターのサーバー

プリントjob を外部から送り込むために、家にVPNを張っています。まあ、それはよいのですが、当然ながら3DプリンターがLANに繋がっていませんとネットからは操作できません。2種類のアプローチを試しました。

1a. Windows のPCにプリンターをUSB接続して、Repetier Serverを使う。

結論から言うとこれが一番よさげ。Pro のライセンスを購入しました。機能も豊富だし、Windowsで動いているけど安定度もそれなりに高い。ただし、USBカメラサーバー機能がすぐに動くようになってはいないので、ここで試行錯誤が必要でした(後述)。

1b. Raspberry Pi にプリンターをUSB接続して、octoprint を使う。

プリンターを手持ちのRaspberry Pi のUSBコネクターにつなぎ、octoprint の配布しているイメージをmicrosd に書いて起動すれば、いきなりネットプリントサーバーの出来上がり。ということで動かし始めるのは楽です。

ただし、問題は安定性。何度もプリンターとの通信が途中でトラブルを起こして止まってしまいました。これにはいくつかの原因があるようですが、大別して、ア)USBポートの電源容量不足。イ)CPU負荷が重い。によるようです。

電源容量不足は、普段OKでも、何かの拍子でプリンターなどが電力を食うことがたまにあり、そこでトラブルを起こすので、厄介です。私が困ったのは、後述のLED照明のためUSBポートに接続して電源を取っていたのですが、このために、USBポートの電源容量の余裕が小さかった様で、LED照明を繋ぐと頻繁に止まりました。また、3Dプリンターでz-probeのためにサーボを動かしたときもトラブル発生。raspberry pi のほうでusb への電源供給は多少調節が効くようですが、控えめにすることが吉のようで、最終的にはLEDライトはRaspberry Piとは別のダイソーUSB-ACアダプターを使って点灯しています。

CPU負荷は、最新のRaspberry Pi 3b+ なら問題ないようですが、それ以外のRaspberry pi だと何かと止まります。3B+を使っても、2台のプリンターを繋いで同時に動かそうとしたり(ここを参考に)すると、たまに止まりますのでずいぶん無駄な時間を使ってしまいました。

実用するには、Raspberry Pi 3B+, USB カメラ1台、3Dプリンター1台の組み合わせがいいところではないかと思います。

また、プラグインを入れたりカスタマイズしたらよいと思うのですが、出来合いのWebインターフェースはRepetier Serverの方が一歩上手かなと思いました。

2. リモート監視のためにWeb カメラを繋ぐ

Octoprint にしてもRepetier Server にしても、Web カメラを接続してtime lapse を撮ったりできるようになっています。また、実際にカメラで見るのは精神面からも必要と思います。

Octoprint はRaspberry Pi にUSBカメラを繋ぐと、mpeg_streamerが設定されているため、ほとんど何もいじらずに使えるようになります。

自作3Dプリンターで出力中・・・

Repetier Serverの方は、Repetierの方で紹介されているWindowsで動くカメラサーバーソフトを使ったりしてみましたが、なかなかうまくいかず、最終的には、Raspberry Pi につないだUSBカメラをWebカメラとして(Octoprint を動かしているRaspberry Pi をそのまま使う)動かし、Raspberry Pi のIPアドレスをRepetier Server で参照するようにしました。

9/18補足) これも、まだPi camera を使ってみるとか、raspberry piの負荷を下げようとしたり、いろいろと試行錯誤中。カメラは絶対に要ると思うけどいいソリューションがなかなかないのが現実。

Raspberry pi に複数USBカメラを繋ぐこともできますが、カメラのIDが入れ替わったりしないように設定が多少めんどくさい。

USBカメラは、一番無難なLogitech C270とかをプリンタ1台に1台取り付けるようにしました。取り付けのアームはthingiverseなどで検索するといろいろでてきますので、適当に選んだのをCADでカスタマイズして、3Dプリンターで出力して取り付けています。取り付けアームのデータは、ばっちりOK!というようなのが実はほとんどないので、多少自分でいじくることが必要でしょう。

3. LEDライトを夜間プリントのために

夜間寝ている間にもプリント作業を行いたいので、プリンターにLEDライトをつけました。これは、USB端子につなぐLEDテープライトがamazonとかで売っていますのでそれをカメラと同様にthingiverseで取り付け用の冶具データを探し、3Dプリントしてつけました。Raspberry Pi でこのUSB電源を制御したいところなのですが、そこまではまだです。LEDテープライトは少しでもWebカメラの絵を撮るには十分です。

安物のLEDテープライトの実装を見ましたが、抵抗で電流制限しているだけなので、ちょっと心もとないですね。

9/18 補足)

seeed から発売されているRaspberry pi 用のrelay board を使い、LEDライトを制御するようにしました。LEDテープライトの電源をダイソーで300円で売っているAC-USBアダプターから取っていますので、USB のオス・メスの間にリレーと0.5A のポリフューズを挟むアダプターを作っていれました。

制御は、seeedのwikiに書いてあるpython からi2cを制御するライブラリを使ってライトをON/OFFするスクリプトを書きました。

複数3Dプリンタが繋がっていますので、ライトの電源の分配はUSBハブを間に入れてみました。自分で作ろうかと思ったけど、USBハブが一番安あがり。

夜間だけLEDライトを入れる、ないしは、プリントをするときだけライトを点灯する、ような制御もこれでできます。good!



Original Prusa i3 MK3 プリンター キットを組み立てる

この8/4にMakerfaire Tokyo 2018 に行ったときに、展示されていたPRUSA RESEARCH の3Dプリンター Original Prusa i3 MK3 に感心して、キットを買いました。

デルタ式のプリンターキットを2014年に組立て2015年には自分で一部の部品を設計した3Dプリンターを作りましたが、それぞれかなり苦労と時間を費やしました。そして、今年の夏前にはアマゾンで売っている中華の3Dプリンターキットをポチってしまっています(ただ組み立てるだけで面白くなかったのでブログには書いていません)。

さらにこのタイミングでまた3Dプリンターのキットを買うなんて、頭がおかしいと思うんですが、やっぱりReprap界のリファレンスを知っておく必要あるよな、レビューもいいみたいだし。などというどうでもいい理由でまた3Dプリンターを増やしてしまいます。

発注したのは、ビルドプレートに3Mのシートを貼ったり、糊を塗ったりしなくてもよい、また、プリントした表面がざらざらした質感になるという、Powder coated steel sheet がついているモデルでしたが、このシートの製造上の課題があったとかだそうで、発注後すぐには発送されず、またアマゾンではpowder coated steel sheetのモデルは買えませんでしたので、こちらに8/5に直接発注しましたら、9/1にプラハからDHLで発送されました。DHLから受け取る時には、輸入内国消費税と立替納税手数料合わせて5000円弱を払いました。PRUSA RESEARCH に払ったのは送料込みで、820ドルちょっと、日本円で94000円弱でしたので、合計でアマゾンから買うのとほぼ同じ費用を要しました。

届いたものの、CNCのいじくりの関係でしばらく開梱できませんでしたが、週末を利用してキットの組み立てを行いました。

キットは、きれいに梱包されてます。組立てマニュアルはわかりやすくてよいです。組立てステップごとに、部品が小分けになっており、マニュアルの章分けに対応した表示もあるので、部品がすぐに見つかるのはとても良いです。

キットの組み立ては、このマニュアルに従ってやればあまり引っかかるところもありませんでした。ただ、部品がすでに改訂されていたため、最後まで組み立てるには途中から、オンラインマニュアルの参照が必要でした。

1.日本語のマニュアルはちょっとわかりにくい。英語のマニュアルの方が気をつけなければいけないことがわかりやすい形で書かれているように思いました。途中日本語のオンラインマニュアルを参照していたのですが、最後はまた英語マニュアルに戻って完成させました。

2.3Dプリントした部品に欠品が1つあった。幸い?にして3Dプリンターはすでにあるので、github でとってきて印刷して問題になりませんでしたが、これが最初のプリンターの人だと困り果てるかも。

私が一番最初に作った3Dプリンターのキットは、欠品はなかったがドキュメントが不備でずいぶん苦労させられた。この間の中華3Dプリンターのキットはネジが大量に欠品していて、monotaroで購入して済ませた。とかなので、まあそれと比べたら50歩100歩なのですが、欠品はいけませんね。。。

擁護のために付け加えると、小分けの部品袋に入っているネジ類などは、必要な部品が必要なだけ過不足なく入っていましたので、中華のキットにありがちな、違うものが違う数量はいっていてなんじゃこりゃーってことはありませんでしたが!

3.ほぼすべてのプラスチック部品が3Dプリントした部品!これはすごいことだと思います。まあ、多量に作るためなのか、それぞれの部品のプリント品質はそれなりなのですが、プラスチック部品の設計が巧みだなと思いました。

設計が巧みというのは、組立てのプロセスを考慮した部品構造設計がなされているということです。例えば、プラスチック部品をM3のネジを使って繋げていくのですが、M3のネジをつけていきやすい仕組みが部品に備わっていますので、キットの組み立ては楽しくできました。

4.部品の種類が少なく、高い部品は使っていない。機構部品など、中華のプリンターにも多く使われていそうな種類の部品を採用しています。が、とはいえ、Z軸ネジと一体になったZ軸モーターとか、コントローラーボードなどプリント品質にかかわるところや組み立ての確実性を増すところには専用部品を持ってくるなど、コストのかけ方のメリハリがあるなあと思いました。

5. 組立て後、ファームウェアにセルフチェックとキャリブレーションのプログラムが入っており、最初の立ち上げ時に、一通りの設定を行うようになっているのが秀逸。中華のキットですと、ここで機械を壊しそうなことが起こったり、スパゲティ(出来損ないの出力結果)を大量生産したりして相当悩むのですが、今回はほとんどそれがなかった。

6. 動作は非常に静か。もちろん、これは私が中華のしか使ってこなかったから非常識なのかもしれませんが、寝室に設置して寝ている間にプリントしても問題ないかも、と思えるぐらい静か。

7. 総合して「よく考えられた」プリンタだな。という印象を持ちました。そんなことで、組立てのプロセスでいろいろと勉強になりましたので、完成品ではなく、キットを買ってよかったなと思います。

組立ての過程の写真と思うことあれこれを書いてみます。

Z軸まで組み立てたところ。
エクストルーダーの組み立てはプラスチック部品の欠品などもあり、苦労しました。

このE軸ユニットは結構重そうに見えるんですが、実はそんなに重くない。フィラメントセンサー、エクストルーダー、ホットエンド、ファン2台合わせてこの重さは優れていると思います。

こういったちょっとした部品も、M3ナットの入りやすさなどいい感じでよく考えられた設計を感じられるところ。


コントローラーボードはとってもコンパクトで大丈夫かな!って思うぐらいなんですが、ちゃんと配線は収まるし問題はなさそう。3Dプリントのケースなので、配線バンドルを留める仕組みなどもケースに組み込まれていて工夫されてる。

組立てが終わって調整後最初のプリントは、付属してきたSDカードに入っていたデータ(カエルさん)をスタンドアローンで印刷してみました。

当たり前かもしれませんが、ちゃんとした印刷が最初からできた。素晴らしい。

さらに、このプリンターはRaspberry pi zero Wをつけるとoctoprint でWifiでつなぐことができるようになっています。ので、ここの記述に従って、つけてみました。

raspberry pi zero W をprusa i3 mk3 のコントローラーボード に取り付けるため、プラスチックスペーサーを介しヘッダーピンを取り付けました。ヘッダーピンはピンの長さが18mm あるものが必要とあり、家のジャンク箱を探したのですが、なかったので、L型の2列ヘッダーピンの長い方を伸ばすとちょうど18mm程度となるので、それを使って作りました。よく見るとピンが折れ曲がっていますが、つながればよい、ということで。

設定をして試してみたところ、動作速度が多少遅いですが、リモートで制御したり、プリントするモデルをアップロードするのには十分な速さですので、いけそうです.

サイクロン集塵器をつくる

CNCルーターであれこれ加工をしていますと、当然多量の切りくずが出ます。これをこれまで私は、家のお下がりの掃除機で適当に吸ってきましたが、あっという間に紙パックがいっぱいになってしまいます。

ずっと集塵機欲しいな、こんなのでいいな、と思っていたんですが、これまでなかなか手が出ないでいました。

そんな折り、こちらのサイトでサイクロン集塵機を作られているのをみて、これなら私にもできそう、ということで作ってみました。

が、全く同じではないものになりましたので、こちらに書いておきます。

ペール缶に集塵される仕組みは同じですが、こちらのペール缶は2個つなぐことがうまくできませんでしたので、サイトで紹介された部品を使って、ちょっと小さめのサイクロン分離器を作りました。

それが、これ。

サイクロン集塵機

ペール缶の蓋にサイクロン分離器がついているような感じなので、ごみ捨て楽々です。

サイクロン分離器の方は、サイトに書かれている内容とほぼ同じで、スパイラルニップルの側面に展開図を作図し、ルーターであけた穴にホースを差し込んで エポキシパテを使って固定しました。

サイトの方でいろいろ工夫されている部分は、私は、CNCルーターと3Dプリンターがありますので、CNCルーターで12mm 厚のベニア板から円盤を切り出し、3Dプリンターで印刷した部品を使ってスパイラルニップル等と接続するようにしました。

こんな感じで、中心の塩ビ管は、CNCルーターで直径5mmの穴を15度おきに400個以上開けました。普通にやるとまずやる気が起きないと思いますが、CNCだとプログラム書くだけだからラクチン。

側面の穴から入ってきたゴミは遠心分離されて下の穴へ向けて落ちていき、ペール缶の中に回収されちゃいます。

早速、実験、というか工作室のお掃除をやってみましたが、掃除機の紙パックの方には全くゴミがいきませんので、成功です!

吸引力も、ダイソンの宣伝で言われているように、変化しませんし、ホースが軽いものになりましたので、掃除が楽しくなりました。もっと早く作ればよかった。

あ、それで、苦労して無数の穴をあけた塩ビ管なのですが、実験の時に、このパイプをつけるのを忘れて掃除しちゃったんですが、ごみのサイクロン分離はちゃんとできていて、紙パックの方はきれいでしたし、分離器の中が汚れるようなことも見られませんので、塩ビ管の部分は省略してもいいのかも。

塩ビ管は差し込んであるだけなので、つけているのとつけていないのとどちらが良いのか、今度試してみます。

中華CNC スピンドルをもとに戻す

この間500Wのスピンドルに付け替えた話をしたところですが、やっぱり、この500W中華スピンドル、いまいち感がぬぐえず、結局、元の1.5kW水冷スピンドルに戻してしまいました。水冷はやはり安心感が高く、水冷配管を新しいチューブに取り換えて、ちゃんと使ってやろうということにしました。

とはいえ、もとに戻すだけではちょっとね。ということで、1.5kWのスピンドルの電源のほうは三相ブラシレスモーター用のコントローラー(VFD)を使っていますので、これをlinuxcncから制御するようにしようと考えました。

水冷1.5kWスピンドルについてきたVFD

ということで、ググると、こんなページでやり方書いてますので、ほぼそのまま実装。

とはいえ、全く同じではいけませんでしたので、変えたところを書いておきます。

PCからのRS485通信をVFDにするのには、今使っているPCには、RS232Cポート(/dev/ttyS0)がありますので、そちらにアマゾンとかで売っている安いRS232C-RS485変換器をつけてやりました。VFDへの配線はその辺に転がっているLANケーブルのツイストペア1対を適当に配線しました。

あとは基本的にVFDの設定を行ったうえで、linuxcncの設定でOKですが、本体のキーパッドから行うVFDの設定は、上記のブログに書かれている、

  • PD001 2 (listen for run commands on the RS-485 bus)
  • PD002 2 (listen for frequency/speed commands on the RS-485 bus)
  • PD164 3 (baud rate – 38400 baud)
  • PD165 3 (communication data method to 8N1 RTU) に加えて、
  • PD163  001 (unit number) が必要でした。

あとは、当然ながら、シリアルポートのアクセスはlinuxcncを実行しているユーザーから行えるようなパーミッションが必要。

そこさえ、設定してあれば拍子抜けするぐらい簡単にlinuxcncからスピンドルのON/OFF、回転方向、回転数の変更が行えました。

右側のHunyang VFDで制御の状況をチェックできる。

今のところ、なぜかスピンドルの回転数が11520 RPM以上にならないのですが、本体の設定のせいかも。また後で考えることにしてます。

補足)やっぱり、VFDの設定のせいでした。linuxcnc のhy_vfdモジュールのマニュアルを見ると、スピンドルの最高速度の設定は、VFDのPD144の設定から持って来る、となっており、こちらの設定がデフォルトの1440だと、50Hz の時のRPMということですので、出力周波数は400Hz までしか出しませんので、最大回転数(RPM)= 400/50 * 1440=11520 ということになります。そこで、この定数(PD144)を3000 に変えましたら、400/50*3000=24000 ということで、狙い通り、最高回転数24000 RPM で動かすことができました。

中華CNC スピンドルを制御

だいぶ前に導入した中華CNC 3040Z ですが、水冷の1.5kWのスピンドルが付いていました。架台の強度と釣り合わないし、水冷ポンプを動かしたりするのがめんどくさい。もっと小さなスピンドルに変えようということで、500Wのこれまた中華安物スピンドルを買っておいたんですが、例によって放置。

思い立って、スピンドルモーターの交換、それから、linuxcncで機械の制御をしていますので、合わせてlinuxcncからスピンドル制御もできるようにしてみました。

交換したスピンドルモーターはブラケットが付いてきましたが、当然今までの機械にはつきませんので、今までの1.5kWスピンドルモーターがついていたプレートに穴あけしてとりあえずつけてみました。

なんかついている感が否めません

ネットで調べると、このスピンドルも軸がガタガタとかいろいろ悪い評判があるようなので、手直しが必要でしょうけど、とりあえず。

スピンドルモーターの制御は、スピンドルモーター電源に5kΩぐらいの可変抵抗がついていて、それでやるようになっていますので、可変抵抗を繋いでいる端子にコントローラーからPWM信号を入れてやることにします。

が、可変抵抗が繋がっている端子が電源のAC入力と絶縁されていないので、コントローラーボードの方から直接つないだりしてはだめです。

最初、コントローラーボードのGNDと可変抵抗が繋がっているコントロール入力の基準端子(黒い線が配線されてる)を繋いでみたら見事に家の漏電ブレーカーが作動して、家全体が停電しちゃいました(汗)。

フォトカップラーか何かで絶縁をしてやる必要がありますので、簡単に手持ちのフォトカップラー(TLP512)を使ってアイソレーションモジュールを作ってみました。

アイソレーションモジュールを繋いでテスト中。

回路は

こんな感じの当たり前の回路を組みました。もともとの可変抵抗が5kΩでしたので、それに近い抵抗(4.7k)にフォトカプラーのフォトトランジスタからの電流を流して入力光に比例した電圧を発生させるようにしました。

入出力はいろいろ使いまわし等も考えて、端子台で出し、基板は、3Dプリンターで印刷したベースプレートにねじ止めしてあります。ベースプレートは実験が終わったら、両面テープでケースに貼って固定するつもり。

結果は良好で、linuxcnc からPWM出力を出すのは、こちらにある内容そのままを設定すれば、GUIにすでにスピンドルコントロールのボタンがついていますのでモータのON/OFFと速度調節が自在にできました。

PWM値が0の時にモーターは停止し、コントロール入力は0Vで、その時にVccが5Vでした。PWMをフルに入れたときはそのVccは3.3Vまでに降下してしまいますが、コントロール入力はそのとき、3.17V程度出ていましたので、ほぼMAX回転の制御ができたかな?と思います。

4.7kohmの抵抗をもっと大きい抵抗にすれば、電圧降下が下がりますので、もっと高速回転できるのかもしれませんがまだ試していません。MAX回転の時のモーター電圧を調べてみる必要がありそうです。

やはり、4.7kohmより大きい抵抗に変更することで、より早くモーターを回せることがわかりましたので、10kΩに変更したうえで、制御値とモーターの回転数の回転数の関係を調べてみましたら、狙ったPWMに比例したモーター回転数になっていません。PWMの出力は指定した通りに出ているのですが、制御入力にモーターのノイズなどが激しく出ており、また制御入力をがっちり狙った値にするためにはVccのインピーダンスが高すぎてどうにもなりません。

いろいろとやってみたんですが、うまくいかず、今のところ、PWM指定値と実際の回転数の関係をメモってそれに合わせて指定をすることにしています。