Category Archives: AcceleStick

OpenStickへのアナログ入力

Yamaguchi Mini Maker Faireの出展中、フライトヨークペダルでアナログ値をどうやって入力しているのかを何度か聞かれたので、簡単に説明します。

OpenStickのアナログ入力はPIC18F2550マイコンに搭載されているA/D変換器を用いており、10本までアナログ入力端子を使用する事ができます。 このA/D変換器はアナログ入力端子の電圧を10bitの分解能(=1024分割)で数値に変換するのですが、この時の基準となるのがVREF+とVREF-で、VREF+の電圧値を最大値、VREF-を最小値とし、この間を1024で均等割りした電圧とアナログ入力端子の電圧が一致する値に変換します(なんか言葉で表しにくい)。
OpenStickではVREF+を5V、VREF-を0Vに設定しているので、アナログ入力端子が0Vの場合、変換結果は(誤差を無視すると)0となり、5Vならば1023、中間値では電圧に比例した数値となります。

結局、アナログ入力端子に0~5Vの電圧を入れてやれば良いという事になるので、フライトヨークでは(安直に)下図の様な可変抵抗で角度に応じた0~5Vを作り出しています。

実際の構造はこんな感じです↓

フライトヨークのX軸。 矢印の先にあるのが可変抵抗

フライトヨークY軸。直線運動を糸とプーリーで回転運動に変換している。

なお、PIC18F2550のマニュアルによるとアナログ端子に与える電圧は5KΩ以下のインピーダンスでなければ精度が悪くなると書かれているので、可変抵抗は5~10KΩ程度のものを使用しています(抵抗値をうんと下げると理屈の上では精度は向上するが、無駄に電流が流れるので程々にすべきでしょう)。
可変抵抗にはAカーブ、Bカーブ、Cカーブ等の種類があります。これは回転角に対する抵抗値の変化をプロットした場合のカーブを示すもので、この内ほぼ直線的に変化するBカーブを用います。

また、0V~5Vの電圧を入力できるなら可変抵抗以外でも同様に動作します。例えばAcceleStickでは加速度センサーの出力を下図の様にオペアンプで適度な電圧に変換してOpenStickに与えています。

AccelaStick Sensor回路

AcceleStick センサー部分の回路図。右端のP3,P4端子をPIC18F2550に接続している。

なお、上にも書きましたがPIC18F2550のA/D変換器の分解能は10bitです。しかしOpenStickでは下位2bitは捨て、8ビット分のデータとしてPC側に渡しています。
(ちなみに市販のジョイスティックも8bitでした。ヨークやペダルではあまり分解能は要らないと思ってこうしていますが、もし分解能をあげる用途があれば教えてください)

 

Yamaguchi Mini Maker Faire

8月10日~11日に山口情報芸術センターMiniMakerFaireが開催される。
西日本では初のMakerFaireだそうだ。
これまで東京や岐阜では開催されていたが、ここ熊本から観に行くには遠すぎる。 山口ならば、まあ近くではないが十分行ける距離である。

で、折角なので観るだけでなく出展してみようかと・・・。

OpenStickを中心に・・・

あとはこんなのとか・・・

FlightYork

フライトヨークとか・・・

こんなのとか・・・

ラダーペダル

ラダーペダルとか・・・

こんなのを・・・・

AcceraStick Right

AcceleStickとか・・・

持って行こうと思ってます。
他にも何か考えよう。。。

加速度センサージョイスティック とりあえず完成

加速度センサージョイスティックがとりあえず完成したので、早速フライトシミュレータで飛んでみた。 案外普通に操作できる。

AcceraStick and FlightSimulator

飛んでみた・・・案外普通に操縦できる。

重力加速度でエルロン、エレベータを操作する。スロットルはダイヤルで操作。
ボタン類はエレベータ・トリムに二つ、フラップ上下に二つ、ブレーキ、ビュー、ニーボード、ギア上下に各一つずつで計8個。それにハットスイッチ(POV)の十字キーが一つ。

AcceraStick left

左後ろから見たところ。3Dプリントがガタガタしている。・・・
左側面の丸いダイアルはスロットル。中心から軸をずらしてみた。

AcceraStick Right

右から見たところ。隙間があるのは設計ミス。

色々と不出来なところはある。でもOpenStickが実体になった第一号。Autodesk123Dの操作にも慣れることができた。

SkeinforgeとCuraと加速度センサージョイスティック

RepRapで出力する際、STL形式の3Dデータをスライサーと呼ばれるソフトウェアでGコードに変換した上でプリンターに送る。 これまでスライサーにはSkeinforgeを使っていたが、設定項目が多いので、いじっている間に訳がわからなくなる事が多かった。 他のソフトウェアとしてKISSliserというのも試したが、こちらは設定項目が少なくて調整できる部分が少なく感じた。そこ で今度はCuraというのを試してみた。 これはSkeinforgeをベースに開発されたそうで、設定項目が整理されており判りやすい。(全て私の主観ですが)

という事でCuraで色々試してみたのだが、どうも設定より多く樹脂が出ている様だ。そしてしばらく試行錯誤して気付いたのは、生成されたGコードの先頭に「M92 E865.888000」という行が入っていると言う事。  これは「フィラメントを1mm送るにはステッピングモータを865.888ステップ進める」という意味らしい。  この値はCuraのFile→Preferencesメニュー内のSteps per E欄に設定するのだが、本来Arduino側のファームウェアに設定してある値なので、何でここに設定箇所があるのかわからず、初期値のままにしていた。 ところがこのM92コマンドによりファームウェアの設定をホストから変更してしまうので値がいい加減だと送り量がずれてしまう。  ファームウェア側では実測に基づき471.5という値を設定しているので、865.888だと倍近いフィラメントを送っている事になる。  これが気づきにくかった原因の一つとして、システムを立ち上げてからGコードを実行する前にPrinterfaceの操作でフィラメントを送って実測しても、まだM92コマンドを実行していないので本来の送り量で動作して正常に見えてしまうのだ。そしてGコードを実行した時点で送り量が変わってしまう・・・。
というわけでSteps per Eに471.5を設定する事で正しい送り量となった。

 

加速度センサージョイスティックのプラスチック部品の大半をプリントした。上記の通り、試行錯誤しながらだったので、上手くプリントできた部分とガタガタしている部分がある。押しボタン周りはサポート材を除去する際にデコボコになってしまった。 あまり広い面積にサポートが付く様なモデルにはしない方が無難な様だ。

AcceraStick

加速度センサージョイスティック

加速度センサーを収めるケースを3Dプリント。久々にRepRapを動かすと、以前より積層痕が目立つ様になっている気がする。ベルトの緩みか?
また、サポート材の密度を高くしすぎた様で除去し辛い。スライサーをSkeinforge→KISSlicerに変更したのでパラメータの調整がまだ不十分なのかもしれない。

加速度センサーケース

出力しなおうそうかな・・・

 

そしてボタン類を実装する為の基板を切削する。 今までORIGINALMIND製基板切削刃物、「美濃昌典」の刃先90°仕様を使っていたが、今回「土佐昌典」の53°仕様を購入してみた。 基板の反りによる切削幅の増減を少しでも軽減したいのと、基板カットを楽にするのが目的。「土佐昌典」は横切りで基板をカットできるそうなのだ。
ところが、切削途中でZ軸がずれて刃物が空中を切り始める。何度か繰り返しても同じ様になるので、とりあえず穴あけを先に試す事にした。しかしこちらも穴を2~3個開けた時点でずれてくる。何度か試していると今度はZが深くなりすぎて基板をえぐりだしたので、慌てて非常停止ボタンを押した。どうやらスピンドル(ミニルーター)のチャックが滑っている様で、装着時より刃先が数mmも長めに出ていた。
チャックを外してみると軸の雄ねじ部分にうっすら錆がついていた。そこでCRCを注してティッシュで拭取ってみると、取りつける際の感触がスムーズになった。余計に滑るんではないかという心配もあったが、この状態で動作を再開するとZ軸はずれなくなった。 以前、刃を折った事があるが、この時もチャックが滑っていたのかもしれない。

ボタン類実装用基板

チャックに注油後再スタート

 

これが削り終えたところ。チャックがずれてえぐってしまった傷があるが、切削線は以前よりシャープになった(気がする)。

切削終了。

真ん中辺りにチャックがずれた為えぐってしまった傷がある。

加速度センサージョイスティック

先日から作り始めた加速度センサー式ジョイスティックの続き。
センサー部分を載せるプリント基板をCNCで作成し、OpenStickと接続して動作確認中。

AccelaStick Sensor

加速度センサー式ジョイスティックのセンサー基板を動作確認。

 

モジュール利用なので回路はシンプル。オペアンプで3.3倍に増幅している。
(モジュールは秋月電子KXM52-1050

AccelaStick Sensor回路

加速度ジョイスティックセンサー部分の回路図

 

センサー部分を納めるケースをAutodesk123Dで描いてるところ。
センサー部分は本体と軸受けで接続し、角度を調整できる様にするのだ。

AccelaStick Head case

加速度センサー部分を収納する。

RepRapでプリントしながら、このブログを更新中。

AccelaStickHead now printing

センサーを収める部分、RepRapでプリント中。

ウチの工作機械が総動員。これがやりたかったのだ。