|
ここから、C99UsbAnVer1.0.3.zip がダウンロードできます。 インストールおよび動作を保証するものではありません。 ダウンロード後は免責条項を確認の上、自己責任でご試用願います。
C99UsbAn (Ver1.0.3)
プログラムを起動すると左のようなフォームが開きます。 C99UsbAnはUSB−Anと呼ばれる USBに接続してパソコンからデジタル入出力やアナログ入力ができるインターフェースボードを使って、ローテータを自動制御してアンテナを衛星の方向へ向けるためのプログラムです。 フォームには、CALSAT99で選択されている衛星の方位(Az)と仰角(El)をDDE(Deg)で数値表示し、同心円のグラフに赤い点でプロットします。 同心円のグラフは衛星が見える方向を N,E,S,W の方位と一番外側の円が仰角0度、中心が天頂方向の仰角90度として表示します。 実際のローテータ(アンテナ)が向いている方向は、ローテータが出力する電圧をUSB−AnのA/Dコンバータ機能を使って数値として取り込みます。 取り込まれた情報はUSB-An(V)で数値を表示し、C99UsbAn.INIに設定されている、方位0,360度、仰角0, 180度の時のローテータの電圧情報を基に角度情報に変換し、方位軸と仰角軸として表示します。 4つの矢印は、ローテータを上下左右に動かすためのボタンで、手動ボタンが点滅しているときに有効です。 自動ボタンを押すとCALSAT99から取り込んだ衛星の方位と仰角の方向にローテータを自動制御し、制御している矢印ボタンが点滅します。 自動制御中は 水色の扇型の表示が現れ、実際のアンテナの方位と仰角を表示し、扇の先端が衛星の位置を示す赤い点を追いかけるように制御・表示します。 扇の開き具合は制御誤差の許容量で、低軌道の衛星では初期設定の5度で十分な精度で追尾できます。 自動ボタンには自動Nと自動Fの2つのボタンがあります。 自動Nボタンでは仰角ローテータの0度〜90度の範囲を使って衛星を追いかけます。 自動Fボタンではフリップモードと呼ばれる動作で仰角ローテータの90度〜180度の範囲を使って衛星を追いかけます。 衛星が方位ローテータの回転起点を横切る場合にはフリップモードを利用すると連続した追尾を行うことができます。 衛星の仰角が0度以下になるとローテータの制御は停止します。 1,2,3のボタンは、あらかじめC99UsbAn.INIに設定された方向にアンテナを向けるためのボタンです。 アンテナが設定された方向に向くとローテータの制御は停止します。
USB-Anとローテータの接続インターフェースの例
USB-An基板の右下の自由に使える場所にソケットを追加しました。 J2の0,1,2の3ビットを使ってローテータの回転制御を行います。 方位と仰角の電圧はJ4の0,1に接続します。 また、J3にジャンパー接続を追加して、USB-Anの動作モードをアナログ8ビット2CH入力/3ビットデジタル出力として動作するようにしています。
USB-Anからの3ビットのデジタル出力を受けてローテータの左右回転停止、上下回転停止のON/OFF信号に変換する基板です。 BCDコードを10本の信号線に変換するSN74LS42、信号を保持するためのRSフリップフロップSN742LS79A、4組のオープンコレクタ出力のためのトランジスタ2SC1815、ローテータからの角度電圧のためのLPFを構成する抵抗とコンデンサなどが実装されています。
コネクタで接続した状態です。 動作に必要な電力はUSBから供給され、基板間を接続するコネクタから自作の基板にも供給することが出来るので、別途電源 を供給する必要はありません。
ロジックICの回路を組もうと適当なICの型番を見つけても実際にパーツを入手することは難しくなっているのが現状のようです。 SN74LS42やSN74LS279Aも例外ではなく、今後さらに入手は困難になるように思われます。 一方、PIC−ICは秋葉原などでは容易に入手することが出来て、プログラムで機能を記述することで、ロジックICを組み合わせた機能を実現 することが出来ます。 このような現状からUSB-Anから出力されるローテータの制御コードを右左上下の回転制御信号に変換するロジックをPIC16F84Aを使って実現してみました。 変換のために必要な部品は、PIC16F84Aとセラロック(10MHz)の2つです。 PIC16F84Aにはデジタル入出力端子が今回の制御には十分な数があって、ポートAを入力に、ポートBを出力に使っています。 ポートBは8ビットあるため、右左上下の基本的な制御の4ビットと負論理の4ビットを出力するようにプログラミングしました。 制御の対象によって使い分けたり、制御の状態を表示するために利用することが出来ます。 ロジックICを使った回路では、頻度はかなり少ないのですがローテータ制御信号を保持するRS−FFの信号が誤った状態で2秒間保持される現象を確認していましたが、PIC16F84Aでは内部に書き込んだプログラムによって監視、変換、出力しているため、改善されました。
ロジックICを使った場合には少なくても2個のICが必要でしたが、PIC16F84Aで同じ機能を実現しています。 負論理の出力にはLEDを接続してモニタ機能に利用しました。 正論理出力はトランジスタ(2SC1815)のオープンコレクタ出力に使っています。 インターフェースの基板サイズも小さめになっています。 もちろん、先に示したインターフェースの例で実用的にローテータを制御することが出来ます。
このプログラムでは、USB−Anを制御するための設定や追尾の精度を高めるためにC99UsbAn.INIを変更・設定することができます。 C99UsbAn.INIの初期設定は次のとおりです。
[ANTENNA] 順番に、C99UsbAnの設定の意味と設定の方法を説明します。 RotatorKiten = N 方位(Az)のローテータを左に回し切った時に、アンテナの指向性がどちらを向いているかを設定する値です。 C99UsbAnではこのアンテナの向きを北、東、南、西の4方向のいずれかに設定できます。 上の設定例は北にしたときのもので、N,E,S,W のうちの1文字を設定します。 アンテナの指向性を設定した方位へ正確に設定してください。
RotatorAzFit = NO ローテータのポテンションメータの非直線性によって、回転軸の角度と角度電圧の関係を最小角と最大角の情報を与えただけでは、中間の角度で誤差が生じます。 このため、回転角と角度電圧の関係をテーブル(Az-V.TXT,El-V.TXT)に記述して与えて、より高精度なアンテナ制御を行います。 テーブルのデータを使って、直線近似から12次の曲線近似まで計算することができ、近似計算を行うか行わないかを指定(YES/NO)することができます。また、近似計算の次数を1〜12で指定します。
RotatorAzOffset = 0 この3つの値は、フォームにある3つのスライダーの設定を保存するものです。 通常、プログラム終了時に自動的に保存し、プログラム起動時に読み込んで設定します。
RotatorAzSpeed = 2 自動制御時のローテータ回転速度を手動で可変することができますが、プログラム起動時の設定倍数(1〜10)を保存します。初期設定は2倍になっていますが、ローテータの回転速度や衛星の方位・仰角の変化スピードによっても最適値は変化しますが、よく使う値に変更することができます。
RotatorAzMin = 0 C99UsbAnでは、アンテナの方位(Az)の回転範囲をプログラムから制限することができます。 設定の方法は、回転範囲の最小値と最大値の数値を与えます。 初期設定では0〜360度か回転範囲として設定されていて、全範囲に回転することができます。
RotatorElMin = 0 C99UsbAnでは、アンテナの仰角(El)の回転範囲をプログラムから制限することができます。 設定の方法は、回転範囲の最小値と最大値の数値を与えます。 初期設定では0〜 180度が回転範囲として設定されていて、水平方向から天頂、さらに天頂からアンテナが反転した水平方向までの全範囲に回転することができます。
UsbAnAzMin = 0 ローテータの回転位置は、ローテータのコントローラーから出力される角度に対応した電圧情報をUSB−Anのアナログ入力機能を使ってC99 UsbAnに取り込まれます。 プログラムが動作中は USB-An(V)のフレームに、この電圧値が表示されています。 USB−Anのアナログ電圧の入力範囲は0〜5Vなので、ローテータのコントローラーからの出力電圧が方位0〜360度で入力範囲になるようにあらかじめ確認・調整が必要です。 初期設定では、方位のローテータの回転軸が0度の時の電圧が0V、360度回転した時の電圧が5Vの場合です。 これらの設定値と USB-An(V) Az: の電圧値から方位軸の角度は、つぎの関係から求めています。 方位軸の角度 = (電圧値 - UsbAnAzMin) / (UsbAnAzMax - UsbAnAzMin) * (RotatorAzMax - RotatorAzMin) + RotatorAzMin 設定の手順は以下を参考にしてください。 ・方位のローテータを RotatorAzMin の方向に設定します。 ・上の状態で、USB-An(V) Az: に表示されている電圧を UsbAnAzMin = の値とします。 ・方位のローテータを RotatorAzMax の方向に設定します。 ・上の状態で、USB-An(V) Az: に表示されている電圧を UsbAnAzMax = の値とします。 ・C99UsbAn.INIを変更して、C99PICNICを起動して、動作を確認します。 ※Az-V.TXTを使う場合には一時的に無効となります。
UsbAnElMin = 0 方位軸と同様な考え方です。 初期設定では、仰角のローテータの回転軸が0度の時の電圧が0V、180度回転した時の電圧が5Vの場合です。 これらの設定値と USB-An(V) El: の電圧値から仰角軸の角度は、つぎの関係から求めています。 仰角軸の角度 = (電圧値 - UsbAnElMin) / (UsbAnElMax - UsbAnElMin) * (RotatorElMax - RotatorElMin) + RotatorElMin 設定の手順は方位の設定方法を参考にしてください。 ※El-V.TXTを使う場合には一時的に無効となります。
Preset1Az = 0 フォームにある1,2,3のプリセットボタンの設定値です。 Preset1では方位0度、仰角0度が初期設定の値です。 方位のPreset1Azには0〜360度、仰角のPreset1Elには0〜180の値を設定することができます。 Preset2,Preset3についても同様です。 ボタンの上にカーソルを移動するとボタンに設定されている方位と仰角がポップアップ表示され、確認することができます。
frmMainTop = 0 この2つの設定値は、フォームの表示位置を保存するためのものです。 プログラム終了時に自動的に保存し、プログラム起動時に読み込んで設定します。
C99UsbAnの改訂履歴 Version 1.0.3 (2011/01/23) ・カーソルキーでのローテータ回転でキー押し込み時の処理を修正した。 Version 1.0.2 (2010/08/14) ・方位仰角画面でアンテナ方向の描画での不具合を修正した。 Version 1.0.1 (2010/07/26) ・カーソルキーでローテータを制御した時に連続してUSB-Anにコマンドを送る不具合を改修した。 Version 1.0.0 (2010/04/25) ・「JR1HUOのWebサイトへようこそ!」で公開。
|