Grbl × NCVC

レーザー加工機Grbl化で、NCVCで生成したGコードだと上手くいかずくハマっていましたが、なんか見えてきました。

何をやっていたかというと、まず実機に乗せる前に以下を試しました。

  • ArduinoUNOに現在最新と思われるGrbl1.1eを書き込む。
  • PC(Windows10)にはbCNCをインストールする。
  • とりあえずCNCシールドは載せずに今までのGコードを走らせてみる。

・・・なのですが、Gコードを実行すると途中で停止してIdle状態になってしまいます。
あちこちググッて以下の内容を試しましたがこれらは全て効果ありませんでした。

  • リミットスイッチや非常停止に変な信号が入らない様、プルアップを外部に追加、およびコンデンサ取り付け。
  • ArduinoUNOをバッタ物から純正品に交換。
  • PC側をGrblControllerに変更。
  • Grblのバージョンを0.9にダウングレード。

レーザー加工用データは全てNCVCで生成しています。そこで試しに基板加工用データを実行したところ、これだと最後まで実行できました。基板加工データはGynostemmaで生成しています。
Gコードを比べると、Gynostemmaが生成したコードは全て(曲線も含め)G01の直線を組み合わせて描かれいるのに対しNCVCで生成したコードは円や円弧(G02,G03)を使用しています。途中で停止する箇所は色々変わるのですが大抵は円を描くあたりで止まっている様です。

最終的に変更したのはNCVCの設定4点です。

  1. 「オプション」→「 切削パラメータの設定」から設定ファイル(ウチではLaser.nci)を選び、「表記」タブ内の「ゼロは省略」のチックを外す。
  2. 同じ「表記」タブ内の「全円は2分割」にチェックを入れる。
  3. 同じ設定ファイルの「生成」タブ内の省略指定の「Gコードモーダル指定」にチェックを入れる。
  4. LinuxCNC用にヘッダにG64を追加していたのを廃止。

これで最後まで進むようになりました。

1.はNCVCのサポート掲示板に記載がありました。
2.についてですが、円を描くとき、今までNCVCが次の様なコードを出していました。「G03J1.5F500.」
円なので始点と終点は同じにつきXやYの位置は省略していますが、これでLinuxCNCでは問題なく 動作していました。しかしGrblはダメな様です。
Grblでは「G03Y8.5J1.5F500.」の様に指定してやる事で正常動作しました。しかしNCVCにこの為の設定が見当たらなかったので「全円は2分割」設定にしました。これにより円弧を2回描く事になり、円弧であれば終点の指定が入るので正常動作します。
3.はコードの一番最後に原点に戻す「X0Y0」がなぜか実行されず、「G0X0Y0」だと実行できたのでG0が連続してモードが変わらない場合でもG0を明記する様に設定にしました。
4.のG64はLinuxCNCの時、これがないと直角に折れ曲がる筈なのに角が曲線になってしまった対策で入れていました。GrblではG64はサポートされていない様です(何故なくてよいのかは調べていません)。

以上により、何とかArduino単体では動作する様になったので先に進めます。

変更箇所(備忘録)

 

ヨットレースのスタート練習用タイマー

ヨットレースのスタート練習用タイマーを作ってみました。
ヨットのレースはまずスタート5分前に旗が上がり、それから色々と手順を踏んで5分後にスタートとなります。この5分の間に選手は色々な準備を行います。
たとえば陸上の競技と違ってスタートラインに線を引く訳にはいかないので海上のブイとコミッティボートの間の直線がスタートラインとなるのですが、自分がはみ出しているかどうかが判りにくいので一旦ライン上に船を止め、ブイの向こうに見える景色を確認しておきます。そうするとスタートの瞬間にブイと向こうの景色を見る事で自分がラインを超えているかいないかが一目でわかるわけです。
また風の方向や海面の状況をチェックし、どのあたりを走っていくと有利かを予想します。 さらにスタート直前になるとラインの手前に多くの船が集まり混雑する中で有利と思われる場所に船を停止させる必要があります(
船は同じ場所に留まるのが難しいのです)。

RaceStart

スタート前


で、日ごろからスタート練習をやる訳です。
その際、ゴムボート上の先生や関係者が時計を睨みながら5分前とか1分前とか叫んだり、スタートの瞬間にホイッスルを鳴らしたりします。しかし5分間ずっと時計を睨んでいるのは結構苦痛ですし、ホイッスルを鳴らし忘れたりしもします。

そこでこのタイマーです。
スタートボタンを押すと「スタート5分前の5秒前」からカウントダウンし、1秒毎に発信音が鳴ります。そして5分前には長音1回+単音5回で5分前である事を知らせます。
その後、10秒置きに単音1回。また4分前には 長音1回+単音4回、3分前には長音1回+単音3回といった風にカウントダウンしていき、スタート10秒前からは1秒毎に発信音が鳴ります。
また5分スタートの他、4分、3分でのスタート練習にも切り替えられます。

製作

今回はArduinoを使用しました。
プログラムはArduinoUNO上でデバッグし、生のATmega328Pに書き込みます。

Arduionoブートローダ書き込み。

まずFT232RLでArduinoブートローダを書き込み、その後ArduinoUNOに挿してスケッチをダウンロードします。

 

そしてプリント基板を切削。

ヨットスタート練習タイマー基板

切削中。

 

ケースはポリプロピレンのタッパーです。
初めてレーザーでポリプロピレンを切ったので加減が分からず、スピーカー側は十分切れていなかったため後から手で切り抜く羽目に。

ヨット練習タイマー4

十分に切れていませんでした。
結局手作業で切り抜き中。

ヨット練習タイマー5

こちら側はパワーを上げたのでバッチリ切れています。というか少し強すぎたかも。

 

液晶は以前カホパーツセンターのジャンク市で買ったものです(既に3年も経っていました)。
液晶の前面にはクリアーのプラバンを張り、押しボタンの前には厚手のビニールを張って防水しました。
スピーカーを鳴らすアンプには秋月電子で購入したPAM8012モジュールを使いました。D級なので2W出せるのに小さいです。

ヨットスタート練習タイマー

モバイルバッテリーで電源供給。

ヨット練習タイマー2

こちら側はスピーカー。海上でも聞こえる様に3Wクラスです(アンプからは1Wしか入っていませんが)。
ケースとの間にビニールを貼って防水処理しました。

 

回路図

ヨットレース練習用タイマー回路図

クリックすると拡大します。

Arduinoスケッチ

 

まだ実際にスタート練習で使っていません。今度試してみます。

FRISKサイズのUSBジョイスティック

OpenStickLiteが使える様になったので、Laser加工機用に小型のジョイスティックを製作しました。

これまでLaser加工機のジョグ制御には、下の様なジョイスティックを使用していました。見覚えがある方もいらっしゃるかもしれませんが、MakerFaireではラジコンシミュレータのコントローラに使用しているものです。
今回、OpenStickLiteを使って場所を取らない小型のものを作ろうと思います。

LaserCutterController

これまでのLaser加工機のコントローラ。
ちょっと大きくて邪魔になる。

 

X-Y軸入力のスティックはジャンクのゲームコントローラーから外したものです。HardOFFで108円で買ってきたコントローラをバラしてストックしています。
これはX-Yのアナログ制御に加えスティック自体を押し込む事でボタンをON/OFFできます。今回入力デバイスはこれ一つだけで、
X-Y軸とボタン1個だけにしました。

JoysticksFromPS

PlayStation用コントローラから外したジョイスティック

 

簡単に回路を描いて・・・

LaserStickSchematic

Laser制御用ジョイスティック回路図

 

基板切削CNCで削って・・・ 

LaserStickPCB

LaserStick基板
(実は一部パターンをミスっており、この後手配線で修正しました)

 

FRISKのケースに入れました。
FRISKはケースサイズが変わるという話ですが熊本ではまだ従来サイズしか見かけません。今回使用したのも従来サイズです。

LaserStick2

フリスクケースに収納。

 

中身はこんな感じです。
PIC18F14K50はフリスクケースにピッタリ。
部品がとっても少ないです。

LaserStick3

水晶発振子周りのスペースが厳しくなってしまったので、水晶を少し浮かして取付け、更にショート防止のためカプトンテープで保護しました。

LaserStick4

斜めからみたところ

 

コンフィグはこれを書き込みました。

LaserStick Configuration

今回のOpenStickConfigLiteの設定。
入力信号はX-Y軸とボタン1個だけ。

 

またLaser加工機に取付ける為、3Dプリンタでホルダーを製作しました。

LaserStick with Holder

ホルダーと小型ジョイスティック

そして加工機に取り付け!!

LaserStick6

ホルダーと共に加工機に取付けた図。

PIC18F14K50採用で小型機器が作り易くなりました。
SOP版を使うともっと小型化できそうです。

 

動画にしてみました。 2016-10-25

 

無線のクマデン

熊本のアマチュア無線ショップ「無線のクマデン」から、中古・ジャンク大放出というチラシが入ったので早速行ってみました。

そして購入した品々・・・

Kumaden

クマデンのジャンク放出で購入した品。

まず菊水電子の実験用電源PAB70-1A(¥2000-)。
前から実験用電源が欲しかったので即買いしました。70Vまで出せますがここまでは要らないと思います。むしろ電流容量がもう少し欲しいですけど贅沢は言えません。

そしてダイワの同軸切替機CS-201(¥1500-)。
時々あったら便利だなと思いますが無くても何とかなる品なのでこういう時に入手しておきます。

プリント基板の切れ端(¥200-)×2枚。
これは以前からあり購入した事もあるのですがストックが減ってきたので再び購入。これで当面CNCで削る材料に困りません。

抵抗が入った袋(¥200-)。
パワー系の抵抗が沢山入っています。

購入したのは以上ですが無線機類も含め他にも多数ありました。
FT-708とかローテーターとか興味を引かれる物がありましたがこれ以上ガラクタが増えても困るのであきらめます。
興味のある方はお早めに・・・

Laser加工機製作 ~その14 LinxCNCでレーザーラスター加工 まとめ~

前回まででLinxCNCによるレーザーラスター加工が可能になりましたが課題もあります。

  1. 中間階調が出ない。
    今の所ONとOFFのみで写真等は綺麗に描画できません。
    細かい点の密度で階調を表現する様にgmaskファイルを生成すれば出るかもしれません。あるいはPWMでレーザーパワーを調整する様にHALを書き換えるとか・・・
    いずれ試したいと思います。
  2. TouchOffボタンにより座標系原点を機械原点と異なる値にすると正常動作しない。
    HAL内でX軸の位置を取得している「axis.0.joint-pos-fb」は機械座標での位置を返す様です。TouchOffボタンでワーク座標系を機械原点と異なる値にすると*.gmaskに書かれたX位置と一致せず、正しい位置でレーザーが出ません。 何か方法がありそうな気がしてマニュアルを読んでいるのですが・・・わかったら報告します。

そんなこんなで色々とありますが最低限の動作はした、という感じです。

なおLinuxCNC自体についてはhttp://linuxcnc.org/が、
またドキュメントの一部を日本語化されているシマリス技研さんのサイトも大変参考になりました。

 

CO2レーザー管購入

以前からレーザー加工機が欲しかったけど、買うには高いし作るのは何だか怖くて敬遠していました(数十Wのレーザーだし、高電圧も使うし)。
しかし山口ミニメイカーフェアみら太さんのレーザー加工機を見て以来、自分でも作りたくて仕方がなくなり、レーザー管を購入してしまいました。

レーザー管到着

レーザー管到着。
こんな梱包で届いた。

レーザー管到着2

厳重に梱包してあります。心配していた割れ等もありません。

LaserPowerSupply1

電源も購入。
取説も何も付いていない。ダンボールに書いてある振宇電子というのを検索したらhttp://www.jnmydy.com/というのが見つかったがこの電源は掲載されていなかった。

LaserPowerSupply

筐体が少し曲がっていますが気にしない。
中国製は動作すれば良しとします。

ミラーとレンズ

ミラーとレンズも購入しました。レンズはセレン化亜鉛という材料でできており、酸に触れると毒ガスが出るらしい。 怖いので最後まで包んだままにしておきます。

LaserTEST

ためし撃ちの準備。
水冷なので洗濯用の風呂水ポンプで水を通します。

ためし撃ち

多少水がこぼれても良い様に養生した後、恐る恐るためし撃ちしてみます。

動画にしてみました。

先達のブログや動画みていたので驚きはありませんが、やはり危険な香りがします(木が焦げた香りですが)。
レーザーって、そのうち免許制になるのではなかろうか・・・。

少しづつ加工機を作っていきます。

XBee

だいぶ前に購入して放っておいたXBee(Series2)を動かしてみた。

XBeeの端子は2mmピッチなので、まずは変換基板を作成する。早速CNCで切削してみた。 基板の真ん中付近はユニバーサル領域である。

Board for XBee

XBee用2.5mmピッチ変換基板 その1

この基板にXBee用2mmピッチコネクタを取付けた後で失敗に気付いた。2.54mmピッチのコネクタ部分の幅が広すぎてブレッドボードに載せられないのだ。

Board for XBee

こりゃ失敗。幅が広すぎた。

市販の変換基板は2mmピッチ端子よりも内側に2.54mmピッチ端子が並んでいる。しかしなんだか使いにくそうに見えたので外側に配置したのだが、そういう事だったのね・・・。
教訓:先人の知恵に学べ(違う事をするならよく考えてからにしろ)

早速作り直した基板がこれである。2.54ピッチ端子を内側に移動した。これにより外形がコンパクトにもなった。 中央付近のユニバーサル領域は8×2に変更。

Board for XBee 3

XBee変換基板 その2

この基板を先日作成したFT232RLアダプタ経由でPCと接続するのだが、XBeeは3.3V電源なのでアダプタを少し改造した。FT232RLは3.3Vレギュレータを内蔵しており、この出力(3V3OUT:17pin)をIO電源(VCCIO:4pin)に接続することで3.3V化できるのだ。 そこで小型のスイッチを取り付け、5Vと3.3Vを切替え可能にした。

FT232RLtoXBee

FT232RLボード+XBee 5V/3.3V切替えSW付き。

 

通信の相手方にはArduino Pro Miniを使う事にする。先程失敗したピッチ変換基板であるが、よく考えると最低限必要な端子は左半分で済むので写真の様にずらして挿せばブレッドボードで使用できる事に気付いた。
電源は3.3Vのスイッチング電源である(壊れたプリンタから取り外したもの)。

XBee実験

とりあえずこれで通信できた

あちこちのサイトを見て回り、XBeeモジュールの最低限のお手軽設定を次の通りに実施。
<PC側モジュール>
・まずXCTUで出荷時の設定を読み込み。
・Function Setを “ZIGBEE COODINATOR AT”に設定。
・DHを0013A200(相手方のアドレス上位)
・DLを409EXXXX(相手方のアドレス下位 XXXXは4桁のHEX)

<Arduino側モジュール>
(一旦Arduiono側ソケットから外し、ホスト側に指した状態で設定する)
・まずXCTUで出荷時の設定を読み込み。
・Function Setを “ZIGBEE ROUTER AT”に設定。
・DHを0013A200(相手方のアドレス上位)
・DLを409EXXXX(相手方のアドレス下位 XXXXは4桁のHEX)

※XCTUはXBeeの設定ツールで、Digiのサイトからダウンロードした。
※各モジュールのアドレスは裏側に書いてある。

Arduinoにシリアルを読んでLEDをつけたり返事を返したりするスケッチを書き込んでおき、シリアルモニターから色々入れてやると、それに応じてあっけなく動作した。

しかし・・・
もう一つやりたかったのが無線経由でのスケッチの書き込みである。しかしこのままでは上手く行かず、次のエラーがでる。
avrdude: stk500_getsync(): not in sync: resp=0×00
Arduinoはリセット後一定の時間の間に書き込みを開始しなければならなず、普通にシリアルアダプタを使う場合はDTR信号でリセットして直後に書き込みを開始するらしいが、現状のXBee経由だとこの方法が使えない。 何度か手でリセットボタンを押しながら試したのだが、タイミングが合わない為か上手く書き込めなかった(最近のArduinoは自動リセットが前提なので待ち時間が短いらしい)。
XBeeの説明書を見て何とかリセット信号を出せないかと考えているのだが・・・これまた英語なので苦労している。
あちこちのサイトを見て回ってもスケッチを書込む例が見当たらないので、かなり厳しいのかもしれない。

FT232RL

バッタ物Arduino Nanoから外した故障と思われるFT232RLをもう一度動作させてみるため、0.65mmピッチSOPの変換基板を作成した。 ウチのCNCの精度で大丈夫か不安だったが、バックラッシュのため一本置きに太さがが違うとかを気にしなければ何とか使えそうである。

SOP065x28pin

ピッチ変換基板。上半分は彫り込みが浅かったので後から少し深めに再切削した。

先日Nanoから取り外したFT232RLを実装してみた。

FT232RL Nano

故障と思われるFT232RLを再実装。

そして周辺回路を取付けた。

FT322RL Nano2

周辺回路を取り付けたところ。

しかしPCと繋いだところ、やはり以前と同じ症状だったので、このFT232RLはあきらめる事にする。
一旦取り外して秋月電子で買った新品を取付けてみたところ、(当然ながら)問題なく動作した。 今後この基板は龍山電子商街で購入したArduino Pro Miniの書き込みアダプタとして使うことにする(先日のblogではArduino Miniと書いたが、じつはArduino Pro Miniだった事に後で気付いた)。

ArduinoProMini

LEDも取付け、今後Arduino Pro Miniの書込みアダプタとして使う。

FT232RL3

裏から見たところ

 

ソルダーレジスト 手塗り

普通に自作したプリント基板にはソルダーレジストが無い。
半田の付着がどうというよりも、レジストがないとなんだかカッコ悪い。
・・・と思っていたところホームセンターで、サンハヤトの「ソルダーレジスト補修剤」なるものを見つけた。

ソルダーレジスト補修剤

サンハヤトのソルダーレジスト補修剤

これがあれば自作基板にもカッコよくレジストがぬれる!
さっそく手塗りで塗ってみた。

手塗りソルダーレジスト

ムラだらけ・・・

手塗りは難しい。3mくらい離れてみるとそれっぽいが・・

ヨットシミュレータ~その4~

ラダーとメインシートでコントロールできる様になった。
これでとりあえず最低限の動作ができる。

YatchSim1

操作中

ラダーとメインシートの動作状態をボリュームで電圧に変換し、OpenStickでPCに伝える。

YatchSiM2

ラダー部分のボリューム

YatchSIM3

メインシート引き出し量検出プーリー。
ギヤで減速してボリュームに伝えてある。ゴムひもで逆向きのテンションをかけた。

OpenStick基板は毎度の通り基板切削CNCで作成。

あとはセンターボードが必要だが・・・メーカーフェアに間に合うか?