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万円

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



と、宣伝がてらの内容ですが、ここからは、今回の設計で考えたことを書き出しておきます。
でも、mbedとは絡まないけど。

<小さく生んで大きく育てる>

最初から全機能を組もうとすると、動かすまでに長い時間がかかり、不具合もてんこ盛りになりがちでモチベーションの維持が難しくなります。小さな機能ごとに作っていって、動かしながら追加していくといいでしょう。

まずは体裁を気にせず「動くソフトはいいソフト」という感じでやっていきます。プログラミング技法とかいろいろ言われていますが、それを気にしてあれこれ考えていても進みません。プログラムが汚くなることも許容して「まずは書く」と考えたほうが作業は進みます。動くようになって、今後も利用するだろうとか、メンテナンスがしにくくなったと感じたら書き直していけばいいでしょう。

今回の作成では、次のように作業していきました。

1.MDX-20のCOMを流れるデータの解析

mbedのserialとMDX-20を接続して、PCのターミナルで1命令づつ実行できるものを作り動作確認。

2.CNCの各軸を手動で動かせるようにする

mbedにロータリーエンコーダを接続して、これでMDX-20の各軸を手動で動かせるようにした

3.キャラクタLCDへ各軸の移動距離を表示

mbedにキャラクタLCDを接続して、X,Y,Z軸の現在位置をmm単位で表示できるようにした

4.USBメモリのCNCデータで動作するようにした

 mbedに Aタイプコネクタを接続して、USBメモリの内容を読み出せるようにした

と4段階で作業しました。というより、最初はうまくいくかわからなかったのでテストがてら組み立てていき、その中で必要な機能を思いついて入れていった感じです。

初めて使う部品や機能だと、ハード、ソフトをどう組めばよいかわかりません。なるべく小さな単位で回路を作り、ソフトを組んでいき、うまく動かない場合でも解析対象を小さくできるようにするのがコツです。mbedならマイコンを動かす回路は一通り入っており、ICを接続するのも割合小さな回路で済みますし、ICを制御するためのソフトウエアがLibraryとして用意されていることが多いので少ない労力で利用できるでしょう。


<2分割法での不具合解析>

大体、ものを作っても一度で動くことはまれでしょう。特に、マイコンを使った電子工作だと、原因がハード、ソフト(往々にして両方だったりしますし)どちらにあるのかわからず途方に暮れることがあります。

そういったときは、領域を2つに分けて、「どちらに原因があるのか」という視点で試験をするとよいです。




下の図で、80マスある四角全体が作ろうとするシステムだとします。この中の69番目のマスがバグだとして、端からしらみつぶしにすると69回目にバグを見つけることができます。しかし、2分割法なら4回で6マスまで絞れることになります。




もう少し具体的に言うと、

1.ハードとソフト

何かあったらまず、電源電圧、端子の電圧レベル、オシロスコープがあれば、波形などをみますよね。これで、ハードなのかソフトなのかをきりわけます。

2.ソフトでの切り分け

たくさん関数がある場合は、複数の関数を2つのグループに分けてどちらに不具合があるかを考えます。

 だんだん領域が絞り込めたら、関数間、1つの関数に絞り込めたら関数内・・・と切り分けていきます。

mbedでの開発なら、マイコンボードを2つ用意しておき、ハード、ソフト共に最小限の構成で不具合が出る環境を作り、その中で原因追及することもできるでしょう。

<バグの気持ちになる>

その不具合をどうしたら発生させられるかを考えるということです。FTA(Fault Tree Analysis)のことです。
不具合を見つけると
  「どうしてこんな動きをするんだ・・・」 と思いますが、ここで
  「どうすればこの動きを実現できるのか」 と考えるのです。
同じ考え方に見えますが、後の考え方の方が不具合に対してアクティブというのか前向きです。

1つの不具合に対してそれを起こさせる原因は複数考えられますし、1つの原因も複数の不具合を起こす可能性があります。ただし、不具合はそのとき抱えている1つですから、解析するにはその不具合からたどっていったほうが効率がいいということになります。

この考え方で不具合を発生させる脈絡をいくつか考えて、それを裏付けるテストをしていけばよいことになります。

ちなみに設計の時は、原因から考えていって何が不具合として起こり得るかを考えます。FMEA(Failure Mode and Effect Analysis)のことです。

<mbedでの開発の工夫>
ICなど単体の機能での動作確認をした上で、システムに組み込むと良いです。また、一番最初はブレットボードで組むと試行錯誤をしやすいです。そこで、

1.機能単体での動作環境

 小さいブレットボード+mbed






2.システムでの動作環境

 大きいブレットボード+mbed





の2つを用意して作業するといいです。

ブレットボードを使う場合には2.54mmピッチの端子のものしか使えないので、表面実装部品や、2.54mmピッチ以外の部品を使う場合には変換基板が必要になります。こうしたものはブレットボードでの試作用として準備しておくとよいでしょう。







<12/24mbed祭り役立情報>

2017年2月号
緊急特集!IoTには避けて通れない
本家ARMのIoTワールド入門
を会場近くで買いたい人

住所: 〒920-0961 石川県金沢市香林坊2丁目1−1 香林坊東急スクエア
電話:076-234-8111


昼ごはんを食べたい人

兼六園の土産物屋が並んでいるところが一番近いと思います。

しいのき迎賓館には食べるところ(海鮮系)はなかったと思います。香林坊の居酒屋はまだ開いていないし、しいのき迎賓館向かいの百万石通りの店は洋食が多いです。


時間に余裕があって、ぶらぶら歩いて観光がてら昼ごはんを食べたい人


壺屋壷亭

〒920-0902 石川県金沢市尾張町2丁目16−4

和食ランチ コーヒー付き





  

むさし

〒920-0902 石川県金沢市尾張町1丁目9−4


夜は居酒屋、昼ランチ







そういえば明日から3連休。明日は祝日、土曜イブ、日曜クリスマスですね   
     あっやめて ディスプレイ投げないで
 




以上







 







0 件のコメント:

コメントを投稿