お買い物ついでに、忘れないようDTR付のUSBシリアル変換をゲットしました。
動作確認してみました。
いやぁ、便利ですね。
前のCP2102 は ESP8266 用にしてこっちは、ProMini用にします。
映像はこちら。
[youtube https://www.youtube.com/watch?v=xDVnZ8GZNqc]
いやぁ、ゴールデンウィークも最終日ですね。自分は、明日もあさっても休みなのでまだお休みなんですが、ついにプロッターができました。
[youtube https://www.youtube.com/watch?v=q00rKc7ZEUU]
詳細は後ほどとして、まずは感じを出力させましたのでスクリーンショットなど載せておきます。
WEBサービスのEasel で作成中の漢字「美」。SVG ファイルをインポートしたものです。大きさは25mm x 25mmの中にちょっと小さめで割付。
Machine からG-Code を出力すると右側に3D プレビューが出ます。ペン上げ幅は、3mm
全体の編集画面は、こんな感じです。
ポストイットに、プロットした直後。
なかなか、いいんでないでしょうか?
消せる水生ボールペンの赤です。
当初、画像が鏡面状態になって修正方法がわからずかなりハマリマシタ。下のABC は米粒大。ちょっと潰れますね。軸の精度とペンの滲みがあるのでまぁ、しかたないですが。
精度はまぁ、こんなものです。
とりあえず、できました!。
後ほど、映像でも載せます。冒頭に載せました。さぁ、気分転換に外出してきまーす!
さて、前回まででプロッターとしての機械的な部分は完成したのであとは、それを送り込むソフトウェア側の問題です。
試してみて、堂々巡りになってきているのでとりあえず情報を整理してみます。簡単に言えば、はまってます。
全体の仕組みとしては、以下のようです。
・Arduino 側でG-CODE を受けて解釈し、モータードライバーへ信号を出す仕組み。
GRBL
https://github.com/grbl/grbl/wiki/Compiling-GrblHexUploader
https://github.com/paulkaplan/HexUploader/wiki/Using-HexUploader
・PCからG-Code をUSB シリアル経由で流し込む仕組み
いろいろあります。osx で対象となるものは、以下の2つが見つかりました。
Universal-G-Code-Sender
https://github.com/winder/Universal-G-Code-Sender/downloadshttps://github.com/winder/Universal-G-Code-Sender
Grbl Controller
http://zapmaker.grblcontroller.s3-website-us-west-2.amazonaws.com/
・G-CODE を作成
こちらも、いろいろとあるようです。3次元加工ができるものから、プロッター用途までさまざま。フリーで使えるものを対象に選んでみました。
InkScape + Inkscape Gcodetools plug-in
https://inkscape.org/en/download/
http://www.cnc-club.ru/forum/viewtopic.php?t=35
or
InkScape + Big Blue Saw DXF Output
PyCAMでG-Code を生成 (以下に、Homebrew での手順)
http://www.shapeoko.com/wiki/index.php/PyCAM-MacOS
or
WEB Services の Easel
とりあえず、Arduino 側へgrblのバイナリを転送します。
以下からダウンロード。HexUploader を使いアップロードします。
osx だと、HexUploader が使えるらしいんですがアップロード方法がよくわからず、結局VirtualBox のWIN7で Xloader を使いアップロードしました。
VirtualBoxだと、一回USBをはずしてつければ認識するはず。ドライバーは以下を入れました。
以下のように、COM4 で認識したのでXloader のポートを合わせて、Device にはNano を選択。
ちょっと、ここらで言葉の整理を。調べ物をしていると、CAD と CAM という言葉が出てきます。
CAD はデザインする computer aided design でなじみがありますが、CAM とはCNC マシンに渡すデータを作成する処理とのこと。つまり、CAM とはG-Code を作成する処理のことと理解しました。
これがスタンダードなワークフロー。そして、これをすっ飛ばすWEBサービスがEaselというのがあるようです。
Inventables 社のアカウントを作ります。
https://www.inventables.com/sessions/new
ログインして、図を書きMachine から各種設定をしてAdvanced からG-Code が出るようです。
ちょっとよくわかりませんが、とりあえずG-Code を作成してみます。
Generate g-codeで3D画面に出ます。Export してファイルに出します。
このファイルは以下のよう。
G21 G90 G1 Z2.000 F228.6 M3 S18000 G1 Z2.000 F228.6 G0 X14.521 Y14.973 G1 Z-0.051 F228.6 G1 X14.521 Y14.973 F635.0 G1 X21.512 Y13.953 F635.0 G1 X16.456 Y9.024 F635.0 G1 X17.646 Y2.066 F635.0 G1 X11.397 Y5.350 F635.0 G1 X5.151 Y2.066 F635.0 G1 X6.341 Y9.027 F635.0 G1 X1.284 Y13.953 F635.0 G1 X8.276 Y14.973 F635.0 G1 X11.400 Y21.300 F635.0 G1 X14.521 Y14.973 F635.0 G1 Z2.000 F228.6 M5 G0 X0.000 Y0.000
で、これをGrbl Controller 3.6.1 から読み込んでみます。これは以下にユーザがビルドしたものがあります。
さぁ、お休みに突入しましたのでJunkなFDDでプロッターを作る続きの作業をやりましたよ。
まず、筐体を仮組みしていたのを本格的に組み付け作業です。2つ穴をあけてボルト締めした後、いらないプラスティック部分を切り落とし、古いパソコンの筐体の裏側に貼り付けてあった金属板を切り出しました。
これは、手曲げ加工して筐体に貼り付けて、ボロイ雰囲気を出そうという魂胆です。素材を見るとスリット加工してあり、ほどよく腐食している部分がかっこいいなと、ここを使うことにしました。
昔のPCには、電磁波防止だったのでしょうか? こんなパーツと筐体加工があったとはね。
で、程よく加工して両面テープで貼り付けました。どうでしょうかボロイ雰囲気でていますかね? えっ?そんな加工しなくても十分ボロイですって? 確かに。
あと、ガレージのジャンクを物色していたら、バイクのバッテリーがありました。12Vのやつでもう使えないんだけども、モーターくらい回るかもと思い充電してみることに。
容量が2.3Aくらいなので1/10くらいのの0.3Aで10時間くらい充電してみまいた。充電前は、4Vくらいあったのでもしかしたら使えるかもと思いましたが、充電後10.34Vくらい。うーん、13Vは超えていないようでだめっぽいかも。
いちおう、モーターは回りましたが電圧降下が激しくすぐに6V以下になってしまいます。鉛蓄電池の原理は知りませんが、電気を溜め込む要素が不足しているんでしょうね。これは寿命です。
筐体の一番下に置いて、重しにはなりそうなのでとりあえず作業を続行。最終的には、ソーラーパネルのちっこいのを上に乗せていつでも使えるCD-ROMレーベルプロッターにしようかなという魂胆だったのですが、、、まぁ、おいおい考えるとして。
で、ちょっと配線を変えて、コードはこんな感じにしました。AccelStepper でZ軸を追加した形です。Step と DIR のピン配線は前回と若干変えてあります。
/* Junk FDD Stepper Motor Control Sample. xy table moving sample. AccelStepper ver 1.47 JunkHack 2015.04.26 2015.05.04 Z-axies add */ #include <AccelStepper.h> AccelStepper y_stepper(1, 2, 5); // 1 > two wires. 2 > STEP pin , 5 > DIR pin. AccelStepper x_stepper(1, 3, 6); // 1 > two wires. 3 > STEP pin , 6 > DIR pin. AccelStepper z_stepper(1, 4, 7); // 1 > two wires. 4 > STEP pin , 7 > DIR pin. int halfRev = 700; // 片道移動幅 ( Step ) int halfdelay = 10; void setup() { y_stepper.setMaxSpeed(6000); // 最大許容速度 y_stepper.setAcceleration(12000); // 加速 x_stepper.setMaxSpeed(3000); x_stepper.setAcceleration(6000); z_stepper.setMaxSpeed(3000); z_stepper.setAcceleration(12000); } void loop() { if (y_stepper.distanceToGo() == 0) { delay(halfdelay); halfRev = -halfRev; y_stepper.moveTo(halfRev); } if (x_stepper.distanceToGo() == 0) { delay(halfdelay); halfRev = -halfRev; x_stepper.moveTo(halfRev); } if (z_stepper.distanceToGo() == 0) { delay(halfdelay); halfRev = -halfRev; z_stepper.moveTo(halfRev); } y_stepper.run(); x_stepper.run(); z_stepper.run(); }
とりあえず、これで3軸が動きました。動画もよかったらどうぞ。
[youtube https://www.youtube.com/watch?v=eTOpfWcYASM]
次なる課題は、G-CODEという座標軸を操作するものを送り込むようにしたいのですが、どうやるのかよくわかりません。ちょっと調べることにします。
※現在、ものすごくはまり中。次号にて報告します。
前回、続々と素材をゲット した中のパーツを2つ試してみました。
まず、あまりの安さに手を出したPro Mini 168 Mini ATMEGA168 5V/16MHz の10個入りの中の1つを半田付け。で、こいつはUSBシリアルのインターフェイスを持っていないので、USB UARTのCP2102 Male USB 2.0 to TTL UART Module Serial Converter をつなげる形でプログラムを転送します。
で、Pro Mini 168 5V はなんの苦労もなくLEDが光って動作確認はできたのですが、このシリアルコンバータの接続が???。購入時は気に留めていなかったのですが、DTR端子が見当たりません。
とりあえず、以下のように4本をつなげてデータ転送してみたのですがエラーが出てだめ。
うーん、DTRを取り出そうにもそんな端子が見当たらず、グーぐる先生に聞いてみたところ、どうやらリセットボタンを使ってやればよろしいようです。
映像で見たほうがわかりやすいので、どうぞ。
[youtube https://www.youtube.com/watch?v=k4aoLH-8WQw]
DTRがなくても、こんなヒト手間をかければよろしいようです。
とはいっても、やっぱりDTR端子は欲しいので、次回の買い物のついででAliexpress のどっかでゲットすることにします。
で、このProMiniは今作ってるJunkFDDプロッターに鎮座させる予定です。容量とか足りるのかどうかはまだ未知ですが。まぁ、そんなにたいしたプログラムを乗っけるわけじゃないのでオーバースペックかもですが。なんせ、1個160円くらいなので気安く使ってしまえという発想ですが。
とりあえず、ProMiniとCP2102の検証でした。
Z軸用のEasyDriver を半田付け。
退屈な映像ですが、よかったらどうぞ。
[youtube https://www.youtube.com/watch?v=kW4_Ny8mHvA]
この小手、もう30年くらいつかっているやつです。
で、Z軸のペンをつける部分を100円均一で探してきました。
こんなのを探していたんですが、ぴったりです。付け根の金具をはずして、ほっとボンドでくっつけました。
筐体は、FDDをはずしたPCのジャンク筐体に使用されていたプラスティック製の物です。ほどよくカットして、台を調整すればちょうどいい感じかなと。
台は面積を広げれば、CD-ROMやDVDなんかのレーベル面にも書けるかもです。まぁ、2cm四方なので微妙ですが。
ブリキとかを使わないとボロさが出ないかなぁと思いますが、まぁ装飾はあとで考えることにします。
さて、QKしたらカットしてきますかね。
で、カットしました。
位置関係などはよさそうです。
CD-ROM も収まるくらいの奥行きが取れそうです。
まだ仮なので、横にして動作を確認しました。こんな感じです。
[youtube https://www.youtube.com/watch?v=Sh5Dr_-QU-A]
うーん、ぼろい!
|
|