2001/03/18 【アクチュエータ編TOPに戻る】
今回、脚部の関節を動かすために田宮模型のウォームギヤボックスを使います。ウォームギヤボックスは、放っておくといつまででも回転を続けます。でも、関節は動いてもせいぜい180°程度で、半回転までです。また、今関節がどれくらいの角度で曲がっている状態なのかをCPUが知っていないと、姿勢を制御することは到底無理です。
ということで、ウォームギヤボックスを半回転以上回さず、今どれくらいの回転角度であるのか、を検出するためのセンサーを付けて見たいと思います。
6−1.回転角度センサー
回転角度センサーというので、ものすごい部品を想像する方がいるかも知れませんが、大したことはありません。ただの可変抵抗器(ボリューム)です。ポテンショメータなどとも言います。ツマミが付いた可変抵抗器は、大体270°くらいの角度で自由に回り、Bカーブ特性のものであれば、角度に比例して抵抗値が変化します。なので、抵抗値を電圧という形で取り出して、A/D変換(アナログ/デジタル変換)してCPUに取り込めば、ボリュームの回転角度が、数値として認識できるようになります。
少し面倒な話をしましたが、AKI-H8/3048F CPUボードには、A/D変換機能も付いていて、その辺を簡単に処理することができるので、全然心配ありません。
![]() |
![]() |
今回使うのは、たまたま横浜石川町のエジソンプラザ内で発見したボリュームです。型名は分かりませんが、ALPS製の10kΩです。動きが滑らかで、遊びが無く、基板取り付けタイプで、本体が12mm x 10mm程度の表面積と小ぶりです。シャフトが長いのですが、必要に応じて後で切ってしまいましょう。 |
回路的にはシンプルです。ツマミを左に回し切ると、1-2端子間がショートし、右に回し切ると2-3端子間がショートします。中間位置では、それに比例した抵抗値となります。
抵抗値は10kΩにしてありますが、妥当なところだと思います。抵抗値をあまり小さくすると流れる電流が多くなって、将来バッテリーで動かそうとした場合、消耗が激しくなります。また、抵抗値をあまり大きくしすぎると流れる電流が小さくなって、外からのノイズを拾いやすくなります。本当はA/D変換の特性も影響しますが、1kΩ〜10kΩくらいにしておきましょうか。
6−2.ウォームギヤボックスに取り付けてみる
これを、どうやってウォームギヤボックスに取り付けるかが問題ですが、こんな感じでやってみました。
![]() |
先ず、長くて邪魔なシャフトを、必要な長さに切ります。万力で締め上げて、糸ノコギリで切ります。どれくらいが必要な長さなのかは、仕上がりをみて頂けると分かると思いますが、大体6mm程度を残しています。 |
![]() |
次は、プラスチックのギヤを持ってきて、加工します。ギヤは大きな26枚歯と小さな10枚歯が一緒になったタイプを使います。模型屋さんで売ってると思いますが、私は東急ハンズで買いました。 |
![]() |
10枚歯の部分を切り落とし、更にリーマーで穴を広げます。この穴には、さっきのボリュームのシャフトを通すため、少しきつめにピッタリ合うように、慎重に広げていきます。 |
![]() |
ボリュームと合わせるとこんな感じです。ボリュームのシャフトに26枚歯のギヤが付いた形となります。 |
![]() |
あらかじめ手頃な大きさに切っておいたユニバーサル基板に、ギヤ付きのボリュームと3pinコネクタを載せます。ギヤはしっかりとシャフトに固定するため、ホットボンドで固めてあります。 |
![]() |
基板の裏はこんな調子の配線にしてあります。ボリュームの3ピンを、ただコネクタに出しただけです。 |
![]() |
ウォームギヤボックスの、シャフトを駆動させる最終のギヤ(緑)と、ボリュームの26枚歯ギヤがうかくかみ合うように固定します。固定にはホットボンドを使っています。 |
![]() |
これが、ウォームギヤボックスに取り付けてある全体像です。 |
![]() |
裏から見るとこんな感じ。基板をホットボンドで無理やり固定している様子が分かりますか?あまり強力に(例えばネジ止め等)基板を固定してしまうと、ボリュームの回転角度を超えてギヤボックスが回転してしまった時、お互いを破損してしまう危険があるので、ホットボンドで固定して少し遊びを作っています。 |
6−2.最適なギヤ比
先ほど、ボリュームに取り付けるギヤを、唐突に26枚歯としていました。どうして26枚歯にしたのでしょうか。
ウォームギヤボックスのシャフトを駆動する最終段のギヤ(緑)は、40枚歯です。これに、今回ボリュームに取り付けたギヤ26枚歯を合わせることになります。
![]() |
ウォームギヤボックスのシャフトを駆動する最終段のギヤ(緑)は、40枚歯です。これに、今回ボリュームに取り付けたギヤ26枚歯を合わせることになります。
|
ボリュームの最大回転範囲を約270°とするなら、26枚歯ギヤの270°分は26x(270/360)=19.5と、約20枚歯分に相当します。これが40枚歯のギヤに合わさる訳ですから、40枚歯のギヤが20枚歯分の180°回転すると、ちょうどボリュームが270°回転することになります。つまり、ロボットの関節が180°回転する範囲で、最も効率よく回転角度を検出できるギヤ比であることになります。
なので、ロボットの関節の可動範囲に合わせて、各ボリューム用のギヤの大きさを選んであげるのが、最も精度の高い角度検出ができることになります。
しかし実際は、いちいち関節ごとに設計を変えるのも面倒ですし、同じギヤ比であれば、同じパラメータでソフトウエア上の管理ができるため、全ての関節でこのギヤ比を採用することにします。
6−3.これは失敗例
![]() |
実は、最初は角度検出にボリュームではなく、4bitのロータリースイッチを使って実験していました。これは、A/D変換を使わなくても、直接回転角度に応じて4bit(16段階)のデータを出力してくれるため、ソフトウエア的にも楽かなあと思ってのことでした。 |
ロータリースイッチの4bit出力を直接PIOのポートとから取り込み、ギヤボックスの回転角度の検出は成功しました。しかしそのうち、スイッチ(データ)が切り替わるタイミングで、ビットの欠落が起こるようになり、突然とんでもないデータがPIOに送られるようになってきました。この手のロータリスイッチは、普通そんなに頻繁に回転させるような用途に使用しないため、内部接点の磨耗などで、切り替わる瞬間の接点不良が発生するようになったのでしょう。
回転角度を検出している途中で、突然不連続なデータが飛び込んできてはどうしようもないため、ロータリスイッチの使用はあきらめました。
A/D変換が手軽に使えるので、やはりボリュームを使って角度検出するのが簡単で間違いないでしょう。実際の角度検出と、それによるギヤボックスの制御は、ソフトウエア編 104.A/D変換機能を使うでご紹介します。