Monthly Archives: August 2006
ソフトの改良
夏休みの工作
久々にこんなことをやってみた。
元ネタはこちらの方なんだけど、さすがにマイクは必要なかったので今回はハブと変換基板のみ。
これ、かなり面白い。色々なところに応用できそうだ。ロボのコントローラも出来そうだし、CNCはこれがあれば手元で何でも出来る。
もうちょいだな
XJ9512のテーブル駆動はジャンクのステッピングモータでは、ちと荷が重いようだ。先日も駆動IC内のトランジスタが焼けてしまって煙が出てきた。これはけっこう焦るね。
Z軸で使っている日本サーボの大きめのステッピングモータを使うことにした。X軸は現在のハンドルが使えるので、片軸。Y軸はハンドルの増設も考えて両軸とした。24Vを印加しているが、ICの温度も40℃いかないし、モータ本体もほんのり温かくなる程度だ。
ソフトもNK氏のアドバイスを頂いて、かなり手を入れた(と言うか、TeamKNOxがフライスの知識、無さ過ぎ?)。一応、丸も丸らしく描けるようになってきた。バックラッシュの補正方法をもう少し、煮詰めなければいけないのと、メカの精度ももう少し上げたい。CNC化の目途は立ったので、自分自身でパーツを作りながら精度を上げていこうと思う。
俺っちの芸風
先日、技術系の某誌の編集長と色々と話をした。改造したフライス盤を二人で囲んでの話である。元々はロボの機体作りの為に導入を決めたフライス盤であるが、自分自身のユースケースを考えてみると他にも色々あることがわかった。
ボール盤として使うのがやはり、多い。それもほんのちょっと賢さが要求されるような使い方だ。CNCの応用として、簡単な図形の穴あけをその場で出来るようなフライス盤を目指すことにする。そう、DB9とかDB25のコネクタ形状をその場で穴あけ出来るような感じだ。ケースをきれいに加工できると完成度がそれだけ高くなるもんね。
バックラッシュ対策
CNCではバックラッシュ対策が必要になる。色々なページを拝見すると、先達の苦労がわかる。小生も最初は大した事ないと考えていたが、実際にやってみるとかなり苦労した。メカ的、ソフト的な工夫が必要になった。メカ的な点はガタを極力、無くすと言う事。ソフト的には現在がモータの方向の変化時なのかどうかを見極める必要がある。
UIを少し工夫してどっちの方向に向かっているかを一目でわかるようにした。具体的には+方向に進んでいる時は緑色で現在位置を表示して、シアンだと-方向とした。ほんの少しの工夫だが、だいぶ使いやすくなった。UIは継続的に改良していく。
少しずつ精度が上がり始めてきた。
CNCを実際に使う上で、調整するパラメータが何箇所かある。
これをうまく調整しないと全然、うまくいかない。
先達が皆、通ってきた道、円を描かせることに挑戦した。
まだ、調整が必要だが、一応それっぽいのを描きはじめた。
今回はブレゼンハムのアルゴリズムなので、X,Yを交互にOn/Offしている。モータの停止・起動が繰り返される。連続回転ではないので、その度にイナーシャがかかり脱調しやすい。実際、ここまで来るのにかなり、調整が必要だった。具体的には速度は少し落として、解像度辺りの分解能は8に設定した。
実は上の円の連続描画はバグで本当は一つだけ描かせるはずなのに、いくつも描いてしまっている。この辺りも徐々に追い込んで行こうと思う。バックラッシュが顕在化している領域もあるので、これも改良していく。
少しずつ
目に付いた不具合点は修正した。バックラッシュの補正は調子が良いと、±0になるが大体、0.05mm位で収まるようになってきた。この辺は少しずつ、追い込んでいきたい。
ioio さんが EZ-USB で同じく CNCを構築しているが、TeamKNOx のやり方とはだいぶ違う。ioio さんのは従来と同じく、PCからパルスを発生させる。進化した点はパラレルポートではなく、USBチップのポートを介してと言うことだろう。タイマはPCのを使う。
TeamKNOxはタイマはUSBチップのモノを使っている。細かいI/O制御はローカルにやらせるのが鉄則だからだ。
修正箇所
1. Z軸の動作のゲームコントローラのボタンの入れ替え
2. バカヨケをZ軸の動作にも適用する
3. バックラッシュの補正量の追加
4. 3の設定用ダイアログの追加
とりあえずはこんな感じ。順次機能追加と修正。
ブレゼンハムを用いてCNCを実現
X-Y平面に直線を引く場合、XかYが0の場合は簡単である。そのまま、線を引いちゃえばいい。ところが、X,Yが0以外の場合はちょっと面倒くさい。
X,Yは異なる距離なんだけど、到達時間は同じにしなければならない。この場合はX,Yの比を求めて、それを移動速度に乗じることにより、到達時間を同じにする。
タイマで設定できる範囲が十分にあれば、問題ない。それぞれの乗数をタイマの設定値にぶつければよい。問題はタイマの設定範囲が十分に無い場合だ。
今回はブレゼンハムを用いた。この方法のよい点はX,Yが順番に設定されるので、同時に電流を流すことが無い。つまり、電源に負担をかけないですむ。