2016年12月21日水曜日

(経過報告)MDX-15/20のコントローラをmbedLPC1768でつくる

これはmbed Advent Calendar 12/22の記事です。

<mbed LPC1768でやったこと>

年明けにMDX-20を購入しました。


それまではiModelaを使っていたので、



これと同じような作業環境を求めていろいろ調査していました。

MDX-20を使う
fusion360のCAMデータをMDX-15/20で使用する
MDX-15/20のCOM端子解析


MDX-20付属のアプリでは、板材からの部品の切り出し(CADで設計してCNCで出力)するようなことは想定していないため、fusion360で設計し、原点設定と、Gコード、RMLコードを出力するアプリを探して環境を整えてきました。

ただし、下記3点の不満は解消できません。

1.細かな原点調整ができない(特にZ軸)
2.制御用パソコンが占有される
3.パソコンとMDX-15/20の接続がCOM経由で、データフロー制御を行う
 最近のPCにはCOMポートがない。またUSB-Serial変換でフロー制御を行えるものは少ない

”1”については、探し出したパソコンアプリで対応できるのですが、ロータリーエンコーダでの操作感にはかないません。専用のコントローラも用意されていないので、MDX-20を直接制御して解決できないかと考えました。

幸い、MDX-20への指示はCOMポートで入力し、コマンド体系もRML言語として公開されていたので、解析は容易でした。

3か月くらいかかりましたが、以下の仕様のコントローラが完成しました。

1.ロータリーエンコーダによる原点調整
2.切削開始原点(ユーザ原点)の設定
3.制御用パソコン不要(USBメモリから切削データを受け取る)
4.ドリルの現在位置をmm表示する



今のところブレットボードで組んだ状態ですが、自分用で1台あればよいのでユニバーサル基板で本組します。







設計データを残すために回路図CADでのPCBデザインまで作業します。
(ハード、ソフトのデータは全部の作業が終わってから公開します)

おおむねの予定は、
1月:ユニバーサル基板での組み立て
2月:PCBデザイン検討
3~8月:プリント基板の製造、動作確認(現状予定なし)

プリント基板の製造は考えていませんが、おおむね10枚以上の希望があれば検討します。
その場合の予価ですが、

1.プリント基板のみ:4000円
2.プリント基板+部品:3万円
3.完成品:4万円

買いたいという人がいれば、このブログにコメントを入れておいてください。

2016年11月20日日曜日

デバック用print文記述いろいろ

C言語でのプログラムで、デバック用のprint文の扱いをこれまで、ifdefでやっていてprint文と合わせて3行になって見栄えが悪いと感じていました。

-例--------
#ifdef DEBUG
printf("debug \n");
#endif // DEBUG
-----------

mbedのlibraryを見ていたらスマートな方法で対応していました。

UART access over BLE
---------------------------------
#define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console;
* it will have an impact on code-size and power consumption. */

#if NEED_CONSOLE_OUTPUT
#define DEBUG(STR) { if (uart) uart->write(STR, strlen(STR)); }
#else
#define DEBUG(...) /* nothing */
#endif /* #if NEED_CONSOLE_OUTPUT */
-----------------------------


などが出てきました。

"デバック256"を参考に、
-------------------------
#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINT(...)
#endif // DEBUG

                strcpy(fileName, p->d_name);
                DEBUG_PRINT("detect = %s\n",fileName);
                ans = true;
------------------------
こんな感じで使ってみました。


2016年10月10日月曜日

mbed LPC1768で作るMDX-15/20 controler



161008より作成中



<PC-MDX間のシリアルケーブル接続表>
MDX-15/20 COM端子接続図

PC Dsub9Pin

MDX Dsub25Pin
PinNo
信号名
説明
信号方向
PinNo
信号名
1
CD
Lo:送信許可
Hi:送信禁止
20
DTR
2
RxD
受信(未使用)
2
TxD
3
TxD
送信
3
RxD
4
DTR
不要
5,8
CTS,DCD
5
GND
7
GND
6
DSR
未使用
4
RTS
7
RTS
Hi固定 *1
6
DSR
8
CTS
不要 *2
20
DTR
9
*1PC 7Pin6Pinと接続すれば、パソコン側の制御は不要

*2MDX-15/20側の20Pinと接続されている。パソコン側での認識不要


<参考・リンク>
RS-232Cコネクタ・信号方向資料

RS-232Cフロー制御の解説

2016年10月1日土曜日

fusion360のCAMデータをMDX-15/20で使用する

<概要>


3D CAD/CAMソフトのfusion360が出力するCAMデータ(Gコード、RMLコード)をrolandのMDX-15/20で利用する方法をまとめました。

ポイントは3つ。
1.MDX-15/20自体はGコードを利用できない
  GコードをRMLコードに変換するアプリが必要

2.MDX-15/20に直接Gコード、RMLコードを流し込む必要がある
  rolandが提供するアプリには、Gコード、RMLコードを直接扱うツールがない

3.MDX-15/20での原点設定を行うアプリがない
  Z軸の設定は本体ボタンで行う必要があり、微調整ができない。
  X,Y軸の調整はMDX-15/20付属のアプリで可能だが、Gコード、RMLコードのファイルを扱うことができない。

この3点に対応するアプリを見つけることが必要になります。

<fusion360側の対応>

CAMデータを作成するためのスクリプトを追加します。
autodiskのwebにあります。

3167_rolandrml.cps : RML用スクリプト。MDX-15/20の選択ができる
3166_rolandiso.cps : Gコード用スクリプト。MDX-40などGコードを解釈するrolandの機器用
              (このスクリプトを元に改造を行う必要がある。これは次項で説明)

fusion360へのスクリプトの設定の仕方は、 3168_settings Roland RML.prg で確認できます。


<Gコードデータの利用>

Gコード転送、原点設定アプリとして、NC-MODELA(使い方もこのwebにある)を使用します。使い方は、



このツールで扱えるGコードに合わせるためfusion360のスクリプト(3166_rolandiso.cps)を改造する必要があります。改造したスクリプトはこちらにあります。(このフォルダにはfusion360のCADデータから、GコードのCAMデータまでそろっています)

・補足
 NC-MODELAで扱えるGコードの種類に制約があるのと、Gデータは1行に1つの制限があります。この制限に合わせるためのスクリプト改造が必要になります。

・使い方
 fusion360でCADデータを作成し、上記のスクリプトでCAMファイルを出力します。
 NC-MODELAでMDX-15/20の原点設定を行った後、同じソフトでGコードデータをMDX-15/20に出力します。



<RMLデータの利用>

RMLの転送には、DropOutを使います。ソフトはこちら(Roland UK web)にあります。



原点出しには、MPG for MDX-20を使います。ソフトと説明はこちら。(bet*ak9*9のブログ VPANEL for MDX-20もどき)


いずれのアプリもMDX-15/20との接続にはMDX-15/20のPrinter Driverから接続するのが良いです。こうすると両方のアプリを同時起動して使うことができます。

fusion360のCAMデータをMDX-15/20で使用する

<履歴>

161230 RMLデータ用プロファイルの追加
161231 ポストコンフィグファイル(cpsファイル)の探し方を追加

<概要>


3D CAD/CAMソフトのfusion360が出力するCAMデータ(Gコード、RMLコード)をrolandのMDX-15/20で利用する方法をまとめました。

ポイントは3つ。
1.MDX-15/20自体はGコードを利用できない
  GコードをRMLコードに変換するアプリが必要

2.MDX-15/20に直接Gコード、RMLコードを流し込む必要がある
  rolandが提供するアプリには、Gコード、RMLコードを直接扱うツールがない

3.MDX-15/20での原点設定を行うアプリがない
  Z軸の設定は本体ボタンで行う必要があり、微調整ができない。
  X,Y軸の調整はMDX-15/20付属のアプリで可能だが、Gコード、RMLコードのファイルを扱うことができない。

この3点に対応するアプリを見つけることが必要になります。

<fusion360側の対応>

CAMデータを作成するためのスクリプトを追加します。
autodiskのwebにあります。

3167_rolandrml.cps : RML用スクリプト。MDX-15/20の選択ができる
              このスクリプトでは最初の各軸の初期位置の設定にバグがあります。これを修正したスクリプトをこちら(3167_roland rml - test.cps)に保管してあります。(161230追加)

161231 cpsファイルを追加
3167_roland_rml-controler.cps(最初の原点復帰処理でZ軸を0指示したもの)
詳細は下記の161231の追記を参照

3166_rolandiso.cps : Gコード用スクリプト。MDX-40などGコードを解釈するrolandの機器用
              (このスクリプトを元に改造を行う必要がある。これは次項で説明)

fusion360へのスクリプトの設定の仕方は、 3168_settings Roland RML.prg で確認できます。


<Gコードデータの利用>

Gコード転送、原点設定アプリとして、NC-MODELA(使い方もこのwebにある)を使用します。使い方は、



このツールで扱えるGコードに合わせるためfusion360のスクリプト(3166_rolandiso.cps)を改造する必要があります。改造したスクリプトはこちらにあります。(このフォルダにはfusion360のCADデータから、GコードのCAMデータまでそろっています)

・補足
 NC-MODELAで扱えるGコードの種類に制約があるのと、Gデータは1行に1つの制限があります。この制限に合わせるためのスクリプト改造が必要になります。

・使い方
 fusion360でCADデータを作成し、上記のスクリプトでCAMファイルを出力します。
 NC-MODELAでMDX-15/20の原点設定を行った後、同じソフトでGコードデータをMDX-15/20に出力します。



<RMLデータの利用>

RMLの転送には、DropOutを使います。ソフトはこちら(Roland UK web)にあります。



原点出しには、MPG for MDX-20を使います。ソフトと説明はこちら。(bet*ak9*9のブログ VPANEL for MDX-20もどき)


いずれのアプリもMDX-15/20との接続にはMDX-15/20のPrinter Driverから接続するのが良いです。こうすると両方のアプリを同時起動して使うことができます。

161231追記
<ポストコンフィグファイル(cpsファイル)の探し方>
MDX-15/20用のRML形式の出力データを作るcpsファイルを探すのに苦労したので記録する。

まず、fusion360CAM画面にして


ポスト処理の窓が開くので、フォルダとコンフィグファイル名を確認する





エクスプローラでcpsファイルを探す。
ここで、“隠しファイル”のチェックを入れないと、cpsファイルのあるフォルダが表示されない。また検索でも無視されるので注意。




google driveのファイルの説明

366_rolandiso_NC-MODELA.cps
NC-MODELAで扱うRMLファイルを出力させる。
NC-MODELAは1行1命令でないと受け付けないのでそのための処理を行う

3167_rolandrml-test.cps
Z軸を一番上(機械原点)に移動させるコマンドの指示がmm単位?になっているのを、MDX-20が扱うパルス数に変更したもの。
MDX-40用のコードがパルス数指示になっているのに、MDX-20,15のみ小数点を含む実数になっている。これが不具合なのか意図したものかは不明。(mm単位にしても、MDX-20のZ軸可動範囲の60.5mm とは合わない)




3167_rolandrml-controler.cps
 上記のcpsファイルに対して、Z軸も“0”指示としたもの。相対指示モードでのコマンドなので、Z軸も移動させない。(意味の無いコマンドとなる)このファイルは、自作したコントローラで使用するために用意したもの。

それぞれ都合に合わせて使い分けること。

2016年7月25日月曜日

博物ふぇすてぃばるに行ってきました ~小物を売るには・見せるには~

博物ふぇすてぃばるに行ってきました。込み合っている卓があると思えば、ガラガラなところがあり、売れているもの、売れていないものがあったりと、良い参考になりました。ここで考えたことをまとめます。

<見てもらうには>

出場者と同じように、来場者も未知の人とのやり取りで臆病になっています。自然に卓に近づける雰囲気が必要です。

・出場者は立っていたほうがよいです。
・座っていると、来場者との視線が上下関係になりとっつきにくくなります。
・座って、スマホをしている人がいますが、やり取りを端から拒否している雰囲気を感じます。
・作業をしている人もいましたが、暇つぶしなのでしょうか。(作っているところを見せたいならその意図が分かるようにする必要があります)
・卓の真ん中にいるより、少し中心から外れたところにいたほうが、来場者は近づきやすいです。
(見せたいものの真後ろにいると待ち構えていたという雰囲気になります)

誰もいないと、近づきにくいものです。反対に、目立つもの(動きのある物、光るもの、来場者が触れるもの)がると、好奇心が抑えきれなくなって近づいてきます。
卓には何かしら触れるもの、動くものを置いておくと良いです。案内板に「手に取っていいもの」、「写真を撮っていいもの」を明示すると来場者は安心します。(出展者に許可を取る勇気もいりますから)さわったり、写真を撮った後なら、来場者も出展者に一言声をかけやすくなると思います。

また、出展者が待ち構えているとこれも近づきにくいものです。目立つ出展物から少し離れて、来場者が近づきやすい雰囲気をつくるといいでしょう。


<展示するもの>

光物、透明感のある物が比較的人気があるように感じます。
鉱物(宝石)、透明樹脂関係、磨き上げたもの・・・

価格帯は3000円以下がよく売れていた感じです。5000円を超えると、初見で買うには思い切りがいります。高価格帯は前回逃した人が買うのだと思います。ですから、高価なものは連続して出品するほうが良いと思います。

ただ、「売れるもの」と考えるとこの展示会はつまらないものになると思います。
この展示会に来る人は、思いがけないものを求めていると思います。「売れるもの」より、自分の趣味を存分に発揮して(他人の目は気にせず)作ったものを出したほうが良いと思います。
(売れる売れないはその後。まずは自分の”好き”を他人に知ってもらうことを考えるといいでしょう)




2016年6月12日日曜日

(160821再追記:製品のRevが更新されています) ESPr Developer(ESP-WROOM-02開発ボード)の電源供給を、”VIN”から行った場合の挙動


16/08/21追記 真の原因がわかりました。取り消した記事の内容が正解でした。

不具合の原因はFT231XS(IC1)への電源供給がVBUS直結になっていたため、VBATから電源供給するとD2→D1(逆方向)経由で微笑電流が流れ、IC1が中途半端に動作することがあるためでした。修正後は、IC1への電源供給は+3V3経由に変更され、VBATからの電源供給でも、IC1への給電が正常に行われるようになりましt。


2016/07/29現在、ESPr Developer(ESP-WROOM-02開発ボード)はRev2からRev3に変更され、この不具合は解消されています。




160821以下2行削除

再度検討して、VBUSのD1が壊れていたことが分かりました。以前使ったときに、過電流を流して壊していたようです。


以下の記事は取り消しします。

SWWITCHSCIENCEのESPr Developer(ESP-WROOM-02開発ボード)を使っていての気づいたことです。

USBから電源供給する場合は、ボードに実装されている、FT231(USB-Serial)に電源供給されますが、"VIN"端子から電源供給する場合は、このICには電源供給されません。

ICの個体差によっては、VIN端子からユニット内部の逆流防止ダイオードを通って電圧が印可され中途半端に動作するようです。
ただし、ICの個体差なのか、使用しているときに壊してしまった結果なのかは不明です。





2016年5月28日土曜日

2016年5月21日土曜日

ESP-WROOM-02とiphoneをBlynkで制御する

Blynkという、iphone (やandroid)でarduino(やRaspberry Pi )のI/0を制御するアプリがあります。

今回は、iPhoneとarduino化したESP-WROOM-02(ESP8266)でLチカ動作確認しました。

システムの仕組みは、スマホアプリからコントロールされる、ドライバ的なプログラムをarduinoに入れ、アプリに表示される"Auth Token"という文字列でアプリとarduinoを紐づけしてコントロールするものです。arduinoの動作はアプリ側で定義・設定する形になっており、arduino側プログラムはwifiの設定(SSID,password)、アプリとの紐づけの"Auth Token"の設定以外は変更する必要はありませんでした。


Blynkingのwebが、一次情報になります。アプリのダウンロードリンクや、ファーストステップの説明があります。

arduinoのlibraryやサンプルプログラムは、こちらにあります。
ダウンロードしたzipファイルを解凍して、手動で、下記4つのフォルダをarduinoのフォルダにコピーします。(コピーするようにダウンロードサイトに説明書きがあります)
~\Arduino\libraries\Blynk
~\Arduino\libraries\BlynkESP8266_Lib
~\Arduino\libraries\SimpleTimer
~\Arduino\libraries\Time
サンプルプログラムは、解凍したzipファイルの下記のフォルダにあります。
~\Blynk_v0.3.6\Blynk\examples\Boards_WiFi\ESP8266_Shield\ESP8266_Shield.ino
予めESP-WROOM-02をarduino化しておきます。サンプルプログラムにwifiのSSID,passwordとアプリとの紐づけ用のAuth Tokenを転記して、ESP-WROOM-02に書き込んでおきます。
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 *
 **************************************************************
 * This example runs directly on ESP8266 chip.
 *
 * You need to install this for ESP8266 development:
 *   https://github.com/esp8266/Arduino
 *
 * Please be sure to select the right ESP8266 module
 * in the Tools -> Board menu!
 *
 * Change WiFi ssid, pass, and Blynk auth token to run :)
 *
 **************************************************************/

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";         // ←"YourAuthToken"の部分をAuthTokenに置き換え)


void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, "ssid", "pass");           // ←ここに"ssid", "pass"にSSIDとpasswordを置き換え
}

void loop()
{
  Blynk.run();
}
アプリ側でLEDを接続する端子の設定を行うため、arduino側プログラムでの端子の設定は不要です。
アプリ側の設定ですが、本家のファーストステップや、紹介記事を参考にしてください。





2016年2月21日日曜日

MDX-20を使う

<履歴>

160221(初版):CAD,CAMの使い方。リンク
160222:CADの多角形の書き方
160922:海外Rolandweb(USB-serialなどの情報あり)
190925:fusion360のGコードデータをMDX-20で使用する。
191003:MDX-20とパソコンの接続の解説があった RS232CDsub端子の開設

<はじめに>

アクリル板や木板の切り抜き加工をするためにMDX-20を購入しました。しかし付属ソフトでは作業性が悪い(正確な寸法を設定するのが難しい。複数の深さの切削がしにくい。切削時の原点設定などがしにくい)ので、代替ソフトで対応することにしました。

補足:
これまでiModela(iM-01)を使ってきました。この機種にはiModela Creatorという2.5DCAD,CAMソフトが添付されており、このソフトになじんでいたので、このソフトの操作感に近いものを探すことにしました。
ちなみに、SRM-20という最新機種は、MDX-20と同じ加工範囲がありiModela Creatorも使用できます。


<使用ソフト>


MDX-20のコントロールソフト:NC-MODELA
NC-MODEAは板材から部品を切り出すことに最適なソフトだと思います。
このソフトで紹介されているCAD,CAMソフトを使用します。

CAD:鍋CAD(フリー版)
CAM:NCVC

使用方法は各ソフトのWeb、ヘルプなどを参照してください。

<ソフト使用方法の覚書>

CADの使い方

CAMに渡すデータを作成するうえでのポイントは、”ページ”と”レイヤー”の関係。
”ページ”は別データを同じ画面に重ねて表示するためのもの。今回の場合だと、切削にかかわるデータと、切削データを作成するときに使用するMDX-20の最大加工範囲のデータに対して、ページを分けています。

各ページには複数のレイヤーを持つことができます。レイヤー毎に、原点データや切削条件の異なるデータを設定します。CAMではレイヤー毎にその意味付け(原点データ、切削データ)を設定して読み込みます。

CAD(2D)では切削外形の指示しかできません。切削の深さ(Z軸)の設定はCAM側で行います。
切削深さが異なるデータは、レイヤーを分けておきます。

CAMに渡すデータは”DXF”形式です。



--------------------------------------------------------------------------------
160222追加

多角形の書き方

鍋CADではスクリプトを使用して多角形を描きます。
スクリプトの使い方はCADのHELPで確認してください。


スクリプトはユーザーが作成することができます。
アルファー精工株式会社のWebにスクリプト集がありました。
ダウンロードして解凍したファイルを"C\NTCAD¥SCRIPT"にコピーすれば使えるようになります。

-----------------------------------------------------------

CAMの使い方

DXF形式で渡されたデータに対して、レイヤー毎のデータの意味づけを設定します。レイヤー名称はCADで設定した名称になります。レイヤー名称は正規表現が可能で、2枚以上のレイヤー設定が可能です。



レイヤー毎の切削条件を設定します。




これで、DXFデータからNC(Gコード)データが生成されます。

<fusion360を使う>160922追加

fusion360でRML形式で出力(インストール時に入っているのは1step 0.01mmのMDX-40系みたい)
MDX-15/20用のCAM出力cpsファイル(3167_rolandrml.cps/3166_rolandiso.cps)

MPG_MDX-20(原点調整ツール)で原点設定

DropOut(RML出力ツール)でMDX-20にデータ出力

でいけそう

<fusion360のGコードデータをMDX-20で使用する>

160925追加


・3166_rolandiso_NC-MODELA.cps : fusion360のCAMのポストコンフィグファイル
ここから持ってきた3166_rolandiso.cpsファイルを改造)
・G_RML-data確認v1.f3d : fusion360のテストデータ(50*50*1mmの立方体)
・1001.nc : NC-MODELAで扱えるGコードデータ

1.cpsファイルのコピー

fusion360のcpsファイルが保管されているフォルダ(エクスプローラで"cps"で検索)に"3166_rolandiso_NC-MODELA.cps"をコピーする

2.3Dデータのfusion360への取り込み

G_RML-data確認v1.f3d をfusion360にインポート


3.CAMデータに変換

fusion360をCAMモードにして"アクション-ポスト処理”から、1でコピーしたcpsファイルを選択

プロパティの”NCimodela”を”はい”にする。(”いいえ”の場合は元ファイルでの変換になる)

4.NC-MODELAでの使用

・fusion360で作成したGデータファイル(1001.nc)をNC-MODELAに取り込む
・NC-MODELAの”START”を押してGデータを実行
・MDX-20の動作原点設定
 MDX-20が停止したら、X、Y,Z原点に刃物を持って来て、再度”START”を押す
・MDX-20が機械原点(手前左側)に移動して止まる
・よければ、再度”START”ボタンを押す。これで切削開始

<MDX-20関係のリンク>


切削加工の参考

MDX-20の使用法
MODELAファン

MDX-20の面出し
bet*ak9*9のブログ

原点設定ツール
(MDX-20の制御コードはRML−1か?)

MDX-15でのワックス・両面加工
オーダージュエリー制作の日々【京都】

160922追加
北米RolandWeb ファームウエア、ドライバ、RMLファイルの転送アプリ(DropOut)
windows10のdriverもあるが、serialNo登録してダウンロードする形になっている。

161003追加
PCとの接続ケーブル(COM)の解析

161003 追加
RS232C Dsub9pin Dsub25Pinの端子解説