Suzulan > しろうと無線 > ハンドメイド > ローテータコントローラ >

ローテータコントローラ(方位角度検出部)
< Rotator Controller Direction Detecter >


現在アンテナがどの方向を向いているかを検出するローテータコントローラ(方位角度検出部)基板(以降、方位角度検出部基板と記します。)の製作です。なぜ現在のアンテナ方位角度を知る必要があるのでしょうか。理由は2つあります。第一点はプリセット動作を実現させるためです。プリセット動作とはあらかじめ目的の方位角度を設定しておいてからアンテナの回転をスタートさせ、設定した角度に到達すると回転を自動停止させる機能のことです。プログラムは回転をスタートさせた直後から刻々と変化する方位角度を常に監視し、目的の方位角度になったかどうかを検出しなければなりません。第二点は現在の方位角度から目的の方位角度にアンテナを回転させる場合、右回転をさせた方がいいのか左回転をさせた方がいいのかプログラムで判定しなければならないためです。以上の動作を実現させるため方位角度の検出は必須となります。本基板とパソコン間とのインターフェースはシリアルインターフェースアダプタのIN端子に接続します。回転制御は既にローテータコントローラ(回転制御部)基板(以降、回転制御部基板と記します。)で行いますからこの方位角度検出部基板製作によりパソコンがらG-1000DXAローテータ全ての機能の制御が可能となります。製作基板の物理的な位置は下図のとおりです。機能としてはマニュアルコントローラから出力されている現在の方位角度を示すアナログ電圧を8Bitのパラレルデータに変換し、シリアルインターフェースアダプタに出力するのみです。パソコンは必要に応じてシリアルインターフェースアダプタにアクセスし、このデータを読み取り、現在の方位角度を算出します。


製作した方位角度検出部基板です。実は方位角度を検出するのにどのような回路にするかどえらい悩みました。機能の詳細は以降に説明するとして、要は方位角度を示す0〜4.5Vのアナログ電圧を8Bitのパラレルデータに変換するA/Dコンバータを作成すればOKなのですが、言うは易し行うは難たしで、どのような回路にすればこれが実現できるのかがなかなか分からず雑誌やHPを調べまくりました。その結果A/D変換専用ICがあることが分かりましたが、これが結構高価で、使用方法も素人の筆者には手に余りそうで完動させる自信がありませんでした。そんな折、以前購入していたトランジスタ技術(2005年4月号)に付録としてついてきたR8C/15というマイコンがA/Dコンバータ機能を持っていることを知りました。マイコンですから動かすソフトウェアも必要なわけですが、アセンブラやC言語まで付属しており、おまけに統合開発環境ツールまでついています。同5月号にはA/Dコンバータとして動作させるセッティング方法やサンプルプログラムも付属していて、いたれりつくせりです。迷わずこのマイコンを使用することに決定しました。写真の基板中央に鎮座しているのがR8C/15マイコンです。付属のA/Dコンバータ用サンプルプログラム(C言語)に、方位角度データをポートに取り出すためのコードを追加して動作させます。使用ICは、このマイコンとバッファの2個のみです。写真はスライドスイッチやLED・圧電ブザーなどゴチャゴチャ付いていますが、R8C/15の様々な機能が実験できるようにトランジスタ技術に掲載されている回路をすべて組み込んだためです。R8C/15を方位角度検出機能の動作のみに限定した場合、スイッチやLEDなどはほとんど必要なくなり、回路はかなりコンパクトになります。(後述回路図参照)


回路の動作説明の前にYAESU製 G-1000DXAローテータの仕様を理解しておく必要があります。今回製作した方位角度検出部基板を接続するために、G-1000DXAローテータ側の改造は一切必要ありません。理由は、G-1000DXAローテータに付属のマニュアルコントローラ背面には、外部コントロール端子が最初から装備されているからです。端子番号・機能および動作内容も公開されています。今回製作した方位角度検出部基板はこの端子のうちCのローテータ回転角度検出端子と接続します。@〜B端子は回転制御部基板に接続されます。G-1000DXAローテータのマニュアルで公開されている内容は以下のとおりです。

外部コントロール(G-1000DXAマニュアルより)

・コントローラ背面にある外部コントロール端子を使用することにより、パソコンなどを利用して外部からローターを操作することができます。
・ローター回転角度検出端子Cの出力電圧は、コントローラ背面にあるOUT VOL ADJにて出力電圧を調整することができます。
・ローターが450°回転したときに出力する電圧を4.5Vに調整すると、0°〜450°の回転を、約0V〜4.5Vに変換することができます。なお、ボリュームの抵抗値やケーブルの抵抗値が原因で、正確に0Vからスタートすることが出来ない場合があります。


外部コントロール端子 端子番号 機 能 内   容
    @  右回転制御端子  D端子と接続すると、ローターが右に回転します。
A  左回転制御端子  D端子と接続すると、ローターが左に回転します。
B  回転速度制御端子  0V〜5Vの範囲で電圧を加えると、電圧値と比例して スピードが変化します。
C  ローテータ回転角度検出端子  0°〜450°回転を、約0V〜(2V〜4.5V)の電圧値に 変換されます。
D  アース端子  
E  NC  


筆者補足:上記内容で 450°との表記がありますが、G-1000DXAローテータは 360°(1回転)を通り越して450°まで回転するオーバーラップ機能を有しています。製作した方位角度検出部基板とG-1000DXAマニュアルコントローラの端子間の接続を下図に示します。方位角度検出部への接続リードは回転制御部基板のコネクタCDを経由させます。理由はマニュアルコントローラとの接続をケーブル1本にまとめるためです。

詳細説明の前に、マニュアルコントローラから送られてくる方位角度のアナログ電圧データが最終的にどのようにしてパソコンに認識されるのかを下図方位角度検出の仕組みに示します。マニュアルコントローラからは図中グラフにあるように方位角度に比例した0〜4.5Vの直流アナログ電圧が常に提示されています。パソコンは直接アナログ電圧は扱えませんので、どこかでこの電圧をデジタル信号に変換しなければなりません。これを担うのが今回製作したR8C/15マイコンによる方位角度検出部です。R8C/15マイコンは、プログラムによって、提示されているアナログ電圧を8Bitパラレルのデジタル信号に変換し、シリアルインターフェースアダプタに出力します。プログラムは無限ループでRUNしており、アナログ電圧の変化の有無にかかわらず高速度でA/D変換を繰り返し、シリアルインターフェースアダプタに出力し続けます。一方、シリアルインターフェースアダプタは8Bitパラレルデータを常に受け入れてはいますが、能動的にパソコンに送信するわけではありません。このデータは必要に応じてパソコン側からシリアルインターフェースアダプタにアクセスし、8Bitパラレルデータを1ビットずつシリアルデータに変換しながら取り込みます。パソコンは取り込んだ8Bitデータを計算により実際の方位角度を算出します。

方位角度検出基板の回路動作
方位角度検出基板の回路図(R8C/15機能評価版とコントローラ特化版)を示します。機能評価版は部品が多く回路も複雑になりますが、トランジスタ技術(2005年4月号および5月号)掲載のR8C/15マイコンの様々な機能が実験できるようになります。一方、特化版は部品が少なくコンパクトな回路になりますが方位角度検出機能(A./D変換)に限定された動作のみ実現されます。筆者は機能評価版を製作しましたが、どちらの回路を製作しても同性能の方位角度検出機能は実現できます。以降の説明ではどちらの回路図を参照されてもかまいませんが特化版のほうがシンプルなので理解し易いと思います。必要に応じて、シリアルインターフェースアダプタも合わせて参照してください。

◎方位角度電圧とA/D変換値
ローターを回転させると、マニュアルコントローラのローテータ回転角度検出端子には方位角度に比例したアナログ電圧が出力されます。出力される電圧は、方位角度が 0度で0V、方位角度が 450度で 4.5Vです。一方R8C/15マイコンのアナログ入力電圧規格は0V〜5Vであり、電圧に比例して直線的に、&H00〜&HFFの8Bitパラレルデータに変換されます。実際には、マニュアルコントローラから与えられるアナログ電圧範囲は0V〜4.5Vなので、&H00〜&HE6の変換範囲として動作します。計算上、1Bit当たりの方位角度分解能は1.96度(約2度)となります。なお、R8C/15マイコンのA/D変換は10Bitモードもあります。この場合1Bit当たりの方位角度分解能は、0.49度(約0.5度)になりますが、本基板およびシリアルインターフェースアダプタ基板の回路は8Bit仕様なので8Bitモードで使用します。1Bit当たりの方位角度分解能は落ちますが実用上ほとんど無視できる範囲です。


R8C/15によるA/D変換
方位角度検出基板はマニュアルコントローラからのアナログ電圧を受け、8BitパラレルデジタルデータにA/D変換し、シリアルインターフェースアダプタに送ります。A/D変換はR8C/15マイコンのソフトウェアによる無限ループルーチンにより実行されます。つまり、この基板は、シリアルインターフェースアダプタに対し方位角度を8Bitパラレルデータとして、ただひたすら出力し続けるのです。このデータがどのタイミングで使われるかはまったく関知しません。データは必要に応じてパソコン側からシリアルインターフェースアダプタにアクセスし、取り出します。 R8C/15マイコンには、C言語で書かれたA/D変換の付属サンプルプログラムを使用します。(サンプルプログラムの使用方法など詳細についてはトランジスタ技術誌を参照してください。) 回路図を見てください。方位角度を表すマニュアルコントローラからのアナログ電圧はDIR端子に与えられています。この電圧はR9(330Ω)を通してR8C/15マイコンのP1-0ポートに接続されています。P1-0ポートはアナログ電圧入力端子としてプログラムで規定されています。プログラムはこのポートの電圧をサンプリングし、8BitパラレルデータにA/D変換、結果をADレジスタ(R8C/15マイコン内部にあるA/D変換結果を格納する専用レジスタ)に格納します。データを格納後、再びP1-0ポートのアナログ電圧をサンプリングA/D変換し、結果をADレジスタに上塗り格納します。付属のサンプルプログラムはこの動作を無限ループで実行します。サンプルプログラムの機能はここまでです。このままではいつまでたっても変換結果のデータをR8C/15マイコンの外部に取り出すことはできません。そこで本基板ではこのデータを外部に取り出すための回路設計がなされており、さらにサンプルプログラムに一部コードを追加してADレジスタに格納された8BitパラレルデータをR8C/15マイコンのポートから外部に出力させるようにしてあります。

◎データの外部への出力
R8C/15マイコンのADレジスタに格納されたデータの外部への出力方法はいろいろ考えられますが、本基板ではR8C/15マイコンが持つP1およびP3レジスタにADレジスタの内容を設定し、ポートに出力するようにしてあります。出力データは8Bitですから一見P1レジスタ(P1-0〜P1-7ポート)のみで実現できそうにみえますが、前述したようにP1-0ポートはアナログ電圧入力用として占有されているため使用できません。このため出力用として使用できるポートは残りのP1-1〜P1-7ポートの7Bitになります。そこでADレジスタの"0"Bit目のデータはP3レジスタ(P3-4)ポート経由で出力させるようにソフトウェアで処理します。P3-4ポートはハードウェア配線により、バッファ(74HC245)のB1端子→A1端子→OUT0コネクタに接続され、結果的にシリアルインターフェースアダプタ側ではADレジスタの"0"Bit目のデータとして認識されます。P1-1〜P1-7ポート出力のデータはそのままバッファ(74HC245)のB2〜B8端子→A2〜A8端子→OUT1〜OUT7コネクタに接続されシリアルインターフェースアダプタ側ではADレジスタの"1"Bit〜"7"Bit目のデータとして認識されます。

◎デバッグモードと自律走行モード(SW1)
R8C/15マイコンの動作にはデバッグモードと自律走行モードがあります。回路図のSW1でモード切替を行い、BOOT側にするとデバッグモード、RUN側にすると自律走行モードになります。デバッグモードではデバッガ/書き込み用シリアル通信ポートとパソコンのCOMポートを接続し、C言語およびアセンブラによるR8C/15マイコンのプログラムがパソコンからデバッグが可能となります。デバッグはHEWと呼ばれる付属の統合開発環境ツールを使用し、プログラムエディット、ビルド、ロードおよび実行、ソフトウェアリセットなどほとんどの操作がパソコンから可能となります。上記のソースコードもHEWでデバッギングし走行試験を実施しています。プログラムが完成したらSW1をRUN側にし自律走行モードにします。自律走行モードにすると、デバッガ/書き込み用シリアル通信ポートとパソコンのCOMポートを接続していたケーブルをはずしても、R8C/15マイコンは単独で自律走行(RUN)します。R8C/15マイコンはPOR(パワーオンリセット)機能を持っていますので、本基板の電源をONにするだけでプログラムが起動されA/D変換が開始されます。

◎RESETスイッチ(SW2)
R8C/15マイコンのCPUおよびプログラムを初期化実行したい時にRESETスイッチ(SW2)を押します。RESETスイッチはノンロックスイッチを使用します。R8C/15マイコンのRESET端子は通常、R2で5Vプルアップされハイレベルになっています。スイッチを押すとローレベル、スイッチを離すとハイレベルになり、同時にCPUが初期化されプログラムは先頭から実行されます。


製作基板の部品配置を以下に示します。



◎ このコーナーで公開した自作品は、筆者の単なる個人的な趣味で製作したものです。
本機製作により発生したいかなる不具合もしくは損害について、筆者が責任を負うものではありません。


◎本機の製作にあたり、JA8JCR(松田OM)から技術的な支援をいただきました。TNX .

◎引用文献:VBと製作で学ぶ初めてのパソコン応用工作 ( CQ出版社 )
:トランジスタ技術(2005年4月号・5月号) ( CQ出版社 )
   :G-1000DXA ローテータマニュアル(八重洲無線株式会社)