2011年6月5日日曜日

【AVR】Modification of rotary encoders

ロータリ・エンコーダの改造
 DDS式VFOを作っている。 昔のVFOと同じフィーリングになるよう周波数はダイヤル・ノブで変えられるようにしたい。 それにはロータリ・エンコーダを使うことになる。

 写真は秋月電子通商で売っている中国製ロータリ・エンコーダだ。 クリック付き24ポジションで15度分解能のものだ。 軸の回転量に応じた数のパルスを出力するインクリメンタル型である。 初期位置の概念はなく、回転した/回転していると言う情報だけが取り出せる。 単に回転軸で接点を開閉する構造では回転方向がわからないので回転角に対し開閉位置をずらせた一対の接点が設けてある。

 操作フィーリングや、耐久性にも影響するので市販無線機ではずっと良い物が使われている。しかし、安価に何時でも手に入ると言えば写真の物に限られるようだ。 秋月電子通商では200円で購入できる。 少々チャチで壊れ易いが、何しろ安価なので我慢することにしよう。 本来はクリック付きの24ポジションである。それを接点の「変化検出式」で使い4倍の96パルス式として使う。 無線通信機にはもっとポジション数の多いものが良いのだが、4倍化することで取りあえず使い物にはなる。

 4倍の96パルス式で使うにはクリックを外す必要がある。 以下はその手順だ。 このあと、このエンコーダをDDS-VFOに使うにあたっては必須の作業になる。

分解
 4カ所でカシメてあるツメを起こすと簡単に分解できる。 シャフトに直結した接点円盤の部分と接点ブラシの部分に分解できる。 少々デリケートな部分なので円盤やブラシの部分には手を触れない方が良い。

 円盤には摩耗を防ぐ意味からグリースが塗布してあるようだ。 そのまま触れないようにしておこう。 なお、固定用のナットとワッシャを外した方が作業し易かった。 元に戻す関係から、必要以上にツメは起こさない方が良さそうだ。

クリック解除
 クリック感は接点円盤の周囲にある刻みと、写真の押しバネによって得ている。 従って、この押しバネが円盤の刻みに当たらないようしてやればクリックはなくなる。

 ドライバの先などでバネの出っ張り部分を押し込んでしまおう。 またクリック付きに戻すつもりがなければグッと奥まで押し込んで良い。 中途半端にクリックが残っても困るので良く押し込んでおくのをお薦めする。

 これだけで、クリックなしに改造できる。 クリックなしのモデルもあるだそうだが、改造は簡単なのでクリック付きの手持ちがあれば改造して使えば良い。


接点円盤
 内側の放射状にならぶ24個の電極が接点である。 反対側の接点バネの接触位置を僅かにずらせることで二相出力を得ているのだ。

 円周の周辺にある24個の歯車状のものがクリックを作る部分である。こちらは電気的な接点ではない。

 こちら側は観察のみで手を触れずにもとに戻しておこう。 改造が済んだら手順を逆に辿り、押さえていた4カ所のツメをカシメなおせば改造完了だ。 塗布されたグリースのためか回した感触は少し粘るようではあるが、スムースに回るようなら問題はない。 クリックの部分以外、内部構造に手をつけなければ失敗はないだろう。

4倍化の仕組み
 他のサイトに詳しく書かれているのでごく簡単にしておく。 いま必要なことは、どちらの方向へ回転したのかと言う情報とツマミの一回転で96段階のステップが得られるようにすることだ。

 ロジック回路的に行なおうとすると結構厄介かもしれない。 しかし、マイコン式なら容易だ。 まずは上段の右回転で説明してみよう。 いま「1」の位置にツマミがあったとしよう。 A相、B相ともに「L」である。 ツマミを回転し「2」の位置にくるとA相が「H」になり、B相は「L」のままだ。即ちLL→HLに変わったら右回転である。 おなじ「1」のポジションにあっても、左回転ならLL→LHに変化する。そのように変化したら左に回ったと考えれば良い。
 良く見ると、右回転の状態変化1→2、2→3、3→4、4→5の4種類と、同様に左回転の1→2、2→3、3→4、4→5は、それぞれユニークである。 即ち回転方向の判定は状態の前後比較により間違いなくできる。また状態変化がなければ回転軸は停止していると考えれば良い。

 マイコンを使った処理なら、前の状態を記憶し、その後の状態との比較で回転の有無や回転方向を簡単に検出できる。 このあたり、web上のサイトにもたくさん情報や事例があるので参照を。 私のプログラムでは「状態比較」の切っ掛けを一定間隔のタイマー割り込みで得ている。 もちろん、ほかの手法もあるだろう。

                  ー・・・ー

 DDS発振器は周波数データを送り込んでやれば動作する。 しかし、人間とのインターフェースは慣れ親しんだダイヤル操作が一番だ。 サムホイール・スイッチで周波数切換えするようでは実用的ではないだろう。 人の操作とDDS発振の仲立ちをするのがロータリ・エンコーダだ。

 ロータリ・エンコーダの読み込みに関しては随分前に試作済みであった。 概ね確立できた技術としてその当時のプログラムをそっくり移植して実験を進めていた。 しかし妙な飛び方をするうえ、旨く96ポジションにはならなかった。 ちょっと悩んでエンコーダのクリックを外さないとダメだったと言うのを思い出した次第。 さっそく改造して目出度く思い通りの動作にできた。 前のことをすっかり忘れてしまうほどの時間が経っていた。(笑) de JA9TTT/1

つづく)←リンク

10 件のコメント:

T.Takahashi JE6LVE/JP3AEL さんのコメント...

こんばんは

クリック付きのエンコーダーを使って、
ソフトで4倍すると1クリックで2パルス進むので???ってなりますね。
私も初めて使ったときしばらく悩みました。Hi

最近は同じタイプでクリック無しも入手できるようになりました。
せめて100カウントぐらいのエンコーダーが入手できれば良いのですが。

今、ステッピングモーターをオシロにつないで様子を見ています。
動かすと電圧は出るのですが、ゆっくり1クロック動かすと非常に電圧が低いのと、モーターを発電器として使うためにクリックをなくせないのとソフトで4倍速ができないのが難点です。

オペアンプで増幅して波形整形を行い、クリック感の少ない1パルスで進角の少ないモータを使えればエンコーダーの代わりにならないかなと思いつつ、ぐるぐる回して遊んでいます。Hi

JA6IRK@岩永 さんのコメント...

TTT/加藤さん、こんばんは。
少しずつ進んでいますね!
96パルスを読めるようにして、DDSを制御し、LCDに周波数を表示するようにした場合、LCDの処理に時間がかかり、エンコーダーの取りこぼしが多くなります。
BASCOMのLCD処理は余裕を見ているようなので、クロックをごまかしてやれば、LCD処理が早くなり、取りこぼしも少なくなります(笑)

TTT/hiro さんのコメント...

JE6LVE/3 高橋さん、こんばんは。

早速のコメント有難うございます。
> 1クリックで2パルス進むので???って・・・
なりますねえ。(笑) それで、何故だろうって悩んだ訳です。 昔の日記を読み返してクリックなしへの改造が必要だと気付いたような訳でした。(オソマツ)

> ゆっくり1クロック動かすと非常に電圧が低い・・・
変移速度が遅いと発電量が減るのは電磁誘導式である以上仕方がないんでしょうね。 増幅してうまく行くと良いですね。

> エンコーダーの代わりにならないかなと思いつつ・・
期待しています。 正式な高分解能エンコーダは数万円もしますので趣味用にはとても手を出せません。(笑)

TTT/hiro さんのコメント...

JN3XBY 岩永さん、こんばんは。

コメント有難うございます。
> 少しずつ進んでいますね!
お陰さまで、順調に行っております。hi

> 取りこぼしが多くなります。
BASCOM-AVRのLCDルーチンはデータの垂れ流し式なので,確実動作のためか非常に遅いですね。 なるべく表示の書き換えを行なわぬようにして逃げてます。取りあえずスムースに動作してくれています。

> クロックをごまかしてやれば・・・
たぶん、初期設定の時に実際よりクロック周波数を低くインプットすると言う意味でしょうね。なかなか面白いアイディアですね。(笑)

T.Takahashi JE6LVE/JP3AEL さんのコメント...

再び今晩は

BASCOMのLCD命令は簡単で非常に便利なのですが、
フラッシュの容量と速度が気になりますね。
4ビット並びのピンアサイン固定で、HD44780の書き込み完了フラグをきちんと見てくれる関数も用意してくれると嬉しいのですが。
どんなピンアサインでも対応できるのはすばらしいと思いますが、処理的にはかなり負荷がかかっているのではと思います。

JG6DFK さんのコメント...

おはようございます。

ロータリーエンコーダですが、ずいぶん前に思うところがあってコパルの光学式50パルス品を買いました。\3k超の高級品(?)ですが、なおも死蔵状態です。Hi. 機械式のもの(パナの日本製)も知人からたくさん頂戴していますが、こちらも30パルス品らしいという以外は詳しく調べていません。

これらを手にした当時はハードロジックも含めて使い方をいろいろ検討していましたが、すっかり忘却の彼方です。Hi Hi.

いつ必要になるかはわかりませんが、高分解能化の手法は今後の参考にさせていただきます。あと、PICやAVRなら状態変化の検出をレベル変化割り込みでやってもいいと思います。というより、以前はそれでやろうと考えていました。いずれにせよ、機械接点はチャタリングに配慮しないといけないので面倒です。

TTT/hiro さんのコメント...

JE6LVE/3 高橋さん、こんばんは。

再度のコメント有難うございます。
> LCD命令は簡単で非常に便利なのですが・・・
デバッグ用にも非常に重宝しますね。 動作の確実性を最優先にしているように思います。

> 完了フラグをきちんと見てくれる関数も・・・
そうしてくれるとFBですね。 今のLCDコマンドは表示器を除去しても何のエラーにもならないと言うメリットはあるのですが遅いのが問題ですから。 さりとてアセンブラで使う気にもなれないし・・。(笑)

> 処理的にはかなり負荷がかかっている・・・
自重度が高いのはVY-FBなのですが、どう考えても処理は重たいですよねえ。(^^;

TTT/hiro さんのコメント...

JG6DFK/1 児玉さん、こんばんは。

コメント有難うございます。
> \3k超の高級品(?)ですが、なおも死蔵状態です。Hi.
たくさんお持ちのようですね。勿体ないので、無理にでも何かに使いましょう。(笑)

> 検討していましたが、すっかり忘却の彼方です。
昔はハードウエアで使う考えもあったのですが、回路が面倒なので今ではすっかりマイコン式になびいてしまいます。

> 高分解能化の手法は今後の参考に・・・
常套手段らしく、webのあちこちに書いてありますね。 目新しくないと思いますが・・・。 レベル変化型で割り込みを掛ける処理方法もありますね。その方がオーソドックスな考え方かも。 たしか、LVEさんが試していたと思います。 旨くご活用を。

JO1LZX 河内 さんのコメント...

加藤さん、お早う御座います。
久しぶりの雨模様ですね。
皆さん、如何お過ごしでしょうか?

さて、加藤さんが現在改造製作中の
ロータリエンコーダーの使い向きは
もしかしてお持ちの無線機でディジ
スイッチ制御の周波数設定用ですか?
出来上がりを期待しています。

さて当方 相変わらず古い無線機の
改造に時間を費やしており、昨今は
例のR-390Aを触っています。
昨日まではプロ検の改造付加でした。
電源を大改造してTTT方式に変更し
合わせてAC100Vで運用可能にしました。
近況報告でした。

TTT/hiro さんのコメント...

JO1LZX 河内さん、おはようございます。 昨晩は随分降りましたが、やっと上がりましたね。 現在曇りです。

コメント有難うございます。
> 使い向きは・・・ディジスイッチ制御の・・・
これは、DDSを使ったデジタルVFOの製作に使うものです。もちろん同じように使えますので活用可能ですね。

> R-390Aを触って・・・プロ検の改造付加・・・
FBですね。R-390Aはそのままでも十分にSSB受信ができますが検波を変えるともっと良くなるだろうと思っています。

> 電源を大改造してTTT方式に変更し・・・
AC115Vが標準でしたね。シャックには200V→100/115Vの変換ができる約1kVAの絶縁トランスがあって米国製の機器にはそれを経由して供給しています。日本で使うには使用機器を100V用に改造した方が便利でしょうね。

お元気にお楽しみのようで何よりです。