CP2102 Serial Converter

前回、続々と素材をゲット した中のパーツを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本をつなげてデータ転送してみたのですがエラーが出てだめ。

IMG_0194 2

うーん、DTRを取り出そうにもそんな端子が見当たらず、グーぐる先生に聞いてみたところ、どうやらリセットボタンを使ってやればよろしいようです。

 

映像で見たほうがわかりやすいので、どうぞ。

[youtube https://www.youtube.com/watch?v=k4aoLH-8WQw]

DTRがなくても、こんなヒト手間をかければよろしいようです。

とはいっても、やっぱりDTR端子は欲しいので、次回の買い物のついででAliexpress のどっかでゲットすることにします。

 

で、このProMiniは今作ってるJunkFDDプロッターに鎮座させる予定です。容量とか足りるのかどうかはまだ未知ですが。まぁ、そんなにたいしたプログラムを乗っけるわけじゃないのでオーバースペックかもですが。なんせ、1個160円くらいなので気安く使ってしまえという発想ですが。

 

とりあえず、ProMiniとCP2102の検証でした。

Raspberry Pi 2 Model B

前から触りたかったRaspberry Pi をやっとぽちりました!

 

R8326274-01

R8326274-06

ケースは、これがいいかなと。

R8193646-01 R8193646-02 R8193646-03

休み明けにしかいじれないように、土曜日にRSさんへ発注したので来るのはGW明けです。前、MINIXいじってて、FWを書き換え失敗して置物になってしまったので、今度の Raspberry Pi 2 はしっかり遊びたいです。GWは、ESP8266 ESP-12と、FDDプロッターなどでじっくり遊びます!

 

そのほか、4月分の素材もAliexpress へ発注済み。いろいろぽちったので、追って紹介。まだお仕事なのよね。

これのメインは、Windows10をとりあえず入れてみようかと思っています。3日ほど前にリリースされたのを開発MLで知って、これはたのしそうかもと。

 

ダウンロード中!

スクリーンショット 2015-05-02 1.07.36

ACH-305B 2電圧デジタル直流安定化電源

以前から欲しかったのを1つゲット。デジタルな安定化電源です。

重量があるものは、国内から買ったほうが安いのでamazon を物色してたら2出力するやつがありました。

5V(2A)は固定で1出力、もうひとつは、0~30V(~5A) までの1出力。

 

情報によると、内部の配線に問題がある場合があるかもということで、ばらしてみました。

IMG_0201

 

IMG_0200

 

トロイダルトランスがありました。深圳市にあるトランス専門の会社みたいです。

http://www.ytbque.com/

 

IMG_0202

 

ファンのフィンが曲がっているのはご愛嬌。

 

IMG_0203

 

トロイダルトランスがありました。これだけでも、買えば2,3000円はしそう。

ファンのフィンにも3端子レギュレーターがありますね。型番は?です。

IMG_0204

IMG_0205

IMG_0207

 

一番底面にある、基盤の裏に清流のダイオードがありますが、特に問題は発見できず。まぁ、むき出しになっている配線に被覆はかぶせておいてほしかったですが。

 

IMG_0208

 

STMicroelectronics の3端子レギュレーター L7805CV が2個。

 

IMG_0209

IMG_0210

IMG_0211

 

特に問題もなさそうな感じでしたので、組みなおしてデジタルテスターの横に鎮座してもらいました!

FDD6

さぁ、お休みに突入しましたのでJunkなFDDでプロッターを作る続きの作業をやりましたよ。

まず、筐体を仮組みしていたのを本格的に組み付け作業です。2つ穴をあけてボルト締めした後、いらないプラスティック部分を切り落とし、古いパソコンの筐体の裏側に貼り付けてあった金属板を切り出しました。

IMG_0216

これは、手曲げ加工して筐体に貼り付けて、ボロイ雰囲気を出そうという魂胆です。素材を見るとスリット加工してあり、ほどよく腐食している部分がかっこいいなと、ここを使うことにしました。

昔のPCには、電磁波防止だったのでしょうか? こんなパーツと筐体加工があったとはね。

IMG_0215

で、程よく加工して両面テープで貼り付けました。どうでしょうかボロイ雰囲気でていますかね? えっ?そんな加工しなくても十分ボロイですって? 確かに。

 

あと、ガレージのジャンクを物色していたら、バイクのバッテリーがありました。12Vのやつでもう使えないんだけども、モーターくらい回るかもと思い充電してみることに。

IMG_0222

容量が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という座標軸を操作するものを送り込むようにしたいのですが、どうやるのかよくわかりません。ちょっと調べることにします。

※現在、ものすごくはまり中。次号にて報告します。

FDD7

さて、前回まででプロッターとしての機械的な部分は完成したのであとは、それを送り込むソフトウェア側の問題です。

試してみて、堂々巡りになってきているのでとりあえず情報を整理してみます。簡単に言えば、はまってます。

 

全体の仕組みとしては、以下のようです。

・Arduino 側でG-CODE を受けて解釈し、モータードライバーへ信号を出す仕組み。

GRBL
https://github.com/grbl/grbl/wiki/Compiling-Grbl

HexUploader

https://github.com/paulkaplan/HexUploader/wiki/Using-HexUploader

http://paulkaplan.me/HexUploader/

・PCからG-Code をUSB シリアル経由で流し込む仕組み

いろいろあります。osx で対象となるものは、以下の2つが見つかりました。

Universal-G-Code-Sender
https://github.com/winder/Universal-G-Code-Sender/downloads

https://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

http://app.easel.com/

 

とりあえず、Arduino 側へgrblのバイナリを転送します。

以下からダウンロード。HexUploader を使いアップロードします。

https://github.com/grbl/grbl

osx だと、HexUploader が使えるらしいんですがアップロード方法がよくわからず、結局VirtualBox のWIN7で Xloader を使いアップロードしました。

screen1

http://xloader.russemotto.com/

 

VirtualBoxだと、一回USBをはずしてつければ認識するはず。ドライバーは以下を入れました。

image

http://wch.cn/download/CH341SER_ZIP.html

 

以下のように、COM4 で認識したのでXloader のポートを合わせて、Device にはNano を選択。

image

 

 

 

ちょっと、ここらで言葉の整理を。調べ物をしていると、CAD と CAM という言葉が出てきます。

CAD はデザインする computer aided design でなじみがありますが、CAM とはCNC マシンに渡すデータを作成する処理とのこと。つまり、CAM とはG-Code を作成する処理のことと理解しました。

 

1

これがスタンダードなワークフロー。そして、これをすっ飛ばすWEBサービスがEaselというのがあるようです。

 

2

 

Inventables 社のアカウントを作ります。

https://www.inventables.com/sessions/new

Inventables__The_Hardware_Store_for_Designers

ログインして、図を書きMachine から各種設定をしてAdvanced からG-Code が出るようです。

Easel_-_star

ちょっとよくわかりませんが、とりあえずG-Code を作成してみます。

Easel_-_star 2

Generate g-codeで3D画面に出ます。Export してファイルに出します。

Easel_-_star 3

このファイルは以下のよう。

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 から読み込んでみます。これは以下にユーザがビルドしたものがあります。

https://github.com/zapmaker/GrblHoming/issues/86

Grbl_Controller_3_6_1_Mac_Binary_·_Issue__86_·_zapmaker_GrblHoming

で、読み込んだ状態。

Grbl_Controller_3_6_1_と__Users_ishizaka_Downloads_と__Users_ishizaka_Desktop_cnc_GrblController361

 

おおおお~。

設定は以下のパラメーターをCommand のところから、流し込みました。

$0 = 60
$1 = 60
$2 = 50
$3 = 100
$4 = 220.000
$5 = 220.000
$6 = 28
$7 = 50
$8 = 25.000
$9 = 0.050
$10 = 0.100
$11 = 25
$12 = 3
$13 = 0
$14 = 1
$15 = 0
$16 = 0
$17 = 0
$18 = 0
$19 = 220.000
$20 = 220.000
$21 = 100
$22 = 1.000

このパラメータの意味は、以下のようです。よくわかりませんので、今のところ、適当に合わせます。

$0 = (steps/mm x)
$1 = (steps/mm y)
$2 = (steps/mm z)
$3 = (step pulse, usec)
$4 = (default feed, mm/min)
$5 = (default seek, mm/min)
$6 = (step port invert mask, int:00011100)
$7 = (step idle delay, msec)
$8 = (acceleration, mm/sec^2)
$9 = (junction deviation, mm)
$10 = (arc, mm/segment)
$11 = (n-arc correction, int)
$12 = (n-decimals, int)
$13 = (report inches, bool)
$14 = (auto start, bool)
$15 = (invert step enable, bool)
$16 = (hard limits, bool)
$17 = (homing cycle, bool)
$18 = (homing dir invert mask, int:00000000)
$19 = (homing feed, mm/min)
$20 = (homing seek, mm/min)
$21 = (homing debounce, msec)
$22 = (homing pull-off, mm)

ゼロポイントを合わせるやりかたがいまいちよくわかりませんが、これで動かしてみます。

※映像準備中

とりあえず、Z軸が逆に動いてしまう幹事ですが、動いているようです。

 

ふぅ。なんとかここまでたどり着きました。まだ課題があります。

・Z軸の動作を逆にしたい

・ゼロポイントを合わせる方法

・XYテーブルの移動量の設定

・速く動作させるための設定

 

なかなか、奥が深いですね。まさか、ジャンクはFDDでここまで勉強できるとは。

FDD8

いやぁ、ゴールデンウィークも最終日ですね。自分は、明日もあさっても休みなのでまだお休みなんですが、ついにプロッターができました。

[youtube https://www.youtube.com/watch?v=q00rKc7ZEUU]

詳細は後ほどとして、まずは感じを出力させましたのでスクリーンショットなど載せておきます。

Grbl_Controller_3_6_1_と_Windows7__Running_

WEBサービスのEasel で作成中の漢字「美」。SVG ファイルをインポートしたものです。大きさは25mm x 25mmの中にちょっと小さめで割付。

Easel_-_kanji-bi 2

Machine からG-Code を出力すると右側に3D プレビューが出ます。ペン上げ幅は、3mm

Easel_-_kanji-bi

全体の編集画面は、こんな感じです。

Easel_-_kanji-bi 3

ポストイットに、プロットした直後。

IMG_0253

なかなか、いいんでないでしょうか?

IMG_0256

消せる水生ボールペンの赤です。

IMG_0258

当初、画像が鏡面状態になって修正方法がわからずかなりハマリマシタ。下のABC は米粒大。ちょっと潰れますね。軸の精度とペンの滲みがあるのでまぁ、しかたないですが。

IMG_0257

精度はまぁ、こんなものです。

IMG_0247

とりあえず、できました!。

後ほど、映像でも載せます。冒頭に載せました。さぁ、気分転換に外出してきまーす!