メイン

2006年10月07日

高速化2

 タイマの処理は軽くなったけど、トータルで見れば処理内容は変わらないので 5KHz 以上の高速化は出来なかった。ただ、これはこれなりに使えそうなのでよしとする。

 7026 の回路を早いとこ、製作して俺CNCプロジェクトのハード部分はコンプとする。ソフトは随時、強化していく。最近、金属削ってないな。そろそろ、ロボのガワでも作り始めますかね。

2006年10月06日

高速化

 現在のEZ-CNCのステッピングモータの励磁方法は 1-2 相励磁である。最高周波数は250Hzだ。現在のモータのスペックだとこんなものなんだけど、マイクロステップや別のICで使うときは少し、遅いし使いにくい。

 そこで、ステッピングモータのドライブICで有名なサンケンの7062にあわせるべく、EZ-CNCのファームウェアを少しいじってみた。1−2相励磁を行う励磁パターンの出力方法として予め配列にパターンを用意しておき、それをタイマ割込み毎に出力させる。と言う手法を使う。この処理は8ビットのマイコン、8051には重いのだ。7062用には単純なパルス出力とモータの回転方向を示すデジタル出力が必要になる。

 単なるパルス出力に変えたところ、出力できる周波数は 5KHz になった。これでもまだ遅い。色々と検討した結果、タイマ処理のオーバヘッドが見つかったのでこれを修正してみることにする。台形加速度制御も考えないと...。

2006年10月02日

秋月電子からステッピングモータが発売された

 こんなかんじ。7026 もあるし、FX2のチップも売っている。これでほとんどのパーツが秋月から購入可能になった。ついでにキットも出してくれないかな?ソフトはEZ-CNCのシステムがマンマ使えるので便利だと思うのですよ。

 EZ-CNCはみんなが使えるプラットフォームとして提供する予定。RoboShellと同じ概念だな。

2006年09月16日

Version 2.0

 以前に製作した、FETのモジュールを使った新しいコントローラをシステムの中に組み込んでみた。ソフトもポカヨケ対策を施したタイプに変えた。試運転の時、Z軸が動作しなかったが、これはFETの足の接触不良とわかり、ハンダを盛り直して復活した。


New CNC board
New CNC board

 前のより、だいぶすっきりした感じ。10mmのチャンネルを付けて、冷却効果を高めるつもり。

2006年09月14日

Pulse generation with FX2 GPIF

FX2 で使われているマイコンは 8051 。このマイコンは当時でも、今でもそんなに強力ではない。ただ、USB用に特化したMCU構成としているのでUSB2.0でも使えるようになっている。特化した部分と言うのは、GPIFであったり、FIFOだったりする。

 この強化部分でパルス発生ができないかを考えてみた。と言うのも、既に鬼吸いの実績があるのでGPIFでパルスパターンを生成出来れば、ほとんど業務用にまで適用できそうなクロックである。

 ちょっと、マニュアルを見てみてどんな風にすればよいかを考えてみることにする。

2006年09月12日

Next Step...

EZ-CNC を発表してから、色々な方にアドバイスをいただいた。USBのメリットは皆さん、理解されているのでコンセプトは理解してもらえたようだ。もう一段の飛躍として、より高度なコントローラを望まれていることがわかった。具体的には


  1. 発振周波数の向上(100KHzオーダ)
  2. 7062などのステッピングモータICの出力

ぼちぼち、やっていこうと思う。

2006年09月06日

CNC2.0

 とりあえず、新しいコンセプトが出来たら、何でも 2.0 にすればよい。ってのは前にも書いたとおり。
 最近はめっきり CNC なのだが、以前に作ったボードがちょっと気に入らなくなってきたので新しいボードを作ってみた。
New CNC board
New CNC board

まだ、ケースの穴あけとかはしていない。ボード自体はステッピングモータの回転までの動作は確認した。けっこう、スカスカだけど今後も改良を続けていく。現在はダーリントントランジスタから、FETモジュール(MP4401)に変えた。このFETのゲート電圧は4V以上なので、5Vインターフェイスとして 74HC244 を間にかませてみた。

New CNC board

 安全対策として、ヒューズなども入れてみた。
New CNC board

他にも色々、アイデアはあるけどしばらくはこれでいこうと思う。

2006年08月30日

ソフトの改良

 なんか、永久に続くかと思われたソフトの改良だがナントカカタチになってきた。各種のパラメータを設定ファイルと*.ini ファイルに持たせることにより、様々なタイプのフライスに対応できるようになった。これでいちいち、再コンパイルしなくて済ませられそうだ。

Adaptor

 フライスに「動作パターンを覚えさせて実行させる」機能も実装し始めた。一発目は大穴(円)を開けるための機能だ。

CircleTool.png

ただ、今のやり方だといちいちコードを書いているので、プラグイン形式で出来ないかを検討してみる。

2006年08月27日

もうちょいだな

 XJ9512のテーブル駆動はジャンクのステッピングモータでは、ちと荷が重いようだ。先日も駆動IC内のトランジスタが焼けてしまって煙が出てきた。これはけっこう焦るね。

 Z軸で使っている日本サーボの大きめのステッピングモータを使うことにした。X軸は現在のハンドルが使えるので、片軸。Y軸はハンドルの増設も考えて両軸とした。24Vを印加しているが、ICの温度も40℃いかないし、モータ本体もほんのり温かくなる程度だ。

OverView

 ソフトもNK氏のアドバイスを頂いて、かなり手を入れた(と言うか、TeamKNOxがフライスの知識、無さ過ぎ?)。一応、丸も丸らしく描けるようになってきた。バックラッシュの補正方法をもう少し、煮詰めなければいけないのと、メカの精度ももう少し上げたい。CNC化の目途は立ったので、自分自身でパーツを作りながら精度を上げていこうと思う。

Draw Circle

Draw Circle

2006年08月21日

俺っちの芸風

 先日、技術系の某誌の編集長と色々と話をした。改造したフライス盤を二人で囲んでの話である。元々はロボの機体作りの為に導入を決めたフライス盤であるが、自分自身のユースケースを考えてみると他にも色々あることがわかった。
 ボール盤として使うのがやはり、多い。それもほんのちょっと賢さが要求されるような使い方だ。CNCの応用として、簡単な図形の穴あけをその場で出来るようなフライス盤を目指すことにする。そう、DB9とかDB25のコネクタ形状をその場で穴あけ出来るような感じだ。ケースをきれいに加工できると完成度がそれだけ高くなるもんね。

2006年08月19日

バックラッシュ対策

CNCではバックラッシュ対策が必要になる。色々なページを拝見すると、先達の苦労がわかる。小生も最初は大した事ないと考えていたが、実際にやってみるとかなり苦労した。メカ的、ソフト的な工夫が必要になった。メカ的な点はガタを極力、無くすと言う事。ソフト的には現在がモータの方向の変化時なのかどうかを見極める必要がある。
 UIを少し工夫してどっちの方向に向かっているかを一目でわかるようにした。具体的には+方向に進んでいる時は緑色で現在位置を表示して、シアンだと−方向とした。ほんの少しの工夫だが、だいぶ使いやすくなった。UIは継続的に改良していく。

少しずつ精度が上がり始めてきた。

CNCを実際に使う上で、調整するパラメータが何箇所かある。

 これをうまく調整しないと全然、うまくいかない。
 先達が皆、通ってきた道、円を描かせることに挑戦した。
 まだ、調整が必要だが、一応それっぽいのを描きはじめた。

Adaptor

 今回はブレゼンハムのアルゴリズムなので、X,Yを交互にOn/Offしている。モータの停止・起動が繰り返される。連続回転ではないので、その度にイナーシャがかかり脱調しやすい。実際、ここまで来るのにかなり、調整が必要だった。具体的には速度は少し落として、解像度辺りの分解能は8に設定した。
 実は上の円の連続描画はバグで本当は一つだけ描かせるはずなのに、いくつも描いてしまっている。この辺りも徐々に追い込んで行こうと思う。バックラッシュが顕在化している領域もあるので、これも改良していく。

2006年08月16日

少しずつ

目に付いた不具合点は修正した。バックラッシュの補正は調子が良いと、±0になるが大体、0.05mm位で収まるようになってきた。この辺は少しずつ、追い込んでいきたい。

 ioio さんが EZ-USB で同じく CNCを構築しているが、TeamKNOx のやり方とはだいぶ違う。ioio さんのは従来と同じく、PCからパルスを発生させる。進化した点はパラレルポートではなく、USBチップのポートを介してと言うことだろう。タイマはPCのを使う。

 TeamKNOxはタイマはUSBチップのモノを使っている。細かいI/O制御はローカルにやらせるのが鉄則だからだ。

2006年08月15日

修正箇所

 1. Z軸の動作のゲームコントローラのボタンの入れ替え
 2. バカヨケをZ軸の動作にも適用する
 3. バックラッシュの補正量の追加
 4. 3の設定用ダイアログの追加

 とりあえずはこんな感じ。順次機能追加と修正。

2006年08月12日

ブレゼンハムを用いてCNCを実現

X-Y平面に直線を引く場合、XかYが0の場合は簡単である。そのまま、線を引いちゃえばいい。ところが、X,Yが0以外の場合はちょっと面倒くさい。
X,Yは異なる距離なんだけど、到達時間は同じにしなければならない。この場合はX,Yの比を求めて、それを移動速度に乗じることにより、到達時間を同じにする。
タイマで設定できる範囲が十分にあれば、問題ない。それぞれの乗数をタイマの設定値にぶつければよい。問題はタイマの設定範囲が十分に無い場合だ。

今回はブレゼンハムを用いた。この方法のよい点はX,Yが順番に設定されるので、同時に電流を流すことが無い。つまり、電源に負担をかけないですむ。

Z軸、稼動開始

フライス盤のCNC改造の当初からの懸念事項であったZ軸の改造が完成した。当初購入したステッピングモータのトルクでは足りないので、新品のモータを購入したのだ。

Adaptor


イメージどおりの動作なのですごくうれしい。これで全軸動作できるので、いよいよCNCの運転開始だ。

秋葉原をぶらついていたら、CNCにぴったりのPS/2タイプの10キーボードを見つけた。マウスとの分岐ケーブルも付属していてジャンク扱いなので¥200だった。これも早速、取り付けてみた。

Adaptor

10キーでもオペレーション出来る様なUIを考えてみようかな?

2006年08月06日

Z軸に挑戦

当初から、この問題を抱えてきた。何もしなければ始まらないので、挑戦してみた。Z軸をモータライズするにはいくつか案があったけど、どれも構想の段階で消えてしまった...。
あと、残っているのは今回の方法とキットを購入してそれを取り付けることくらい。キットは本体に対するインパクト(色んな部品を取り除いたり、ジグを入れたり、不可逆改造したり)が大きいので、最後の手段にした。

Z軸のアダプタはこんな感じ
Adaptor

取り付けはこんな感じ
Adaptor

でも、このモータだとトルクが足りないのでZ軸の駆動は出来ない。ばねばかりを購入して、トルク(重さ)を計ってみるつもりだ。
※順番、逆だよな...。

トルクが適当な値なら、モータを購入して取り付けてみる。そのモータは最後の手段のキットでも利用できるので、無駄にはならないのだ。

2006年07月28日

機能アップ

EZ-CNCの機能アップを試みている。

 CNCは刃物が高速で回転しているし強いトルクでX-Yテーブルを動かすなど、極めて危険な代物である。安全面には十分、気をつけて臨まなければならない。
 盛り込める安全策は全て盛り込むつもりで製作するわけだ。また、こういった安全サイドの対策は人身事故を防ぐだけではなく機械にもやさしい場合が多い。
 今回の改良点はソフトウェア的に盛り込んだリミットスイッチである。EZ-CNCのホストソフトウェアはステップパルス数をセットしながらと同時にコントローラが保持しているパルス数の読み込みも行っている。このパルス数の積算が一定の量を超えたら、軸のステップモータを停止する。ソフトで実装しているのでコストは0。こういうのは何度も言ったけど、本当に好き。

Limit Detector

テーブルサイズは任意の大きさが入力できる。でも、まだ保存機能を付けていない。この辺も直していかないと...

2006年07月27日

やる人がやれば...

昨日のブログでは、ヘタレな内容を書いてしまった。
32bit が不自由な SDCC と書いたわけだが、本当に不自由なのは俺のほうだったわけだ。

こちらの方からアドバイスをいただいた。俺のコードより全然良い。
このコードが奏功して、かなりまともになった。これで 32bit データのやり取りも簡単に出来そうだ。
ファームウェアもいくつかの点で機能拡張したいので、このアドバイスは貴重な戦力になる。

多謝。

2006年07月26日

SDCC って

ファームウェアのバグが取れた。このバグはかなりストロングなバグでNCとして使うには致命的なものだった。なんせ、送りをした時に設定した点を通過してしまうのだ。当然、ホームポジションに戻すときも通過してしまう。これも必ずしも全部の設定でそうなるわけではなく、なったりならなかったりなのだ。

どの設定値の時に発生するかを調べることにした。けっこう、まちまちだったがなんとか傾向がつかめた。32bit 変数が少し不自由な SDCC の場合は、トリッキーなワザが必要になる。嘆いていてもしょうがないので、対症療法でなんとかバグを沈静化した。

まぁ、なんとか使いやすくなった。パーサを入れれば出来上がりだな。

2006年07月25日

プログラムの修正

細かい不具合がいくつか見つかったので、EZ-CNCのホストプログラムを修正した。こうやって、品質を上げていくのだ。開発環境と実行環境が近いので、すぐにデバッグが出来る。

2006年07月24日

ページまとめてみました。

今までの作業内容をまとめてみました。
やっている時は必死だったけど、俯瞰すると大した事をしていないような…。
いくつか不具合があるから早いとこ、完全なCNCにしないとだな…。

http://www.teamknox.com/EZ-CNC/EZ-CNCj.html

がんばります。

2006年07月22日

送り機構使ってみました

一応、動作するようになったので送り機構を使って、各種の加工を行ってみた。気付いたことはソフトのバグが多い。多すぎる!!
HomePositionにうまく戻れないやら、指定したポイントを通り過ぎるやら…。ただ、ジョイスティックによる送り機構は中々使い勝手が良い。

それで作ってみたのが、ステッピングモータドライブ回路のマウンティングブラケット。

出来たので、さっそく取り付けてみることに…。
Adaptor

まだ、フタをしていないけどフタには自動送りでメッシュ状の穴を沢山開ける予定。

2006年07月20日

X-Y 動き始めました。

システムはこんな感じ。

Adaptor

色々と描かせてみたけど、筆圧とバックラッシュが出ているような感じ。
Adaptor

結局、Y軸の動きに手こずってしまった。ジャンク箱にあったスプラインプーリをスペーサ代わりに使ってみた。
Adaptor

2006年07月18日

着々と…

こちらの方のページを参考に、制御用のPCを取り付けるフレームを組んでみた。

Adaptor

とりあえず、ハードは細かなものを作るだけで終わりそうだ。

 1.延長ケーブル
 2.コントローラユニットブラケット

 1.は既に部品は購入してあるので、組むだけ。
 2.に関しては設計(って言うほどじゃないけど)は終わっているので、材料(アルミアングル)を買ってくる。

 後はZ軸だけになるね。

2006年07月16日

Y軸も、動き始めました。

こんな感じでY軸もステッピングモータを取り付けてみた。

Adaptor

Y軸は動きが軽く、X軸よりスムースに動く感じ。


全体的にはこんな感じ
Adaptor

後は延長ケーブルの製作とPCの取り回しで送り機構の代わりくらいは出来そうだな。
CNCのパーサは継続して開発する。

CNC 継続して作業中

更に発注した部品が到着したので、作業を進めた。

Adaptor


これが、現在使っているカップリングシャフト。

Adaptor


正しいかどうか、わからんけどこんな感じで押さえつけて座ぐってみた。

Adaptor


ケースの加工も始めた。
最初は良い感じだったんだけど…。

Adaptor


見た感じ、わからない様に撮影してありますが、大失敗。穴位置が大幅にずれているのだ。近いうちにリベンジしたい。
加工精度上げねば…。
で、やすりがけしまくったので腱鞘炎に…。加工精度を上げれば、腱鞘炎にもならずにすんだのに……。

2006年07月09日

X軸、とりあえず動き始めました。

やっと、カップリングシャフトが送られてきたので、ステッピングモータを取り付けた。

Adaptor


まぁ、それなりに精度は出ているかな?って感じ。

Adaptor


スパルタンな感じがして良いね。

Adaptor


今回、購入したカップリングシャフトは 6-8 なのでステッピングモータの径と微妙な差があり、最初はそのまま取り付けられなかった。とりあえず、6.5mm のドリルで座ぐってから入れてみた。

Adaptor


もう一つの落とし穴は、動作電圧。最初は定格(と言うか、表記と思いたい…。)の6Vでやっていたんだけど、完全なトルク不足で最低速度にしても脱調する。カップリングシャフトの取り付けがよろしくないのかな?と思ったけど、色々とやってみて動作電圧を上げてみることに…。
とりあえず、12Vまで試してみたけど、9Vの時とそんなに変わらないので9Vで動作させている。しばらくはこの辺りで使って様子を見ようと思う。

と言うことで、次はY軸ですな。カップリングシャフトの発注をしないと…。アダプタはもう出来ています。
#カンバン方式。

2006年07月04日

ちょっとだけ前進

インターネットで発見したスペーサー屋さんからカラーを購入した。70mmのがあればバッチリだったけど無かったから35mmx2とした。CNCが出来上がれば、自分で自分のパーツが出来るようになるのでそれまでのガマンだ。

Adaptor

まぁ、こんな感じ。

このスペーサ屋さんで、今度は RoboShell 関連のお買い物。
11mmのスペーサ。この中途半端さが EZ-SERVO と 子基板をガッチリと固定するのだ!!

2006年07月01日

ステッピングモータ取付け用ブラケット

とりあえず、作り始めてみました。
まず、X軸にステッピングモータを取り付けてトルクを見ると言うことです。

EZ-CNC


穴あけを始めたところです。

EZ-CNC


ホールソーを取り付けてみました。

EZ-CNC


やっと、穴が開け終りました。

EZ-CNC


これから仕上げです。

タッピングも出来たので、モータを取り付けるためのカップリングとカラーの発注をしました。うまくすれば今週中に組み上がると思います。
Y軸はX軸に比べて軽く動くので、X軸に問題がなければ治具さえ出来たら簡単に動作しそうです。


問題は…… Z軸……。

2006年06月29日

ソフトで出来ること

システムを作るときにはフェールセーフが欠かせない。フェールセーフは一般にバ○ヨケとかポカヨケとか言われているものである。今回製作している CNC にも欠かせない技術だ。例えば、X-Yテーブルの行き過ぎを防ぐためのリミットスイッチ。これなんかもフェールセーフの一つだ。でも、リアルスイッチを付けようとすると結構大変だったりする。こういう時こそ、ソフトの出番なのだ。システムはどの位置にいるか把握しているので、テーブルが行き過ぎそうになったら、モータのパルスを止めて防ぐことが出来る。予め、ファームウェアとホストソフトに入れておいたらいいかもしれない。
まだ実装していません.

もう一つは、モータの過電流防止だ。励磁信号をそのまま出し続けると、けっこうな電流が流れ続ける。これを防ぐためにパルスを止めるときは完全にダーリントントランジスタのベースに与える出力を完全にOFFにする。

ちょっとの工夫だけど、効果は絶大だ。こういう工夫が出来るソフトは本当に楽しい。

2006年06月25日

CNC 用コンピュータ

まだ、CNCも出来ていない内からこんなのを心配してもしょうがないんだけど、とりあえずCNC用のコンピュータを一台仕立てることにした。非常用のマシンとして、たまに使っていた X240 だ。でもこれはUSB1.1が一つしか装備されていない。EZ-CNC はジョイスティックとEZ-CNC自体で最低でも2つのUSBポートを利用する。とりあえず、ADAPTECのUSB2.0ボードをCardBusに差し込んで使う。でも、これだとイーサネットのポートが確保できない。これもUSB2.0のバッファローの無線LANアダプタを利用する。この辺はハブを利用していもいいかもしれない。ただし、EZ-CNCに使っているEZ-USB系列ではハブを使うとうまく行かないと言う事例も紹介されているので、注意が必要だ。EZ-CNC自体はCardBusのUSBポート直結と言うことにする。
後はソフト自体を適当にインストールして実験してみる。

2006年06月24日

治具の図面

こちらの方が公開されているNC エディタ・フリーでフライス盤CNC化の治具の図面を描いてみた。
この手のツールを使うのは初めてだけど、さくっと描けた(はず?)。面白い。あとはこれを元にアルミの板を削りだしていく作業を行うのだ。
今日もホームセンターに行ってきた。フライス盤を作業台に固定するためのタッピングスクリューを買ってきた。これでガッチリ固定したので、かなり良い感じになった。

2006年06月23日

EZ-CNC システム全景

MiniFX2 での波形出力確認が出来たので、モータも合わせてつなぎ込んでみた。こんな感じになる。
MiniFX


基板関係はコンパクトにまとめることが出来た。この後に以下の手順で試験を行う。
CNCのパーサ動作後に
1.無負荷での消費電流の確認
 モータを3個接続しCNCのGコードを流してモータの動きと消費電流、トランジスタの発熱を確認する。この時点で2Aを超えているようだと秋月のACアダプタは使えなくなる。

2.フライスに組み込んでの動作確認
 実際の負荷に近い環境での動作確認。この時点での消費電流を確認する。実際の作業環境ではワークに刃物が当たるのでさらに消費電流が大きくなる。

プログレスバーを組み込んだソフトはこんな感じ
RoboShellStepper

CNC の機能について後日と言うことで。

2006年06月22日

ホストSWの改良

EZ-CNC のホストSWの改良を行った。改良点は…
 1.プログレスバーの追加
 テーブルの動作がどの程度進んだかを示すプログレスバーを装備した。

 2.座標の与え方を相対座標と絶対座標で行えるようにした。

 3.CNCの画面の追加
 まだ、中身は何も実装していないが、とりあえずガワは用意した。

 はやく、ステッピングモータ用の治具を作らないとな…。

2006年06月21日

MiniFX2

MiniFX2


先日、送られてきた MiniFX2 から信号を取り出す基板を作成して、実際に動作させてみた。プログラムを PORT-C のドライブから PORT-D のドライブに切り替えてみた。最初は信号が出なかったが、ホストSWの不具合だった。(つまり、PORT-Cでも動作しなかった。)PORT-Dでも問題なかったので、最初に作った基板の配線もPORT-Dに変更して、ソフトは一種類にした。

RoboShellStepper

ホストSWも変更した。桁数を増やしたのと、各種のファンクションスイッチを配置してみた。原点復帰(Home)なんかも入れてみた。なかなか、いい感じに雰囲気が出てきた。
これからは細かなところも作りこんでいかなければならない。例えば、各種の設定メニューやそれらを記録するための *.INI ファイル(レジストリを汚すのは嫌い)なんかだ。
フライスの整備と合わせて、もう少し時間が必要かも?

2006年06月19日

AutoFeed

さらにファームウェアの拡張は続く。XYテーブルの大きさや 1mm あたりのステッピングモータのパルス量などもホストPCとやり取りできるようになった。
AutoFeed は2種類の実装があるので、これも搭載しようと思っている。1つは相対値での座標、もう一つは絶対値での座標の与え方だ。現在は相対値になっている。パルスを与えたら、±いくらで移動するようになっている。絶対値にするには現在の座標をからの距離を算出してその差分だけ、移動するようにする。メニューにでも登録して、切り替えられるようにしておく。これはCNC化を行う際にも役立つ。

さて、話が前後するが、ファームウェアの拡張に伴い、またもXDATAの開始アドレスの変更が生じた。今度はXDATA=0x1400である。こうするとうまくいく。

OptimizeからminiFX2の完成品が到着した。まだ、ドライブ回路との接続基板を製作していないが、とりあえずつなげてソフトを流してみた。
何の問題もなく動作する。ただ、現在製作中のソフトは A, B, C ポートを利用している。ミニ基板には C ポートは付いていないので、Dポートに変更する予定。
これが出来れば、安価で高性能なCNCシステムが完成するのだ。

EZ-CNC まじかよ〜2

あれから色々とやってみた。
どうやら、#define の展開がうまくないようだ。あんまり、意味が無いけど #define に予め直値を入れておけば良いみたい。
そうじゃないと Warning が出て気持ち悪い。

一応、long も使える様になった。素晴らしい。これで座標はそのままパルス数で表すことが出来るようになった。
大きなフライスもこれでOK?

あとはAutoFeedとNCパーサだな。

2006年06月18日

まじかよ〜?

EZ-CNC でなんとか、移動距離の取り込みも出来るようになった。原因はインバッファの指定を1バイトしか設定していなかったので、残りの部分を取込めなかったのが原因だった。
現在使おうと検討しているステッピングモータは200パルスで一回転だ。1−2相励磁にすると倍の400ステップで一回転となる。現在のテーブルの幅が300mmであるので、300 x 400 = 120,000 ステップとなる。これだと、2^16 を超えてしまい16ビットで収まりきれなくなる。
当然、4バイトを基数にするわけだけど、SDCCは4バイトの数を扱えないみたい。32ビットに指定して、その変数にそれなりに大きい数を代入しようとすると Warning が出てしまう。
今時、信じられない。でも、USB2.0 とは言っても所詮制御しているのは 8bit マイコンなんだよね。とりあえず、10mm を単位にしてそれ以上の場合はカウンタに足したり引いたりして、つじつまを合わせることにする。
もう一歩だな。

2006年06月17日

EZ-CNC 2

詳しく調べたところ、FX2 チップの56ピンでもタイマは内蔵していそうだ。ただ、タイマ端子が外に出ているかどうかの違いだけのようだ。これで更に安価に小型にステッピングモータのコントローラが自作できる。早いところ、表示関係を実装しないと…。
#この辺がうまく行ってないんだよね…。

EZ-CNC(仮称)

MilingMachineInTheBox

当初は RoboShell を用いてフライス盤の CNC 化に挑戦しようと考えていたが、RoboShellの通信はリモコンなどの対人からの制御を想定したものであり、大量のデータを扱うような今回のような制御には不向きだった。(もちろん、万能ロボット開発環境を目指しているので、拡張していく予定ではあるが…。)
鬼吸い以外にまともなアプリケーションの無かった FX2 だが、今回の EZ-CNC で2つ目の実用的なアプリケーションを開発することが出来てきた。この EZ-CNC は開発結果を皆さんとシェアできると思うし、作りこんでいけばかなり実用的なアプリになりそうだ。
鬼吸いはインターネットに発表された成果物を自分の商品として売り出してしまう心無い人間により、詳細の公表を行うことが出来なかった。回路図とかソース(バイナリでも解析して)とか公表したら、2−3日後に「業界、最速の吸い上げシステムです。」とか言いながら、発表するんだろうなと思う。

RoboShell でうまくいかなかったのが、ステッピングモータのステップ数の大量取り込みの部分。こちらからの命令は問題なく処理できるけど、ステップ数の送りがうまくいかない。オープンループで動作しているステッピングモータにとって現在(まで)のパルス数の認識は非常に重要でこれがないときっちりした制御が出来なくなる。

FX2の使用だが、当初は 手持ちの AN-2131SC(EZ-USB) でやろうと考えていた。しかし、自作のフレームワークでのタイマ割込みがうまく動作しなかった。そこで、こちらの方のフレームワークを利用させてもらおうとしたが、RENUM でこけているようでうまく動作しなかった。ステッピングモータを3軸、回すだけならこの程度のコントローラで十分だと思う。そう、FX2の 56ピンタイプの石にはタイマが付いていないんだよね。1chでも良いから付けて欲しい。今回のような用途にはぴったりなのに…。多少、オーバースペックかなと思いながらも FX2 を使うことにした。以前に公表したフレームワークを用いてファームウェアは作成した。あまり深く考えずに必要と思われる機能を足しこんでいく。これからマイクロステッパなどに対応していけば、ピン数もファームウェアの格納サイズも適正な大きさになっていくと思う。同時にPC側のアプリも考えなければいけないが、これは先に開発した RoboShell-Stepper をそのまま通信部分をUSBに置き換えて使うことにした。

RoboShellStepper

トラブル
XDATA
最初のトラブルは Stepper の制御部を入れると、RENUMがうまくいかない。基本部分だけだともちろんうまくいく。
対策
フレームワークの XDATA のスタート開始番地を 0x1300 にした。CODEとDATAがかぶっていたようだ。問題なく動作する。

パターンがうまく出力しない
結局、パターンをうまく作りこめていなかった。1−2相励磁のパターンを再チェックしたところ動作するようになった。

で、これらの問題をクリアしてステッピングモータは回転を始めた。ジョイスティックからの入力に対して、確実に反応する。かなり、いい感じだ。ジョイスティックを大きく倒せば、ステッピングの発振周波数を高くなり高回転になる。メカ的に追従できなくて回転できなくなる脱調はよく知られた現象だが、周波数を順序良く上げて行くと京急(シーメンス)の車両のインバータ音のような可聴領域での音階が発生する。(WEBマスタのステッピングモータだけかもしれない。)聞いていて、非常に心地よい。

表示関係が未実装なので、この辺りを足しこんで行こうと思う。

2006年06月10日

技術者の夢

RoboShell の別プロジェクトとして行ってきた RoboShell Stepper が本流にインテグされた。RoboShell Stepper はその名のとおりステッピングモータを駆動させるためのサブシステムである。ステッピングモータのロボットのアプリケーションとしてはマイクロマウスが有名だ。小型なRoboShell は最適なシステムである。もう一つの応用例は工作機械である 旋盤やフライス盤の制御、いわゆる CNCだ。

コントローラが出来上がるにつれて、機体をどの様に製作するかが大きな問題になってきた。
とりあえず、何か道具が必要だよなとは漠然と考えてはいたのだった…。旋盤やフライス盤などの工作機械を調べている内に先の CNC が出てきたのだ。最初はフライス盤の CNC化キットでも購入しようと考えたが、ソフトや電子工学で身を立てているのに買うのはおかしいだろうと言う結論に至った。

内容を詳しく調べると、NCコードのパーサーとステッピングモータのドライブ回路だ。手馴れたEZ-USBでも使うかと考えたが、今はもっと手馴れた環境がある。そう、RoboShell だ。
RoboShell で作る、自分の機体を!!自分の機体を自分で作るロボ。技術者の夢に一歩近づいたと言うわけだ。

早速、ステッピングモータを動作させることにするわけだが、お金をかけるのは基本的に大嫌いなのだ。と言うわけでなるべく安く仕上げることにする。

RoboShellStepper

これがシステムの全景である。

ステッピングモータ
一番手前がステッピングモータ。現品.com で購入。仕様がほとんどわからないので、3軸あればいいのだが念のために4個買った。

RoboShellStepper

RoboShellCore
現在、開発中のロボット制御システム RoboShell 。32軸のサーボモータのコントロールに加えて、今回の拡張で3軸のステッピングモータも制御可能になった。


RoboShellStepper

ステッピングモータドライブ回路
今回製作したドライブ回路。部品はほとんど秋月電子通商で購入。予算は2,000円位だと思う。

ハードだけ作っても意味が無い。コンピュータものはソフトが一番大変なのだ。ソフトも制作する。NCコードのパーサが最終目標だが、とりあえず自動送りとジョイスティックによる制御が第一目標だ。

RoboShellStepper

何のためにあるか、よくわからない 7-SEG LED を模したパネルなど作りこんでみる。RoboShellCore の作りこみが甘いせいであろうか?うまくジョイスティックのデータを受け取れないことがあるが、最初はこんなもんだろう。徐々に熟成させていけばよいのだ。