2025年3月23日 (日)

ATU 防水BOX (実際のアンテナによる整合)

カテゴリ:オートアンテナチューナー(ATU)の製作

アンテナセレクターの防水加工が完了しましたので、ATUのメインユニットを防水BOXの中に収納しました。 当初、メインUnitのマイコン基板はATU前面のパネル面にビス止めしてあったのですが、いざ防水BOXに収納すると、ソフト書き換えの為のPICKIT3を繋ぐ事が大変難しく、基板にハード的な変更が生じたとき、防水BOXからATU本体を取り外さないと処理できないという事が判り、下の写真のごとく基板を収納する金属ケースをATUから分離し、基板のメンテと、ATU本体のメンテが防水BOXの蓋を開けるだけで出来るように変更しました。

Zmatch_main_box__in

写真は基板もATUも天板を開けた状態ですが、通常は両方とも天板をかぶせる事にします。 防水BOX内でATUの出力端子を外部に引き出す配線をし、かつATUの天板をかぶせると、10MHzのバンドのみはどうしても整合出来なくなりました。 やむなく、VC2のタップを初期の6.5Tに戻しました。50Ω負荷では最小SWR1.7くらいにしかなりませんが、200Ωなら1.04になりますので、実際のアンテナで確認する事にします。

この防水BOXに組み込んだ後、イニシャライズの時のモーターが異常音を出します。原因は、モーターが起動トルク不足で回っていない状態でした。 モータードライバー基板の中にあるSMTタイプの半固定抵抗の接触不良でモーターの電流制限が250mAでないとダメなところ70mAくらいしかなったものでした。 半固定抵抗をぐりぐりとまわして電流値を250mAに再設定してやると正常になりました。 過去、このSMTタイプの半固定抵抗の品質はかなり悪く、大型の村田製に変更した事がありましたが、ここにきて中華製の品質問題に遭遇してしまいました。 こんな部品をいくら防水BOXに収納したとしてもベランダに置いて大丈夫なのか? 一気に不安がよぎります。 とりあえず呉印の接点復活剤を吹き付けておきましたが、心配ですね。

春分の日を過ぎた最初の土曜日に急に暖かくなり日中の気温が18度を超えます。 南西の風がやや強いですが、従来のバリコン式ATUを降ろし、Z Match ATU(以後ZATU)を急遽上げる事にしました。約3時間花粉が飛び交う中で作業した結果は以下の写真です。

Zatu_comp1

Zatu_comp2

アンテナセレクターとZATU間に接続したはしごフィーダーは100均にあった仕切り板で作ったインピーダンス約500Ω、長さ3mのフィーダーです。

すぐに動作テストを行い、9600ボーのUART通信も問題なく動作している事を確認できました。

さっそく、実アンテナによる整合テストにトライしました。

1820kHzではWVCの容量不足でSWRは1.51、1896では1.79、ここは追加のコンデンサで解決しそうです。

修正済み配線図 zmatch_atu_main_04.pdfをダウンロード

50Ωダミー抵抗では整合出来なかった10MHzはWVCを最大容量にしてSWR 1.08

29600kHzはSVC,WVCともに容量最小でSWR1.53

その他のバンドはSVC,WVCともに可変範囲内でSWR1.11以下となりました。

ただし、昨日1.1以下に整合したのに、今日は4以上とか再現性が良くありません。 この再現性が悪いのはステッピングモーターの脱調かも知れないと、改めて電流制限の設定を見直してみました。現在はふたつのモーターとも250mAでの駆動です。 電流が原因で脱調する場合、定格電流以内で少なすぎても多く過ぎても発生するとWEB上で解説されており、カットアンドトライが必要なようです。 この為、いくつかの設定を試した結果SVC用は400mA、WVC用は600mAに設定して様子を見ます。 

また、モーターのstepが0以下もしくは1500以上に動こうとするようなATUとしてのカバー範囲以外となった場合、タイムアウトでエラーになるようにしたつもりでしたが、タイムアウトのチェックルーチンが機能しないというバグがありましたので、修正しました。

現在のSWR限度値は1.08に設定してあり、整合開始してから10秒間は1.08以下になるまで、整合動作を行います。 しかし、リアクタンスが大きいバンドでは、2stepの回転でもSWRディップポイントを飛び越える場合があり、10秒以上経過したら次の限度値であるSWR1.35以下を探します。SWR1.35でも整合しない時は次の限度値1.65を探します。 そこで、整合スタートした後、再度STARTキーを押すと、その時の条件をEEPROMに記憶し、整合したという処理をするように修正しました。 この修正により、例えばSWR1.2くらいで行ったり来たりしている状態であるなら、この機能を使い一旦SWR1.08以上の場合でもEEPROMにデータを記録できるようにしましたので、とりあえずは運用できます。 時間のあるとき、この仮の整合状態を開始ポジションとして自動整合を開始すると、最終的に1.08以下のポジションを見つけて記憶できるようになりました。

ステッピングモーターの脱調が原因と思われる、整合条件の再現性は一向に改善されません。 一度、SWR1.08以下に整合した後、他のバンドへ移り、そこで、整合条件をEEPROMに記憶させた後、前のバンドに戻り、プリセットコールを行い、送信モードにすると、SWR3くらいに跳ね上がっています。 そこで、再度整合動作を行うと、前回EEPROMに記録されたモーターステップと10から20異なります。 この差はSVC、WVCいずれもありますが、WVC側がやや多い状態です。

このZ Match ATUのオリジナルは50MHzをカバーしていませんが、試しに50.3MHzで自動整合を行うとSWR1.2くらいで整合し、VK局とFT8で交信できました。 レポートは私が相手局に送ったのが-08dB、相手から貰ったのが+03dB。 アンテナの指向性データから実用出来ないバンドと諦めていたのですが、実際のアンテナはシュミレーションデータとはかなり違うみたいで、これはうれしい誤算でした。

脱調による再現性の問題の為、次の土日にZATUは降ろし、従来のバリコン式ATUを再度上げるつもりでしたが、急に寒の戻りがあり昼間でも最高気温が8度しかなく、ATUの入れ替えは次週に延期となりました。 代わりに、50MHzの運用を行い、DXCCのエンティティが7に増えました。

 

ATUメインUnit Z_Match_ATU_main_04.cをダウンロード

 

INDEXに戻る

 

2025年2月 1日 (土)

Z Match ATU アンテナセレクター

カテゴリ:オートアンテナチューナー(ATU)の製作

Z Match ATU本体とコントローラーがほぼ完成しましたので、ATUとアンテナの間に設置するアンテナセレクターの製作です。

今回のZマッチのATUは、その出力が平衡タイプとなっており、これは、平衡アンテナに直接給電出来る事から、FT8の時、バランのコアが発熱して、100W連続送信ができないとか、バランの中で生じるロスが大きいとか言う問題が発生しません。 また、アンテナが不平衡タイプの場合、そのまま給電しても、ATUとアンテナ給電ポイントまでの距離が短ければ、給電線に不平衡電流が流れても不要輻射や外来ノイズのピックアップも大きくはならないという利点があります。 不平衡アンテナの場合、ノイズも不要輻射もアンテナが原因なのか、給電線が原因なのかよく判りませんが。

 

ATUからアンテナセレクターまでの3mの距離は、はしごフィーダーで給電し、3種類のアンテナに分配するアンテナセレクターをマストの給電ポイントに括り付けて対応する事にします。

Iantselector1

コントローラーから送られるUART信号をATUで中継して、受信信号のみをアンテナセレクターまで送り、そこで、アンテナナンバーを解析して、リレーをON/OFFする事により、目的を達成します。

左の写真が、そのセレクター基板です。 マイコンは部品箱の奥から探し出した、PIC18F14K50を使います。 このマイコンのEEPROMに分割バンドとそれに対応するアンテナナンバーを記憶させる機能も入れましたので、後々、バンド分割の変更やアンテナのタイプ変更が発生しても、いちいちマストから降ろさなくても良いようにしてあります。

ところで、今頃気づいたのですが、このPICのUART信号の極性は該当bitを0にしたら「正論理」、1にしたら「負論理」と書いてありますので、その言葉通り正論理にしたら、動きませんでした。 最近のPIC18の場合、1の場合、アイドル時L、0の場合、アイドル時Hレベルと書かれております。 RS232Cの場合、アイドル時Hの状態をノーマル状態としていますので、この古いPICでは、ノーマル状態を正論理と表現したのでは? このおかげで、自作のハードとプログラムが悪いのではと3日間も悩みました。

2025年3月

3月に入ったとたん春らしくなってきました。 ANTセレクターBOXを作る為の屋外作業が出来るようになりましたので、透明BOXを購入し、アンテナセレクターを収納する防水BOXを作成しました。 適当なサイズをホームセンターで探しましたが、有ったのは透明ケースのものだけでした。 アンテナマストに括り付けた時、ほんとにリレーが切り替わっているのか確認する為に3色のLEDを追加し、ベランダから見上げて動作確認が出来るようにしました。 サイズも従来のバリコン式ATUの1/4くらいに収まりました。

Antselector3

Antselector2

左上が防水の為の蓋をかぶせた状態、右上が蓋を開けた状態です。 高周波が通るワイヤーがふらつくとアンテナの整合条件が変わりますので、動かないように錫メッキ銅線で配線してあります。 内部の特性インピーダンスは無視です。 これは、アンテナのインピーダンスと合成された状態でATUが整合させてしまうので、極端なインピーダンスにならない限り問題ありません。  

ATU本体と接続する電源と通信線3本は、自転車の電装品間を配線する防水コネクターで接続します。 

このBOXの背面にはマストにステンレススチールベルトで縛り付けられる様なアルミ板で出来たホルダーも作ってあります。 ATUとこのアンテナセレクターを平行フィーダーと電源線で結び、アンテナ端子に50Ωのダミー抵抗をつないだ状態で、28MHzの100W CW運用でも問題が発生しない事は確認できました。 あとはマストに括り付けて実働テストをするのみとなりました。 

実働テストはATU本体の防水BOXが完成してからとなりますので、4月ごろを予定して置きます。

 

Z Match MTUの構造はL型MTUと等価であるという説明がオリジナルのホームページに書かれており、ならば、MTU内部で発生するロスもL型MTUと同等かも知れないと期待されます。 実際のところはどうなのか50Ωのダミー抵抗を使い実測してみました。

Kouritu3

左のブロック図が測定に使用した各機器の配置です。 AMTX(FTDX101D)とATUと50Ωダミー抵抗を直列に接続し、ATUの入力部及び50Ω入力部のRF電圧をオシロで読み取ります。 オシロのピークtoピーク電圧をVoppとした場合、

 

ATUの入力(W)は(Vopp*0.707*0.5)の2乗/50

ダミー抵抗の入力(W)は(Vlpp*0.707*0.5)の2乗/50

の計算で電力に直します。 ATUの入力とダミー抵抗入力の電力の比が効率となります。

また、参考としてクラニシのMTU NT-636でも同じように測定し、効率を計算します。 このようにして得られた結果が下の表になります。 アンテナ負荷が50Ωの純抵抗ですから、実際のアンテナが50Ω純抵抗である可能性はほとんどなく、T型ハイパスMTUと同一条件で比較した一例として見て頂きたく。

効率のデータを取る為に何度も測定を行うと、その都度データがバラツキます。表のデータはその中で一番良いデータを表示しました。

Kouritu3

結果はNT-636よりロスが若干少ないデータが得られました。Z Matchの構造からして、Lタイプ同等とはいかないにせよ、かなり良い効率をだしています。 NT-636はハイパスT型と言われるMTUですが、以前測定したデータとあまり変わらず安定しているようです。 Z Match ATUは平衡出力ですので、不平衡出力のクラニシのMTUには必ず必要となるバランが不要です。 過去私が自作したバランのロスは10%から50%はありましたので、それを考慮するとクラニシのNT-636よりロスはかなり少なくなると思われます。特に、FT8の時、その効果が発揮されるはずです。

 

ATUの効率を測定する最中にL3を有効にして整合をとった時の効率が意外と悪化する事に気づきました。 このL3のオープン、ショートは、Z Matchの特有のDrop Outが発生する領域をインダクターを追加して回避する目的で設けられており、このコイルを追加する方法と、2次側のリンクコイルに3ターン目のタップを設け、リンクコイルを4ターンにするか3ターンにするかでインダクタンス値がかわりますので、L3と同様Drop Out領域を回避する手段とする事も可能と説明されています。 L3を追加する事は、アンテナにローディングコイルを追加する事と同じ事であり、ローディングコイルを追加した場合、全体の効率は悪化する事は既知の事実です。 そこでL3を追加する方法と2次側のリンクコイルの巻き数を変更する方法のATUの効率を実測してみました。

Dropoutc

結果は上の通りで、L3を追加する前のATU効率が91.5%であったのに対して追加した後は、77.5%まで悪化していました。この悪化の程度は14MHz以下のバンドではインダクタンスのインピーダンスが小さくなるため効率は改善していきますが、14MHz以上のバンドではより効率悪化が起こる事になります。 一方、リンクコイルの巻き数を切り替える方法の場合、単なるインピーダンス変換器として働きますので、ロスの発生はなく、実測データも巻き数が4Tの場合と変わりません。 ただ、ホームページ内では、Drop Out領域の回避レベルが同等なのか明言されていませんので、全バンドで回避能力があるのかは不明です。 今回の私のATUの場合、すでに説明した通り、ATUとアンテナセレクターの間をラダーラインで接続する事にしていますので、もし、Drop Outが回避出来ない時はこのラダーラインの長さを調整する事で回避可能となります。 よって、効率ダウンが起こらない、リンクコイルの巻き数選択方式で進行する事にします。 

 

配線図 zmatch_atu_main_04.pdfをダウンロード


配線図 Z-Match-ANT_selector.pdfをダウンロード

プログラム Z_Match_ATU_ANT_selector_0.cをダウンロード

 

いよいよ、ベランダに設置し、実際のアンテナで動作確認を行います。

INDEXに戻る

2024年12月21日 (土)

SDカードへのアクセス 2024

2015年にアンテナアナライザーで得たSWRカーブをSDカードにセーブする為にMicrochipが用意しているfileioというDEMOアプリの使い方を紹介しましたが、その後PCをWindows7からWindows10に変更した過程で、当時のファイルが消失し、あれから9年経った今、再度SDカードへのアクセスが必要となり、また一からコンパイル環境を構築する必要が生じました。

当時入手したMLAプログラム集は更新されており、今回使用したプログラムは

mla_v2017_03_06_windows_installer.exe

というファイル名の物で、これ以降は更新されていないようです。

このプログラムをインストールした後、fileio_lfn(FAT32用ロングファイル名対応版)のプロジェクトを開き、当時の使い方通りハードを構成し、ビルドをかけると簡単にDEMOモードによるファイル見本が作成できました。 この時の環境は以下の通りです。

MPLAB X v6.20

XC16 v1.60

Packs PIC24F-GA-GB_DFP 1.9.336

この状態でコンパイルが成功しましたが、最初、デモファイルが出来ませんでした。原因は、マイクロSDカードをアダプター経由で使った為でした。 PCは標準のSDカードもアダプタ経由のマイクロSDカードもアクセス可能ですが、このfileioからのアクセスは不可能でした。 これはfileioのだけで無く、2015年以前に購入したキャノンとソニーのデジタルカメラもメディア異常で使用できませんでした。 普通サイズのSD HCならOKで現在も販売されていますので、マイクロSDカードが使えなくても問題ないのでしょう。

自作のプログラムの中にこのfileioのプログラムを埋め込み何かを作る場合、fileioのソースも少なからず変更が必要になりますので、オリジナルのファイルはそのまま残す必要から、独自に作成した開発用ホルダーの中に必要なファイルを集めてビルドをかけられるようにします。

以下、忘備録を兼ねて、その手順を紹介します。

Sdc2004_file

左は専用のホルダーを作り、その中に必要なファイルを集めた上で、SDC2024という名前のプロジェクトを作り、ヘッダーファイルとソースファイルを追加した状態の表示です。

ただ、MLAのfileio用ホルダーの中には、同じ名前のファイルが沢山存在します。 従い集めたファイルが実際にデモプログラムに使われたファイルかどうかが判りませんので、これを簡単に探し出す為に、以下の作業をしました。

まず、fileio_sd_card_demo_lfn のプロジェクトを開き、デモ用プログラムが全て正常に動作するように自身のハードに合わせて書き換えます。 そして、コンパイルが成功し、デモ用ファイルがSDカードの中に出来るようになりましたら、ソースファイル(拡張子が.c)のみファイル先頭か見やすいところに印を書き込んで置きます。 私の場合、先頭行に//20241208 のように日付を書き込みました。

以後、fileio_sd_card_demo_lfnのFilesタグの中に表示されるホルダー構造を頼りに左側にリストされたファイルをWindows(C:)/microchip/mlaの中から探し出し、専用ホルダーへコピーします。 この時、コピーしたファイルが目的のファイルかどうかは先ほど説明した印があるかないかで判別できます。

ヘッダーファイル(拡張子.h)にはこの印は付けなくても問題ない様でした。 この後、ビルドをかけてコンパイルエラーが出なくなったら、ヘッダーファイルも他の同じ名前のファイルとは互換性がなくなるファイルが出来てきますので、のちのちホルダーを移動したり、新規にホルダーを作る場合、ご注意ください。

また、mainとsystemファイルは、本来の目的のファイルとファイル名がかぶる可能性もありますので、それぞれSD_main SD_systemに名前を変更してあります。

この状態で、ビルドをかけると沢山のエラーが発生します。 それらは、インクルードファイルのホルダー表示が専用ホルダーにマッチしない為に発生しているもので、エラー表示を見ながら、該当する部分を修正していきます。

例えば、system.hの中に #include "driver/spi/drv_spi.h" という記述があり専用ホルダーにファイルを集めた場合、この記述ではエラーになりますので、#include "drv_spi.h" に修正します。

このエラーが出る都度、修正し、エラーが出なくなったら完了です。 カード内のファイルを全て削除したSDカードを差し込んで、プログラムを立ち上げると、デモファイルが出来ているのを確認できます。

私のXC16開発環境ではv1.60とv2.40がインストールされていますが、v2.40ではエラーが解消せず、v1.60でエラーなしとなりました。

ここまでのデモファイルはSDカードにテキストファイルを書き込むことしか出来ませんので、次に、SDカード内のファイルをPICで読み込む事が出来るようにします。 ただし、このファイルは9年前に作成し、その後紛失していますので、そのフローや動作仕様はすっかり忘れています。従い、思い出しながらいちから改造する事になりそうです。

思い出し作業を約2週間続けてきた結果、SDカード内に記録したファイル名を見つけて、それをLCD上に表示するところまで出来ました。 そして判った事は、書き込みは確かにロングファイル名で可能ですが、読み込みのデモソフトでは8+3形式の大文字でしか扱えないという事が判った次第です。9年前に自作のアンテナアナライザーにSDカードのファイルを読み込ませ、予めセーブしてあったSWRの周波数特性グラフをLCDへ表示する事に成功していたのですが、この時のファイル名は8+3の大文字のアルファベットと数字のみのファイル名でしたから、今回の問題が判りませんでした。 マイクロチップのロングファイル名のプロジェクトのファイル構成の中で、本来はlfnの文字が付くファイル名のはずなのに、lfnの文字の無いファイルを指定しているソースファイルがあります。

sd_spi.cのヘッダーファイルの中で、fileio.hとfileio_private.hはともにlfnの文字がついていませんので、これを二つともlfn付きのヘッダーファイルfileio_lfn.h及びfileio_private_lfn.hに変更しましたが、ロングファイル名にはなりませんでした。

Sdc_fname_disp_test

左のLCD画像が、SDカード内に記録したBMPファイルの表示内容です。 まだデバッグ中なので、画像ファイル名以外に余計な文字も見えますが、SDカード内にある4つの画像(bmp)ファイル名を表示しています。

実際のファイル名は全て小文字なのですが、全て大文字に変換されています。 オリジナルのファイル名は拡張子以外で16文字ほど有ったのですが、頭から7文字以降は切り捨てられ、8文字目は数字に変わっていました。 これは、懐かしいMS DOSの表記で、ロングファイル名が有っても、判別できるようにした当時のルール通りであり、8+3形式の表記は正しく動作している事にほかなりません。 LCDに表示されたファイル名は8文字に収まるようにrenameした後のものです。

この状況で、私の力ではどうにも出来ませんので、もし、ロングファイル名のまま読み込める解決方法ができる方がいらっしゃいましたら、公開お願いします。私の全ソースはLCD表示が成功したら公開します。

とりあえず、8+3表記のファイル名検索が出来ましたので、これから、bmpファイルをLCDへ表示させる事にトライします。

SDカードにセーブしたBMP画像を320x240ピクセルのLCD画面に表示させる実験は意外と早く実現しました。以下実験中の画像を紹介します。

Displaytest_bmp

Kagamiyama_nov_2

Penang_1

Asagao_1

Kagamiyama_feb


この実験に使った、BMPファイル以外の全てのファイルをzipファイルでダウンロードできます。

BMP_Display_2024.zipをダウンロード

全部のファイルを同じディレクトリーに置き、MPLAB Xにてプロジェクトを作りコンパイルが成功すれば、再現出来ます。

この実験の目的は、480x320ピクセルくらいのLCDを使い、写真を飾るフォトフレームを作る事でしたので、手ごろな価格のLCDを探す事にします。

配線図 BMP_disply_from_SDcard.pdfをダウンロード

INDEXに戻る

2024年11月10日 (日)

Z Match ATU 自動整合システムの検討

カテゴリ:オートアンテナチューナー(ATU)の製作

タイミングプーリーに付加したフォトセンサー検出用遮蔽版が大きくてケースの天面蓋が取り付けられないという問題の対策の為、タイミングプーリーの直径を一回り小さくした結果、天板の取り付けが可能となり、ATU本体のハード面は完成しました。 (前回記事参照

Zmatchatucmp3_2

Zmatchatucmp2_2

Zmatchatucmp1

前回の記事で判明したノイズに関しては、ケースインしても当然変化はないですが、モータードライバーをスタンバイモードにするとノイズは綺麗に消えます。しかし、この時、1/4マイクロステップで刻んだアドレスのバリコン角度は、一番近い1.8度ステップの停止位置に移動してしまいます。そこで、モーターのステップは1/4マイクロステップの4ステップ単位で移動し、バリコンの停止位置は常に1.8度の基本ステップの位置と同じになるようにし、バリコンがターゲット角度に達したらモータードライバーをスタンバイモードに移す事にします。 そして、バリコンの停止位置が粗くなり真のSWRディップポイントを飛び越えるような状態が発生するバリコン容量の少ない角度では、バリコンに直列にコンデンサを挿入し、スプレッドバリコンとして使う事により、この飛び越し現象を解消する事にします。 ただし、まだ、自動整合機能が未完成ですので、このスプレッド機能の追加は完成してから追加する事にし、たちまちは、最小4ステップによる1/4マイクロステップで検討を続行します。

1/4マイクロステップにこだわる理由は、モーターの騒音です。1/4マイクロステップの回転音は夜でも我慢できる音量と音質ですが、1.8度基本ステップの時は、昼間でも許容できない音量と音質で、どうしても1.8度ステップでモーターを回す必要があるイニシャライズの時のみは、じっと我慢するしかない音なのです。

自動整合のプログラムは、とりあえず現用中のバリコン式T型ATUのプログラムのタップ選択機能を廃止し、モーター駆動を時間指定で行っていたものをステップに置き換えた状態だけのものからスタートです。 7MHzの場合、シングルバリコンもダブルバリコンも容量最小付近が整合ポイントになり、例えば、両バリコンとも容量中央付近にある状態から自動整合をスタートさせると、その付近で行ったり来たりして、全く整合ポイントへ移動しません。 マニュアルで整合ポイント付近までバリコンを移動させて、整合を開始すると、ダブルバリコンはすぐに反応し、SWR最小ポイントへ移動しますが、シングルバリコンは現在位置で行ったり来たりして、結局、真のSWR最小ポイントを見つける事無く時間切れとなります。

まあ、今始まったばかりの整合アルゴリズム探しですから、これから、色々と実験しながら、最適な整合アルゴリズムを探す事にします。 ただ、かなり難攻が予想されます。

2024年12月末日

整合システムの検討が中断して1か月以上たちましたが、その他の雑用が多くてなかなか取り掛かれません。 その他の用が一段落しましたので、このZ Match ATUの検討に戻れるようになりました。 この検討再開に先立ち、コントローラーの表示をリニューアルしトライします。

Controllernewlcd

 表示をLCDに変更した事により、デバッグ情報をLCD上に表示可能となり、開発環境が大幅に改善したのですが、従来のキャラクタディスプレーに比べ、表示時間が10倍以上に増え応答が悪くなりました。この応答速度の悪さはLCDとシリアル通信によるところが大きく、元に戻すわけにもいきませんので、表示回数を出来るだけ減らす工夫をしながら検討を進めます。

このATUをケースに収納してから、各バンドの整合テストを行っていなかったので、手動による整合テストにトライしましたが、ハングアップがかなり頻繁に発生し、整合試験はいまだに出来ていません。 最大の原因はLCDと8MHzのクロックでSPI通信を行っていますが、このラインのリンギングが激しく、たちまちは、CLOCKとDATAラインに100Ωのダンプ抵抗を直列に入れて様子見です。 その他にもバグがありそうで、いつまで経ってもSWRが収束しません。

2025年の正月休みはバグ対策についやし、やっと成人の日になんとか基本動作が行えるようになりました。 最大の功績は、SWRを小数点以下2桁まで表示していたものを、SWRが2.0を超える状態では小数点以下二桁目を四捨五入して小数点以下1桁しか表示しないようにした事です。 自動整合はバリコンのどの位置からもSWR最小ポイントに行く訳ではなく、本来の整合ポイントの近くでSWR10くらいまで絞り込んだ場合、TUNEキーを押すと、SWR1.1以下に整合するようになりました。 この動作は、シングルバリコンを少々回したくらいではSWRが全く変化しないという、このATUの基本動作が影響しており、何度も時間をかけて自動整合を試みると、その内SWR最小ポイントを探しますが、それまで5分間くらいかかります。 5分も待つくらいなら、マニュアルでSWRが変化し始める角度までバリコンを回転させた後、自動整合をスタートさせると5秒から10秒くらいでOKとなります。 さらに例えマニュアルでも一度整合条件を記憶して置けば、数秒で整合状態になりますので、これ以上のアルゴリズ探しは諦めました。

一応50Ωのダミー抵抗で1.8MHzから28MHzまで整合できます。 整合状態の最小SWRは、10MHzのみ直列のインダクタを有効にして1.7くらい、その他のバンドは直列インダクタなしでSWR1.08以下となりました。

今後、他のインピーダンス負荷でも行えるかなどの確認を行いながら、バグ取りを続けます。

ステッピングモーターから出るノイズ対策はまだですが、モーターを回す必要がある時以外、PWM回路をST-BYにする検討もこれから行います。

Zmatchatu250113

デバッグ中のZ Match ATU
 

1.8MHzから28MHzバンドまで50Ωの抵抗負荷なら曲がりなりにも整合が取れるようになり、かつマニュアル操作でバリコンを思い通りに動かせるようになった事から、抵抗負荷の整合範囲の確認を行うと、これがさっぱり駄目になります。 15Ωの抵抗負荷でどのバンドもSWR2以下になりません。 500Ωの抵抗負荷ではSWR3以下になりません。また、いずれの抵抗負荷でもSWR5以下にならないバンドが大半です。 どうも、オリジナル設計のコイルをサイズダウンした事、バリコンの最小容量がオリジナルより10PFも高い事も影響しているようです。 そこで、原点に戻り、対策を考えねばならなくなりました。

 

デバッグ中にLCDがハングアップする問題が出続けていました。 CLKとSDAラインには100Ωをシリーズに追加してリンギング対策をしていたのですが、その他の制御ラインにも100Ωのシリーズ抵抗を追加したら、多少は改善しましたが、まだ完全では有りません。 

LCDのSPIクロックを8MHzにしても、LCD表示には数十msecの時間がかかり、送信側でのタイミングによては送信したデータが処理されないという問題が付きまとっていました。1回送信する度に150msec以上の待ち時間を取ると、ほぼOKなのですが、この状態では自動整合の動作が非常に遅くなり、当初目標としていた35秒以内に整合完了するという現用のVC式ATUと同じターゲットが達成できません。 そこで、ATUユニットからコントローラーへ送る場合、その前に送った送信データを受信し、ディスプレーを含むコントローラー全ての処理が終わったら、完了信号をATU側に返し、この完了信号を受信するまでは次のデータを送信しないという対応を行いました。

まだバグがあるかも知れませんが、なんとかハングアップなしで動いています。

次に15Ωから500Ωまでの抵抗負荷に対して整合しなかったり、整合してもSWRが2以下に下がらない問題に対して、コイルの巻き数とタップ位置を見直す事にしました。

この見極めはVK5BRがホームページで公開している、SVCとWVCの容量に最も近くなるようにコイルの巻き数やタップ位置を選ぶ事から始めます。

7MHzで50Ωの負荷抵抗に整合した時のバリコン容量はこのVK5BRのデータを読み取り

SVC=130PF WVC=30PF でした。

一方、私のATUのバリコンステップから読み取った7MHz 50Ωの時の各VCの容量は

SVC= 160PF WVC = 40PF

この状態はコイルのインダクタンスが不足している状態ですので、まず、メインのコイルの巻き数を13Tから14Tに増やし、SVCのつながるタップ位置を9Tから10Tに変更しました。

Maincoil14t_3

すると、整合時のVCの容量は以下のようになりました。

SVC=130PF  WVC=37PF

この状態で負荷抵抗を変えて確認したVC容量は下の表のようになりました。

40m_tunedata_2

 

 SVCはオリジナルと同じ容量になりWVCはやや多い値になっていますが、以降、この状態で全バンドの整合確認を行ってみます。

下の表の中で表示されているのは各バリコンの容量値ですが、実際に容量を測定した訳では有りません。バリコンの角度は180度を1500ステップとしてLCDに表示されますので、そのステップ数から、最小容量30P、最大容量350P、そして、その間はステップ数/1500で直線的に変化するとして計算されたものです。 実際値と合致はしませんが、傾向は把握出来ます。

Z_match_all_band_data_2

この表で、黄色の部分はモーターの4step分解能では自動整合出来ず、一番低いSWRになるようにマニュアルで設定した時のデータになります。(表をクリックすると拡大できます) このデータ取得中にメインユニットやコントローラーユニットがハングアップする事がありました。 メインユニットはRFキャリアによる誤動作で、コントローラーはLCDのSPIのようです。 しばらくはこれらの対策に時間がかかりそうです。 

まず、メインユニットのハングアップ問題から。 症状は21MHz以上のバンドで100W CW送信すると、ハングアップするものです。 リレー、角度センサー、SWR計の順序でコネクターを抜いても改善しません。 ステッピングモーターのコネクターを2個とも抜くと、28MHzまでOKとなります。 全てのコネクターを挿入した状態で、オシロスコープのGNDをメインユニットの基板のGNDに繋ぐと、24MHz以上はNGですが、21MHzはOKとなります。 コントローラーとメインユニット間のケーブルにコモンモード電流が流れているみたいなので、測定してみました。 オシロのGNDを繋がないときが70mA以上、オシロのGNDを繋ぐと35mAくらいになります。 そして、オシロのGNDを繋がない状態でステッピングモーターのふたつのコネクターを抜くと、5mA以下になりますが、ATUとして動作しません。 ここまでの確認で、モーターのワイヤーから漏れたRF信号が悪さしている事は確かなので、まず、モーターの電源ラインの+側とGND側に15uHのチョークコイルを入れました。 さらに、コントローラーから供給する12Vラインにコモンモードフィルターを追加しました。 このコモンモードフィルターは村田製のSMDタイプで品番がPLT5BPH5013R1SNという長い名前になりますが、許容電流3.1A 10MHzでのインピーダンスが350Ωくらいのものです。メイン基板にこの変更を盛り込んで、メインとコントローラー間のケーブルに50uHくらいのフェライトコア5個によるフィルターを付けた状態で28MHz 100W CW送信でも誤動作しなくなりました。 このフェライトコアによるコモンモードフィルターの効果を調べる為に、巻いたコアを1個づつ外していくと。最後の1個ではNGで2個のコアの時OKとなります。 恒久的なフェライトコアによるコモンモードフィルターを作る為に2個のコアの時のインダクタンスを測ると18uHでした。 この数値はメモして置きます。ちなみにこれらの対策後のケーブル上のコモンモード電流は7mA程度まで小さくなりました。

21MHz以上で自動整合は出来ないが、マニュアルならなんとかSWR1.1以下に追い込めるという現象がありましたので、自動整合の時の移動ステップを最小1stepとしてみると、21MHz以上のバンドではOKとなりますが、7MHz以下のバンドではベルトのバックラッシュが影響しているようで、なかなかSWRが収束しません。 最小ステップは2stepの時、全バンドOKになります。 当初この細かいstepは不可能だから、スプレッドバリコン方式でやると考えていましたが、いざスタンバイ機能をプログラムに追加して動作させると、モーターがスタンバイ状態になっても、ベルトでつながれたバリコンの負荷が重くて、モーターのプーリーは動きません。 スタンバイ状態でもモーターの軸の角度は保持しているようです。 以降の検討は最小2stepのままでどれくらいステップ角度がずれるか見てみる事にします。  何度も整合テストを行っていると、SWR1.1以下になるVCのステップ数は多少バラツキます。原因はSWR最小ポイントではなく、整合途中に最初にSWR1.1以下になったポイントを整合ポイントと定義しているからですが、この1.1以下の範囲は意外と広く3.5MHzで10くらい、28MHzで3くらいはあります。

Zmatch_spi

左の波形は100Ωを追加した後の、SPIクロック波形です。 一番上がPICマイコンのCLK出力。真ん中は5V-3.3V変換IC74LCX245の出力端子につながった100Ωを通過した波形。 一番下は、約20cmのワイヤーを経由してLCDの端子に差し込まれたコネクター端子の波形です。いずれも少しづつ劣化はしていますが、ハングアップが起こりそうなハイレベルのパルスはないし、マイナス側にはみ出すパルスもありません。 LCDがハングアップするのでは無く、コントローラーに使用されているPICがハングアップするのかも知れません。 前述のように、RF混入によるコモンモード電流をかなりのレベルで対策出来ましたので、これでしばらく様子を見る事にします。

50Ωの抵抗負荷にて、WVCを最大容量にしてもSWRが1.1以下にならなかった10MHzですが、実際のアンテナのインピーダンスは240+J650Ωくらいなので、実際のアンテナに接続してから対策を考える事にします。

WVCの一方が6.5Tのタップ位置に接続されていましたので、これをオリジナルの7Tに変更して、全バンドの整合条件を確認してみました。

Z_match_all_band_data2

結果は前回の6.5Tより良くなりました。 また、各バンドの最初の整合条件を探すとき、マニュアルで整合しそうな位置までバリコンを回転させ、自動整合をスタートさせると、今回は最小移動ステップを2stepとした事もあり、全バンド、全負荷条件で自動整合が成功しました。 また、今回1KΩの負荷での確認もおこないましたが、結構広範囲で整合する事も判りました。 今回のタップ位置変更で7MHz 50Ω時のVC容量がオリジナルの値よりずれてしまいました、この補正が必要かどうかは実際のアンテナに接続してから考える事にします。 このZ Match ATU本体はベランダに置きますので、カットアンドトライはいつでも行う事ができます。

ATUの電源を切ってすぐに電源を再度ONした時、最初のステッピングモーターのイニシャライズが失敗する事がたまに起きていました。 そこで、7.3Vを作るDCDCの前後に入れてあった2個の2200uFの電界コンデンサを廃止してみました。 すると、電源OFF時の放電時間が短くなり、1秒以上待つと異常動作が起こらなくなりました。 ただ、全くゼロにするのは、回路の安定度にもかかわることなので、このDCDCの入力部には10uF,出力段には100uFのコンデンサを追加して恒久対策としました。

ダミーを使った実用テスト中に突然、ATU本体のUART受信が出来なくなりました。 原因を探すとATU本体のRX1端子にDCレベルがマイコン内部から漏れており、この端子が何らかの原因で壊れたものでした。基板を裏返して原因を探すと、12V電源ラインで不要になったワイヤーの片方が絶縁されていない状態でブラブラと揺れていました。多分このワイヤーがRX1のつながっているRC7端子に接触したのではないかと推測されます。 対策はPPC機能を使い、RX1の入力をRC1に移しました。 これでUARTの受信機能は回復しましたが、今度はSWRが5以下に下がらないという問題に遭遇しました。 AD入力端子をモニターすると入力オープン状態で、DC電圧の漏れがあります。 他の入力端子を確認してもすべての入力端子にDCオフセット電圧が発生していました。 かつPICの消費電流だけで100mAを超えます。 PICマイコンそのものが壊れてしまったみたいです。 ICの部品箱をひっくり返すと何に使ったのかも忘れてしまったPIC18F47F42が見つかりましたので、PICを交換し、プログラムを書き込むと、また正常に動き出しました。 ブラブラの12Vラインにつながったワイヤーはもちろん取り除きました。

ただ、この整合試験中にコントローラーがハングアップする事が有りました。 このハングアップの現象を確認してみると、VCステップが0又は1500の時発生し、ATUとして整合出来ない状態になっており、タイムアウトでエラーにならなければならないのですが、タイムアウト検出ルーチンを通過することなく、同じループをグルグル回っているだけと判りました。 原因がわかれば対策は簡単でした。

 

コントローラーをケースに入れました。 まだデバッグ中ですので、LCDの保護シートが付いています。また、ここまで出来て電源スィッチの在庫が無い事に気が付き、慌てて秋月に注文しましたので、まだ取りついていません。 今回のBOXは中華製で直取りです。送料込みで1300円くらいでした。 前後のパネルが電気的に接続されていないという構造では有りますが、コントローラー程度なら問題ないでしょう。 材料はアルミでは無く鉄板で青色に塗装されていました。パネル面には光沢印刷用紙の裏側にインクジェットプリンターで印刷した紙を張り付けましたので結構綺麗に仕上がりました。(光沢面に印刷した場合、すぐに傷がつくのであえて裏側に印刷)

ケースの底面にプラスチック製の足が付いているのですが、その位置が不適切で、底面を有効に使えません。 そこで、付属の足は廃棄し、ケースの四隅ギリギリに市販のゴム足を取り付けました。

Zmatch_case_in1

Zmatch_case_in2


一応、気が付いたバグは対策しました。  このATUを実用する為には、屋外作業が山の様にありますので、温かくなる春まではバグ探しを続けます。

ここまでの配線図とマイコンプログラムを公開します。 

ATU本体回路図 zmatch_atu_main_03.pdfをダウンロード

コントローラー回路図 Z-Match-ATU_contoroller_02.pdfをダウンロード

ATU本体プログラム Z_Match_ATU_main_03.cをダウンロード

コントローラープログラム Z_Match_ATU_controller_3.cをダウンロード

ヘッダーファイル Z_Match_FreqRang_0.hをダウンロード

         StepFreq_List_1.hをダウンロード

         Font9.hをダウンロード

         Font12.hをダウンロード

Atchcontpannel

電源SWを入手できましたので、通電出来るようになりました。 使った感じでは、少々重さがたりませんね。プッシュSWを押す時、左手でケースを押さえていないとコケそうです。
 

このATUには3種類のアンテナを使い分けるアンテナセレクターは付いていません。 アンテナセレクターは別BOXとしてマストに括り付けます。

 

INDEXに戻る

2024年11月 3日 (日)

LCD NFP190B-21AF PICで表示

TFT LCDはaitendoから仕入れる事が多かったのですが、理由はPICでドライブできそうな情報が見つかりやすかった事です。 最近3Dプリンター用の部品をAliExpress経由で買う事が多くなり、その中で、かなり安価なTFT LCDも見つける事ができます。 ただし、ここでの買い物は商品説明も少なく、またWEB上でも使い方を公表しているブログも少ない為、二の足を踏んでいましたが、SPI仕様で700円台で手にいるNFP190B-21AFというLCDが目に留まり、ST7789でドライブしているとの事。 同じSPIドライブですがIC名はST7796というGMT024-08-SP18Pという品番のLCD各1個を入手しました。

過去、ST7789をドライバーに使ったLCDは使用した事は有りませんでしたが、コマンド系がST7735とコンパチのILI9163CによるLCDは沢山使ってきた関係で、情報が少なくても、動作出来るかも知れないと購入しました。

事前にドライバーICの仕様書を入手し、すでにPICで実績のあるプログラムと同じで有る事を確認できましたので、実際に試作開始してから2日目にはグラフや文字の表示が出来るようになりました。

以下、その時の配線図とPIC用のプログラムを紹介します。

プログラムの検討はNFP190Bにて始めました。 LCDに表示するのは文字とグラフィックを含めた静止画ですから、LCDのイニシャライズも必要最低限にとどめています。

Nfp190b_1

左が、ディスプレーが成功したサンプル画面です。 新しいLCDの表示テストを行う時、RGBの構成が仕様書と異なる問題に遭遇しますが、今回も、仕様書上ではRGBの順序でカラーコードを設定するように書いてありましたが、実際はRBGの順序でした。 しかもこのLCDドライバーはRBG「255,255,255」が黒色で「0,0,0」が白色になっており、過去のどのドライバーと比較して正反対でした。 データシートを詳しく見てみると、縦長に置いた状態で上から、左からのスキャンなら、通常のRGBですが、横長に置いた時のスキャンモードなら、このようになるみたいです。  また、LCDのピクセル構成も書いた資料が無く、表示が出来るようになって調べたら320X170ピクセルというLCDでした。 しかもYのレンジは35から204までの上下をカットした配置となっていました。 ピクセル単位で描画する時は要注意です。

下は、検討用に製作したPIC18F14K50を乗せた実験基板と実験中のLCDです。

Nfp190b_2

配線図は以下の通りです。 インターフェースがSPIですから、回路図は単純です。 ただし、応答速度はパラレル接続より目に見えて劣ります。 デバッグが完了したらクロックの限界を確かめる事にしますが、今は1MHz以下での検討です。 このドライブ操作を高速にするため、SPIのSSPBUFにデータを書き込んだ後、2usecのディレーを設けていますが、これを1usecにした途端LCDは表示しなくなります。 2usecと1usecの間に動作OK/NGの境界線があるのですが、それがいくらなのかは判りませんでした。 ただし、このディレー時間はクロック周波数にも大きく関係しますので、最初は20usecくらいに設定して置き、うまく表示できるようになりましたら、次第に小さくして、NGになる時間を見極めた後、その時間の2倍くらいに設定するのが良いようです。

Nfp190b_schema

テスト用プログラム LCD_NFP190B_test.cをダウンロード

テストに使ったフォント Font6.hをダウンロード

上のプログラムはNFP190B用ですが、ピクセルサイズを320X240としたGMT024用に修正した時の表示画面は以下のようになりました。

Mt02408

所で、XC8でconstを使ってデータをプログラム領域に埋め込もうとしますが、全部RAMエリアに配置されすぐに満杯となりエラーになります。 PIC24Fでは32Kバイトを超えるデータをプログラム領域に配置できたのに! WEBをぐぐるとXC8でのconstは256バイト以下に限るとの情報が見つかりました。 グラフィックを仕込めなかった原因はこれですね。 

色々情報が得られたところで、通常のGIF画像のカラー情報をそのまま表示できる仕様に変更しました。 カラー構成は「RGB」とし、黒色は「0,0,0],白色は「255,255,255」としたプログラムに書き替えました。

また、SPIのクロックの最高周波数の見極めができましたので8MHzに設定してあります。 

修正したプログラム LCD_NFP190B_test2.cをダウンロード

使ったフォント Font7.hをダウンロード

このプログラムで表示した状態は以下です。

Nfp190b_3_2

さらに、GIF画像の表示にトライしました。 320x240ピクセルの画像データをPICで扱えるフォームに変換したのですが、メモリー不足でエラー。240x180ピクセルもエラー、やっと160x120ピクセルのデータなら、なんとかPIC24FJ128GB106のデータメモリーの中に納まりましたので、ひまわりの写真とペナン風景を160x120の画像に縮小し表示にトライしました。

Himawari160x120

Penang160

最初、LCDを横長にして、表示にトライしましたが、カラー画像がどうしても再現出来なく、困りはて、LCDの標準置きとなる縦長にし、かつ、カラーモードを6-6-6bitの18bitモードしして、やっとオリジナルのカラーモードに設定できました。 その後で横向きにしてもちゃんと色を再現しています。 ただし、元がGIF画像ですので、色は最大で256色しかなく、このふたつの画像とも256色中の110色くらいでしか描画していません。

この画像は、PC上で表示されたGIFの画像のピクセルデータを読み取り、一度6-6-6bitのカラーデータに変換した後、互いに異なるカラーコードに連番のindexを付け、各ピクセルに対応するindexとindexが対応するカラーコードのみをPICのデータメモリー(const指定なので、実際はプログラム領域に配置されている)を確保し、パレット方式と呼ばれるこのカラーコードを6-6-6bitのモードでLCDメモリーへ転送したものです。 左の写真では、かなり粗く描画されているようですが、実物を目で見た場合、結構綺麗に再現しています。 今後、サイズの大きな画像表示にトライする事にします。 

GIF画像表示のプログラム GIF_display_test3.cをダウンロード

GIFピクセルデータ penang160_data.hをダウンロード

GIFカラーコード penang160_cord.hをダウンロード

実験用配線図 LCD-TEST_pic24FJ.pdfをダウンロード

配線図にはSDカード用ソケットも描かれていますが、まだソフト上では対応していません。

 

このLCD表示装置にSDカードを接続し、SDカード内のbmpファイルをLCDへ表示する為の準備を始めました。

  

INDEXに戻る

2024年10月30日 (水)

Z-Match ATUの製作 2

カテゴリ:オートアンテナチューナー(ATU)の製作

最初に手配した80歯のタイミングプーリーの直径は用意したケースの内寸以内だったのですが、バリコンの最大容量を検出する為に用意したフォトセンサーの遮蔽体がケースの内寸をオーバーし、天板を取る付けられないという問題がありました。(前回記事) この時のタイミングプーリーの直径は55mmでしたが、フォトセンサーの遮蔽体の直径は73mm必要となる事を見落としていたのが原因でした。 対策として60歯のタイミングプーリーに交換する事にしました。 60歯のプーリーの直径は44mmでこれにフォトセンサー用の遮蔽体を追加した時の直径は62mmとなり、なんとかケースの内寸に収まります。 この変更が可能になる条件はステッピングモーターの1/4マイクロステップが解決しました。 従来の80歯のプーリーの場合、モーターは1.8度の1/4(0.45度)刻みで回転しますが、バリコンはタイミングプーリーの減速比 1/5で0.09度刻みで回転します。 この0.09度刻みはベルトのバックラッシュで吸収されてしまう角度で実質3ステップとなる0.27度が最小分解能でした。 今回60歯のプーリーを使えば、その減速比は1/3.75となり、VCの最小回転角は0.12度となります。 ただし、ベルトのバックラッシュを吸収できるステップではないですが、この2倍の0.24度ならほぼ確実にバックラッシュを超える事ができます。

以上の考察からプーリーとベルトを変更する事を決断し、かつ、ベルトのたるみの調整機能が無かったシングルバリコン側にもその調整機構を追加します。 

下の写真は60歯のプーリーに交換し、かつそれにマッチしたベルト掛けを行った状態です。

60t_pully_1

60t_pully_2

上の写真はベルトの張力調整を兼ねたバリコン軸のタワミ補正治具(左側)を取り付けた状態です。

 

60t_pully_3

フォトセンサーの出力がリンギングして、誤動作する為、コンデンサを追加して、動作の安定化を行いましたが、その時のコンデンサの容量の許容誤差の範囲が狭いという問題がありました。 そこで、このフォトセンサーの仕様書を入手して確認したところ、標準の使い方はエミフォロ回路で有る事が判りました。 そこで、エミフォロ(エミッターに負荷抵抗を接続した正式名称 エミッターフォロワー回路)に改造すると、きれいなスィッチング波形が得られました。コンデンサは無くてもOKなのですが、前回追加した0.1uFのままで進行します。 ただし、この変更で論理も逆転しますので、プログラムも修正しました。 そして、マイコン基板を接続し、やっと前回の80歯の時の動作まで再現できました。

ここから、いよいよ本命である自動整合機能の検討に移る事が出来る様になりました。

MAIN Unit 回路図   zmatch_atu_main1.pdfをダウンロード

コントローラー回路図 Z-Match-ATU_contoroller-1.pdfをダウンロード

ATU本体のプログラム Z-Match-ATU-main_02.cをダウンロード

ここにアップしましたプログラムは開発途中のもので、自動整合システムはまだ稼働していません。 唯一完成したのが、1/4マイクロステップで動作するステッピングモーターの台形駆動システムのみです。

  

最初にSWR計の動作チェックを行いました。 7MHzで動作チェックしようと、FTDX101Dをつなぐと、すごい受信ノイズです。S9あります。 最初、何のノイズか判らなかったのですが、ステッピングモータードライバーのPWMが原因でした。 以前、アンテナワイヤーをドライバーICに近づけるとS7のノイズが出ていましたが、アンテナ線を離すと、距離に応じてノイズは小さくなり、1mも離すと無視出来るくらいになりましたので、ここまでひどいとは考えていませんでした。 この状態ではアンテナチューナーとしては使い物になりません。 完全な致命傷です。

解決策があるのかを含めて再検討必要です。

INDEXに戻る

2024年10月 6日 (日)

Z Match ATU コントローラー

カテゴリ:オートアンテナチューナー(ATU)の製作

ATUの本体(Main Unit)のステッピングモーターの初期設定や、プリセットした位置にバリコンを回転させる機能は完成しましたが、自信でSWRを測りながら、SWR最小ポイントを探すという本来のプログラムは全く手が付けられていません。 理由は、ATUをコントロールするコマンド送出手段やATUの状態を手元で確認できる手段が未完成だからです。

そこで、ATUのメインユニットの開発は、途中で止めて、コントローラーの制作にかかる事にしました。 コントローラーとして完成度の高いのは前回製作し現用中のバリコン式T型ATUですが、マイコンが古くて、そのまま利用する事が出来ません。 従い、さらにそれより前のリレー式ATUのコントローラーのプログラムをコピーして、周辺機器の機能はリレー式のプログラムから、動作の基本はバリコン式のプログラムからコピーし、コンパイルすると、エラーばかりのプログラムでしたが、約1週間、奮闘した結果エラーも収まり、ATUに向かってコマンドを送る事が出来るようになりました。

Zmatch_controller_0

上のボードはいつもの仮パネルにより動作確認できるように組んだコントローラーの全体です。 

Z Match ATUコントローラー配線図 Z-Match-ATU_contoroller-0.pdfをダウンロード

コントローラーとATU間の通信確認をしましたが、さっぱり通信出来ません。 UART通信の初期設定に帰って原因を確認していますが、どうも送信時のP-MOSのスイッチングスピードに問題が有りそうです。 デジタルオシロで観測するとパルスのデューティが変わっていました。 

Flistinitcomp1

そこで、PICKit3の修理に使った+/-50mAの出力能力がある74LVC1T45というラインドライバーに変更し、このドライバーの極性に合うようにUARTの送信極性も変更すると、晴れて双方向通信が出来るようになり、コントローラーから周波数リストをメインユニットのEEPROMに書き込めるようになりました。ここまで1週間かかっています。

双方向通信が可能になった最初の機能追加は、マニュアルによるバリコンのアップダウンです。キーのチョン押と連続押に対応して、バリコンが回転できれば、ATU化する為のアルゴリズムを突き止める事ができます。 チョン押の時のバリコンの回転角度は後で好きなように変更できますが、この機能が完成するまで3日間かかりました。

このマニュアルでバリコンを回転させる時、29MHzでキーのチョン押を行うと、SWR最小ポイントを飛び越していく事が判りました。この実験の時のモーターの回転ステップは1回のチョン押で10ステップでしたので、飛び越しが起こらないように1回のチョン押で2ステップしか回転しないようにすると、バリコンを180度回転させるための時間が10秒以上かかってしまいます。 特に1.8MHzの時のシングルバリコンのSWR変化率は29MHzのダブルバリコンの1/10くらいしか無く、2ステップのモーター回転ではSWRはほとんど変化しなく、自動整合の時間が大幅に長くなってしまいます。 そこで、シングルバリコンとダブルバリコンのチョン押時のステップ数にも差を設ける事にしました。 

その後の検討で、このシングルバリコンとダブルバリコンのステップ差は無しにし、最小ステップは2という事で落ち着いています。 代わりに、チョン押のとき2stepと8stepを切り替えるスィッチを追加しました。

ここまでソフトが出来た時点で、一旦、ATUを分解し、バリコンプーリーを80歯から60歯に変更し、バリコン最大容量検出用のフォトセンサー回路と位置を変更し、ATUの天板をかぶせる事が出来るようにします。 このプーリー変更に伴い、タイミングベルトも交換になりますが、プーリーを変更して、ベルト長を実測し、中国の販売店に注文しました。 注文して5日後にベルトが到着しましたので、その日の晩に交換作業を行い、実働テストまでこぎつけました。

 

INDEXに戻る

2024年9月22日 (日)

Z-Match ATU 製作開始

カテゴリ:オートアンテナチューナー(ATU)の製作

Z-Matchチューナーに必要な高耐圧2連バリコンを実現する為、シングルバリコン2個をステッピングモーターで同期駆動するバリコン駆動機構が完成しましたので、これをATU化する為にケースインしました。

Zmatchatu_system1

モーター駆動バリコンに初期化位置検出用フォトセンサーを追加して、バリコン機構は完成です。 SWRを検出するCM結合器も追加しました。 今回、ケースとしてコメットのCAT-300のキャビネットをつかいますが、コイルがオリジナルのサイズではどうしても収納できなかったので、直径を57mmから47mmに変更しました。さらに高さを抑える為に銅線の中心ピッチを6mmから4mmに変更し、ほぼ同じ巻き数で同等のインダクタンスが得られるようにしました。このピッチを狭めた事により銅線間のショートの可能性が発生しますので、オリジナルではコイルサポートが2か所でしたが、これを4箇所に増やしました。 この絶縁材のサポーターは、100均の板厚3mmのまな板で作りましたので、銅線を通す穴径は2.2mmとして、前回より簡単に作成できました。 このケースの中には、2次コイルに直列に入るコイルと1.8MHz対応のコンデンサ追加の為のリレーはまだ実装しておりませんが、そのスペースは確保してあります。 ATUとして動作させるためのコントロール回路はこのケースの外側に小さな金属ケースを取り付けその中にマイコンを実装した基板を収納させます。 モーターを配置するスペースが無く、やむなくふたつのモーターを縦に重ねたところ、ケースの天板が当たります。 最終的には当たっているコネクターの向きが横になるようにモーターの取り付けを90度回転させ、リード線が隣のバリコンに当たらないように線処理するつもりです。また、モーターを固定するアングルもカットします。

Main Unit 配線図 zmatch_atu_main0.pdfをダウンロード

配線図はVCのモーター駆動に関する動作は確認済みです。 nEN端子にSWを設けたのは、頻発するプロググラム書き換え時、モーターが勝手に起動するのを防ぐ為、プログラム書き換え中、モーターをOFFする為です。

ATU本体と基板全ての配線が完了し、動作チェックを行った後、マイコンソフトの開発に取り掛かります。

ATUの開発も初期のバリコン式ATUから数えて4回目になりますので、結構ノウハウも溜まってきて、このATUのMainユニットには操作キーは1個もありません。 Mainユニットの基本ソフトができたら、すぐにコントローラーを作成し、全ての操作はコントローラーから行います。このため、UARTの通信速度は9600ボーに設定し、Mainユニット内の情報を出来るだけ早くコントローラーの表示器に表示する事を目標とします。 今までは、Mainユニットの中にプリセットコールが有効なBand分割を予めプログラムしていましたので、アンテナを実際にアップした時、周波数分割が実態と合わなくなる事がありました。 周波数変更してもSWRの変化が少ない場合、問題ありませんが、隣の周波数帯に移る前にSWRが1.5を超えるような場合、ATU本体を一度降ろして、周波数分割データを書き換える必要がありました。 今回のATUより、この周波数分割データをコントローラーから書き換える事が出来るようにします。 

ATUの実装状態として、このATUはベランダに置き、出力は平衡出力Onlyとします。 そして、実際のアンテナの給電点まではラダーラインで給電し、マスト上に括り付けたアンテナ切り替え器にて、ループや垂直、ロングワイヤーの選択が出来るようにします。 この構造により、マスト上のBOXはアンテナ切り替えのリレーだけとなり、小さなBOXに変更して風圧を軽減できます。 また、ATUのメンテも楽になります。

 

製作開始してから1週間、やっとメインユニットの基板が完成しました。

Zmatchpcb1_3

まだ、電源系統の確認が終わったばかりですが、以降実際にソフトを作成し、まずは各バリコンが予想通り動くかの確認になります。 すでに無負荷での動作確認は、前回の記事で紹介しておりますが、負荷がかかった状態で夏冬の環境でも動作出来る条件の確認が必要です。 それを実験出来るような恒温槽はありませんので、ある程度の余裕を見て、最低電流の値を決定する事になります。 このへんは決まった計算式がある訳でもありませんので、かなりいい加減なあてずっぽで決めます。

とりあえず、ふたつのモーターが動作するようになりましたので、2連VC側のモーターが正常に動作する最小電流を調べてみました。75mAで誤動作が起こります。100mA、室温26℃では異常なしでした。 余裕をみて、250mAで電流制限をかける事にしました。 シングルVC側も250mAに設定しました。 以降、この状態で運転し、不都合があれば都度最適値に修正する事にします。

次に、電源投入したら最初にモーターの起点を初期設定します。 やり方はバリコンの位置がマイコン上から不明の状態ですので、まず、正回転(容量が抜ける方向CW)へ360度回転させ、フォトセンサーがOFFからONになる所見つけて一旦停止した後、同じ方向に25度だけ回転させ、次に逆回転(CCW)させ、フォトセンサーが容量最大位置でONになるのを検出したら、その位置で停止し、この位置をゼロとし、180度の位置(容量最小位置)を500と定義します。 このイニシャル動作時、モーターは1.8度ステップ、200Hzのクロックで回転します。 この200Hzはマイコンの中のクロックの事で、モーターのパルス周期(PPS)はこの半分の100PPSとなります。 このイニシャル動作の最初の回転の時は、バリコンの現在位置が全く判りませんので、360度回転させ、VC最大容量付近で停止させ、そこから、本当のゼロ番地を探しにいくのですが、何回もテストしていると、容量最大では無く容量最小位置に止まる事が頻発しました。 ソフトの作りが悪いのかと1週間近くああでもないこうでもないとやったのですがうまくいきません。 とうとうハードの部分まで疑いデジタルオシロをつないで、フォトセンサーの出力をモニターすると、ONの時は問題ないのですが、OFFのとき、電源電圧をフルスィングするほどのリンギングが出ており、このリンギングのバラツキで誤動作する事が判りました。対策は、コレクタ抵抗を12Kから120Kに変更し、かつコレクタとGND間に0.1uFのコンデンサを追加する事で解決しました。 しかし、このコンデンサを0.047uFまで小さくしたり、0.22uFまで大きくすると即誤動作しますので、最終的には温度変化を含めてカットアンドトライが必要になるかも知れません。(配線図は修正済み)

この最初のモーター回転時、数100msec後に一旦モーターが停止し、またすぐに回転を始めますが、この時間がランダムで変化し、時には一時停止しない事もあります。 原因が判らないので、ダミーで45度くらい回転させた後、VCの容量最大位置を探すようにしました。 また、この容量最大位置を探す時は逆方向(CCW)で行うとイニシャライズ時間が短くなる事が判りましたので、モーター回転方向も変更しました。

次に、ラストデータとして記憶されているふたつのVC位置を読み出し、その位置にVCをプリセットして、初期設定完了です。 このプリセット時は通常回転ステップとなる1.8度の1/4(0.45度)、400Hzのクロック(200PPS)で動作します。 180度の位置は2000ステップ目となります。 バリコンの回転速度は、前回作成したT型ATUのVC回転速度と同じくらいです。 しかし、何回もテストを行うと、正転と逆転の時のバリコンの回転角度が一致しません。 脱調と呼ばれる現象らしいのですが、その原因はモーター電流や、ステッピング周期に関係があり、かつモーター自身の個性とドライバーのアンマッチなど調べれば調べるほど心配ごとが出てきます。 今回の脱調の原因は電流ではなく、ステップ周期でした。400Hzクロックのとき脱調が起こり、200Hzでは起こりません。しかし、200Hzで1/4マイクロステップでは時間がかかり過ぎます。 モーターの仕様書では無負荷状態で、最大起動レートは1000PPS以上となっていますが、負荷をかけた場合どのくらいになるかは判りません。 これは実際の負荷で限界値を調べるしかなさそうです。 今後さらに脱調対策を進めていきます。 ここで台形駆動という方式について勉強しました。 高速でモーターを回転させたいときは100ppsくらいでスタートし、徐々に回転数を上げ、最高速度で一定期間回転させた後、目的の角度に近づいたら逆に徐々に速度を落とし、100ppsまで落として停止させるのだそうですが、それをC言語で組んでトライする事4日間。やっと最高速度400ppsまで実現できました。 

この1/4ステップで400pps駆動中の騒音は1.8度基本ステップで駆動中の騒音に比べ、大変静かです。 そこで、電源投入直後のイニシャライズも1/4マイクロステップで実行してみました。 方法は、VCの容量最大位置を検出し停止したら、この位置を仮の原点として、CW方向に100ステップ(VC角度で9度)回転させた後、1.8度ステップでCCW方向に回転させ、停止した位置を真の原点とします。 このやり方の場合、騒音がうるさいのは真の原点を見つける時の9度の回転だけですから、大幅な静音化が実現できました。 しかし、この動作は電源OFFの期間が3分以上あるときだけで、数秒から3分以内のOFF時間では、最初の1/4マイクロステップ動作がうまくいかず1.8度ステップで回転する時間が長くなります。 原因は電源回路に2200uFの電界コンデンサが2個挿入されており、電源OFF時この電解コンデンサの放電が遅く、モータードライバーがリセットされないことのようです。 ICの説明ではSTANBY端子をLOWからHIGHにした時RESETされると書いてありますが、RESETされるのは一部のみで、IC全体がRESETされるのではないようです。 対策として、なるべく早く放電するように電界コンデンサの両端に1.5KΩの抵抗をパラ付けしました。 この結果、電源OFF後、5秒以上経つとICがRESETされるようになり、正常にイニシャル動作を行います。

ATUとしての組み立て、配線が完了しました。 いざ、天板を取り付けようとしたら、フォトセンサー用の遮蔽板も天板に当たります。 これが判った時点で、天板を取り付けるのは一時諦めたのですが、前述したモーターのコネクタの高さ変更が一応できましたので、プーリーの径を小さくして天板がかぶるように検討するつもりです。

マイコン基板の中に、12Vから6Vを作るDCDCコンバーターをマウントした為、この基板を収納する金属ケースの蓋も取り付けられません。 これより小さなサイズのDCDCコンバーターは沢山あるのですが、スィッチング周波数50KHzというコンバーターはこれしか無かったので、やむなしです。 小型のDCDCコンバーターのスィッチング周波数はMHz帯のものが多く、アンテナのそばに置く事が出来ません。 リレー式ATUやバリコン式ATUの基板はオープン状態でも問題なかったので、とりあえずこのまま行きます。 多分シールドは不要と思われます。

Zmatchpcb2

Zmatchatu_system3

Zmatchatu_system4

Zmatchdcdc2

ステッピングモーターのドライバー回路はモーター停止中もPWM制御による電流制限回路が動作し、ノイズを発生させます。ATUという装置はアンテナ直下もしくはアンテナの一部に組み込まれるものであり、ノイズの発生は厳禁です。 現在、DCDCコンバーターのサイズが大きすぎてドライバー回路を収納している金属ケースの蓋が閉める事が出来ません。 これが原因で受信時に問題が生じてもこまりますので、ノイズの少ない小さなDCDC電源を再度探す事にします。 すると、アマゾンで65KHzスイッチングのDCDCコンバーターが見つかりました。 6個まとめて690円くらいで出ていましたので、これを手に入れ上の写真のように交換しました。 HF帯へのノイズはまだ確認できていませんが、多分OK?。また、バリコンの金属軸とつまみを絶縁する為に、バリコンのシャフトはプラスチックの丸棒を継ぎ足してありましたので、これにプーリーを取り付け、タイミングベルトを張ると、ベルトの張力でプラスチックの軸が曲がってしまいました。 対策として、軸の先端の位置を固定するプラスチックの板を取り付けました。

ATUの配線は完了したので、モータープーリーを指で回し整合テストをやってみました。一応3.5MHzから29MHzまで10Ωから200Ωまでの純抵抗負荷に整合させる事はできました。 2連のバリコンはかなりクリチカルで、1度くらいの角度でSWR1から3くらいまで大きく変化します。 一応設計上は0.09度ステップでバリコンは回転しますが、ベルトにバックラッシュがありますので、それがどのくらいになるかは判りません。 この課題は、早くコントローラーとメインユニットのプログラムを完成させ、確認するしか有りません。

10月の下旬に差し掛かりましたが暑い日が続いています。 ATUのバリコンをコントローラーからリモート操作する事が出来るようになりました。 アンテナ端子に50Ωのダミー抵抗を繋ぎ、アンテナアナライザーでATUの整合テストをマニュアルで行ってみました。 キーのチョン押で10ステップ変化するようにソフトは組んであります。1.8MHzや7MHzは全く問題有りません。なんなくSWR1.01程度まで合わせ込みが出来ますが、29MHzではチョン押しでSWR最小ポイントを飛び越えてしまいます。4ステップくらいがちょうど良さそうです。

以後、ひとつの機能を追加する度にATUユニットとコントローラーを交互に開発しながら進める事にします。 コントローラーの設計と製作は次のページにあります。 

 

INDEXに戻る

2024年9月 8日 (日)

モータードライブバリコン機構(Z-Match ATU)

カテゴリ:オートアンテナチューナー(ATU)の製作

前回の記事はこちら

バリコンをステッピングモーターで駆動するメカニカル構造の設計を行い、入力の単バリコンと2連バリコンのドライブ機構の構想が完成しました。

Zmatchayu_motor_system1

タイミングベルトの長さは9.6cmくらいから350cmくらいまで販売されており、20cm程度の長さの場合2mm刻みで、30cm程度の長さの場合、4~6mm刻みで販売されていますが、その長さがどこの寸法なのか判らないので、とりあえずベルトの内周寸法と決めて中国のメーカーに発注しました。このベルトも5日間で届きました。 ベルトの価格と送料が別に表示されていましたので、それを合計しても国内で買うより安いです。 いざ、最終金額を計算すると、2本買ったら送料も2倍になるらしく、製品の価格の一部を送料に上乗せし、製品がいかにも安く見えるようにインターネットで表示する通販の常とう手段でした。 このベルトが手に入りましたので、36度の気温の中で汗だくで作業を行い組み立てたモータードライブ機構が下の写真です。

Zmatchayu_motor_system2

Zmatchayu_motor_system3

アルミアングルの穴あけ精度が悪く一部のアングルは傾いていますが、なんとか完成しました。 ただし、買ったベルト長が短い時は対処のしようがないので、若干長めに長さを決め注文したのですが、ご覧のとおり、たるみだらけです。 張力の微調整の方法は考えてあるのですが調整範囲を超えてしまいまいそうです。 張力調整のアイドラーを入手できましたので、確認してみると、案の定、微調整範囲を超えてしまい、ふたつのベルトとも短い寸法のものに交換が必要になりました。 新しいベルトの寸法は短い法で2mm刻みで3種類、長い方はいきなり8mm短いベルトを発注しました。 短いベルトは秋のキャンペーン中という事で1本140円(送料無料)、長い方はキャンペーンが無く送料込みで1500円くらいでした。

注文してから4日後には届きました。 短い方は3種類の長さの中間の1本が、長い方は指定した寸法が1種類のみでしたので、予め用意していたアイドラの高さ調整範囲に入り、2mm厚のスペーサーを挟む事で最適となりました。 下の写真は最終調整状態です。 ところで、長い方は同じものが5本届きました。 どうも私が5本まとめ買いになる事を見逃したみたいです。 ちょっと高いなあと思っていましたが、私のミスでした。

Zmatchayu_motor_system4

ここまで出来ますと、次は駆動回路を含めたATUの回路設計に移ります。

 

 

INDEXに戻る

2024年8月26日 (月)

Z-Match ATU ステッピングモーター

カテゴリ:オートアンテナチューナー(ATU)の製作

前回の記事はこちら

バイポーラステッピングモーターとモータードライバー及び5V2AのDCDCコンバーターがそろいましたので、初めてのステッピングモーター動作確認です。 確認する為に、まずPICでモータードライバーのテストプログラムを作ります。

テスト回路配線図 steping_motor_test.pdfをダウンロード

テストプログラム STEPPING_MOTOR_Test.cをダウンロード

実際のATUの場合、EEPROMが1Kバイトは必要になりますが、手持ちが無いので、NB-ATUのコントローラーに使っていたPIC18F25K42でテスト用のプログラムを作り、モーターを思うようにコントロールできるかどうかのテストです。 テストプログラムはTimer1で周期的な割り込みを発生させ、割り込みが発生する度にモーターのSTEP入力を反転させます。 反転周期の2倍がワンクロックとなりその逆数がクロック周波数となります。実験ではクロック周波数100Hzで行いました。 またこのSTEP入力は常時LレベルでMOTOR ON SWを1回押すと、指定したパルスの数だけクロックが発生し、最後にLレベルで停止するようにソフトを組んであります。 ソフトの行数が多いのはMOTOR ON SWのチャタリングを除去する為の処理です。

17hs3401s

上の表に出てくるモーターの型番の最後にSの文字が付きませんが、この実験で使用しているモーターの型番は17HS3401Sで、中文で書かれた仕様書では、定格電流1A, 定格電圧7.3V、コイル抵抗3.4Ω となっており、他の解説資料に書かれている、定格電圧=定格電流xコイル抵抗 の定義に合いません。 そこで電圧3.4Vの電源と電流リミッターを0.25Aに設定して、テストを開始しました。 基本となるワンステップ1.8度の回転は成功しましたので、次は基準の1/2となるワンステップ0.9度にトライ。 ところが、うんともすんとも言わず全く動きません。 配線がわるいのかと全接続をチェックしましたがまったくダメ。 電流制限を1Aにしてもモーターが起動しません。 試しに1/4はどうかとテストすると、やはり起動しませんが、電源OFF状態でモーターのローターを何度分か回転してやると回転を始めます。一度回転を始めて、止めてまたONしてもちゃんと回転します。 起動トルクは1/2ステップより1/4ステップの方が大きい様です。 従い、以後、1/4ステップのみで実験を継続する事にしました。

そして、確実にモーターが起動する為には、モーター電圧は5V以上、電流制限は0.75A以上の設定が必要という事がわかりました。 安定してドライブ出来る為にはモーター電圧6V、電流制限1Aとし、モーター回転中、及び停止中の12V電源の消費電流は0.45A程度で有る事が判りました。 この状態は、ステッピングモーターの解説書にある定格電圧の2倍くらいの電源電圧に設定し、電流を定格以下で使うという説明にはまだ合致しません。さらに停止中は電流制限を0.2A程度まで落としても、静止トルクは指では回せないくらい大きい状態で、この時の12V電源の全電流は100mA程度になりました。 この静止トルクを維持出来る最低電流は再検討する事にします。

この実験の中で、得られたその他の情報で重要なのが、電源OFF時の停止位置と電源ON時の起動位置の誤差でした。1.8度ステップ以下のステップの途中で停止したモーターは電源をOFFしない限り、停止した位置から起動しますが、一度電源をOFFすると、静止トルクは無くなり、一番近い1.8度の停止角度の位置に移動してしまいます。 次に起動するときは、電源OFF前の位置からずれた角度位置から起動する事になります。 この事は、電源を再投入する毎に機械的位置のイニシャライズが必要であると言う事です。 これは、バリコンの最大容量または最小容量の位置を電源ONする度に何らかの手段で検出し、その位置をゼロ番地として回転ステップ数を刻む必要がある事になります。 さらに、このイニシャライズ動作時は基準ステップ(1.8度)で駆動しないと駄目だという事も判りました。

ATUの電源をONにしたらその後電源を切る事ができませんので、モーターSTOP中の電流を最低レベルに切り替える回路を追加必要です。 さらに、モーターがSTOPする度に、現在位置をEEPROM上に記憶させて置かないと、電源OFF後に前の状態に復帰出来ないという事になります。 さらに、受信中も電源をOFFできないので、この間に発生するノイズも確認しておかねばなりません。 モーター駆動中はPWM電流でドライブしていますので、それ相当のノイズが発生するとは考えられますが、モーターOFF時の電流制限もPWMで行っているので、ノイズは消えません。 いずれにしても、事前確認が必要です。

Mdriver3

上の写真はテスト用のマイコン基板とモーター、DCDC電源、電流制限値(0.2x5A)を測りながらテストしている状態です。 電流制限は1Aですが、モータードライバーのパッケージを指で触ってもほんのりと温かいですが、ずっと触っていられる状況です。 メーカーの説明によると基板が熱伝導の良い金属製の基板に絶縁膜を作りその上に導体を印刷した構造の物で、基板自身が放熱板になっているとの事。さらにその基板に銅製の放熱板をハンダ付け出来るようにしてありますが、私が使うATUでは、追加の放熱板は不要です。 写真の基板上には配線図にない部品も映っていますが、NB-ATUのコントローラーで使用した部品がそのまま残っています。実際に配線されている部品は配線図通りです。

Mdriver2

左が、約1000円のモータードライバーですが、最初、この基板の裏表を間違って、ピンを半田付けしてしまい、一度半田付けしたpinを一本づつ引き抜いて再半田する羽目になってしまいましたが、壊れもせずにちゃんと動作しています。

テスト基板に直接ハンダ付けしてしまうと、本番の基板に移すのが大変ですから、ICソケットを用意して、抜き差し出来るようにしましたが、このドライバーに付属していたピンは太くてICソケットに挿す事が出来ませんでした。 秋月で手配した細いヘッダーピンがありましたので、これに交換して、写真のように実装出来ました。

 

モーター停止時のみ電流制限値を小さくする為、VREF信号が(2)ピンに接続されるよう基板の裏にあるショートパターンをハンダでショートしてあります。

モーター静止状態のロックトルクを確認しました。 制限電流設定で50mAでは手でモーター軸を回す事ができますが、100mAの場合、軸を回す事が出来ません。 設定は余裕を取って150mAとします。 この時の12V電源側の電流は25mAでした。 25mAはリレーを1個ONしている状態に等しく、電源的には全く問題有りません。 

次にノイズの確認です。 受信機のアンテナ端子に接続された同軸ケーブルの先端に50cmくらいのワイヤーを接続し、このワイヤーをモータードライバーのICの上に置いてみました。 すると、モーター停止中、回転中いずれも、SメーターがS8まで触れます。 最大の振れは28MHzでした。 ICとワイヤーの距離を30cmくらい離すとS3くらいまで落ち、1m離すとS1くらいになります。 モータードライバーの回路はシールドした方がよさそうです。モーター電源をOFF するとノイズは無くなりますが、1.8度の基準ステップ以下のマイクロステップモードで使う場合、電源OFFしたとたん、モーターの停止位置が一番近い基準ステップの位置に移動してしまうので、電源をOFF出来ません。

この実験の途中で新たな問題が発見されました。 モーターが回っていないときは電流制限を150mAに設定し、モーターが回り出す150msec前に電流制限を1Aに変更してもモーターが起動しません。 電源投入時点よりずっと電流制限1Aにして置き、一度モーターが回転したあと、停止した後で電流制限を150mAにした場合、次のモーターON前に電流制限を1Aに変更すると正常に動作します。 

このイレギュラーの動作を解消する為に、カット&トライを繰り返した結果、以下のシーケンスで完璧に動作するようになりました。ここまで判ったのが10月中旬の最後の金曜日でした。 モーター電圧は7.3V、電流の制限値は250mAです。

①マイコンICのSTEPパルス発生用のタイマーをOFFにする。

②電源投入直後nENをL(active)にして置き、STBYモードで1/4マイクロステップの設定を行う。

③10msec後にSTBYを解除して、さらに10msec待つ。

④以後、モーターを回す前に必ず該当するタイマーをONし、モーターをストップさせた時は必ずタイマーをOFFにする。

⑤1.8度の基本ステップで動作させたい時はMODE1,MODE2をLとして、1.8度ステップの動作が終了したら、設定済みのマイクロステップモードに戻す。

⑥以後、①から③までの処理は行わない。

これで正常に動きだしました。モーター回転中の12V電源の電流は150mA弱、STOP中は25mAです。 そして、このモーターの仕様書を目を凝らして読むと、どうもコネクターの並びが逆ではないかと疑いが生じました。

Driverconnector_1

そこで、コネクターを180度反転してみました。すると、1/2ステップモードでもモーターが回転するようになったのですが、ワンステップ1.8度のノーマルステップでした。その他に、1/8とか1/16を試しましたが、1/8と1/16は同じステップで1/16くさいです。 もしかしたらモーターの構造により、IC屋が意図したドライブタイミングの通り動作しない事もあるのかも知れません。 幸い、1/4ステップは正常に動作していますので、良しとします。

モーター停止時、電流制限を小さくする手段、nENを制御する手段を追加した回路図とテストプログラムです。

配線図:steping_motor_test_1.pdfをダウンロード

ソフト:STEPPING_MOTOR_Test_1.cをダウンロード

ここに示しました、モータードライブプログラムは、初歩的な動作確認用です。 実際に実用しているプログラムでは有りません。 もし、実用的なプログラム例が必要な場合このページを参照して下さい。

 

一応ステッピングモーターの動作確認ができましたので、バリコン駆動機構の設計にとりかかります。 このATUは中古のコメットのMTUのケース内に収納する予定なので、機構のサイズを含めて検討開始しました。

 

INDEXに戻る

2024年8月12日 (月)

Z-Match ATU

カテゴリ:オートアンテナチューナー(ATU)の製作

10数年前に、160m対応のATU候補として試作し、低インピーダンスのアンテナに対する整合テストを行い、ロスが多いと一度は諦めたZマッチアンテナチューナーでしたが、MMANAで計算しただけのアンテナインピーダンスは、実際のアンテナとかけ離れており、どんなに低くても実際の160mバンド用アンテナの実測値は12.5Ω以上になる事を実践的に確かめてきました。 もう一つの難題は高耐圧の2連バリコンの入手でした。 バリコンそのものが生産縮小され、価格も大幅に上昇していましたが、たまたま、コメットのMTUで使われている高耐圧バリコンを4個ほど入手できました。 これをステッピングモータとタイミングベルトで同期ドライブを行い、2連バリコンを実現出来る環境が整ってきました。 さらに、バリコンを使ったハイパスT型のATUにもトライしましたが、コイルのタップ位置で偽のSWRディップポイントにはまり、そこから抜け出せないという問題も有り、コイルのタップ選択が不要なZ-MatchアンテナチューナーのATU化に向け再検討する事にしました。

まず、Z-Matchの基本であるVK5BR OMの資料を読み直し、推奨するコイルの通り空芯コイルを製作し、ATU化する為の基礎データを取得する事にします。

Zmatchmtu

左の回路はVK5BRが推奨するZ-Match MTUのコイルとバリコンの配線図です。検討の都合でオリジナルの回路図に有ったL3は省略してあります。 このMTUの説明の中で、L2の底辺とL1の底辺はGND側で一致させるとありましたので、その通り試作しましたが、彼の資料の中にある写真ではGND側では無く、天面にL2を配置してありますので、もし、違ったら、写真のごとく、コイルを上下反対にすれば良い事なので、このまま行きます。

 

Zマッチチューナーの肝はコイルですから、VK5BRが推奨する線種、サイズ、形状のままでつくりますが、コイルを支える絶縁材は100均の5mm厚のまな板でつくりましたので、1.6φの銅線を通す、穴径は2mmでは難しく、2.5mmにしました。 また、最初直径50mmのパイプに、1.6φの銅線を16回巻き、これをカットした後、絶縁支持材の穴に銅線を押し込みますが、これが結構難しく、きれいな円弧状のコイルに仕上がりません。 結局、最後は板とコイルの間に直径25㎜の塩ビパイプを挟み、さらにL2とL1のコイルの間に5φのアクリル棒を差し込み、コイルの形を整えました。

Zmatchcoil1

Zmatchcoil2

右上は25φのパイプと5φの丸棒を抜き取った状態ですが、なんとか様になりました。

これを、木製のシャーシーに仮止めし、かつバリコンも仮止めして、配線図通り配線しました。 2連バリコンはまだ連動出来ていませんが、タイミングベルト、タイミングプーリーが入手できたら、連動させる事にし、それまでは、手で目見当で回転させます。 また、VC1はシングルで良いのですが、コメットのバリコンは2個連結されていますので、配線のみカットし、シングルバリコンとして使います。 最終的には、2個のバリコンを結合している支持材をカットしますが、今は写真の通りです。

構造が簡単ですので、配線も20分足らずで完成しました。

Zmatchmtu2

次はいよいよ整合テストです。

整合テストはまず7MHzでつまづきました。いくらやってもSWR1.8以下になりません。 色々試して判った事は、VC2を接続するコイルの位置は14Tでは無く、13.5Tに繋ぐとSWRが1.4まで下がるようになりました。 さらに、VC1のつながるコイルのタップ位置を10Tの位置から9Tに変更してやっと1.1まで下がりました。 この原因は、配線の長さも関係しますが、使用しているバリコンの最小容量が影響しているようです。 VK5BRオリジナルのバリコンの最小容量は20Pですが、コメットのバリコンは30Pでした。

ここまでやって、やっと3.5MHzから29MHzまで全部整合出来るようになりました。

次にバリコンのクリチカルの度合いですが、現在ステッピングモーターの候補は秋月で扱っているコパルの3度ステップ品を第1候補としています。 最近の3Dプリンターは1.8度ステップのバイポーラタイプのステッピングモーターが使われ、中華製に絞れば一番安価です。しかし、バイポーラタイプのステッピングモーターは低電圧大電流というドライブが必要で、専用のドライバー回路と専用のスィッチング電源を必要とし、アマチュアが1台限りで製作するには、かなり高コストになります。 アマチュアがシコシコと製作するには、最近あまり見かけなくなったユニポーラタイプのステッピングモーターが取り扱いが簡単なのですが、1.8度のユニポーラタイプはコパルの4倍以上の値段がします。

コパルのワンステップ3度のモーターの場合、5対1の減速比となるプーリーを使い最小ステップ角度0.6度になりますが、これで、ちゃんと整合できるのか心配になります。

実験した結果、一番クリチカルなバンドは28MHz帯でSWR1.01くらいから1度違えばSWR3くらいまで跳ね上がります。SWR1.5までを許容値とすると、0.4度くらいがリミットで、コパルの0.6度ステップは微妙という状態です。 コパル製は350円、1.8度のユニポーラタイプは最小ステップ0.36度になりますが、1640円。 

今回の試作機の場合、VC2とVC3の容量が一致した連動状態のままでは、SWR1.1以下の状態にならないバンドがありました。 12年前にラフに作った試作1号機ではこれほどのクリチカルさは無かったような記憶でしたが、バリコンは連動のままで整合できました。 そして、1号機の時にあった無負荷状態で整合してしまうという問題は再現出来ませんでした。 当時の1号機はQが低く、調整が楽だった代わりにロスが大きかったのかも知れません。 そこでよりQを高める為に、今回の試作機の配置を見直し、配線が最短となるように組みなおしてみました。

Zmatchmtu3

まだVC3への配線が長いですが、改造前より線長で50cmくらい短くなり、かつコイルの下にはGNDとなる銅箔シートを敷き、これにコイルやVCのGNDを落とすようにしたところ、コイルのタップ位置はVC1の接続位置が9Tになった以外、オリジナルの配線図の通りで、3.5MHzから28MHzまでVC2とVC3の角度はほぼ同じ状態、すなわち連動した状態で整合出来るようになりました。 

ステッピングモーターのワンステップの角度については前述しましたが、3Dプリンターにはなぜ1.8度のステッピングモーターが使われているのか調べてみました。 普通に考えたら、あの細かい造形を行う為には1.8度では粗すぎると思えるからです。

バイポーラタイプのステッピングモーターの場合、基準のワンステップ角度に対して、さらに1/2とか1/4の角度にドライバー側で設定できるという説明があります。バイポーラステッピングモーターに使われているドライバーユニットがモーター本体より高価な場合が多いのですが、このドライバーの中で細かく制御する事により、この基準の公称ステップ1.8度をさらに1/2とか1/4のステップに変更できるらしい。 最大で1/256まで可能という資料もありました。 以前はワンステップ1.25度とか0.9度とかのステッピングモーターが有りましたが、最近はほとんど1.8度に統一されているのもうなづけます。

この情報が判っていたら、3Dプリンターでは標準となっている3:1のタイミングプーリーより高価な5:1のプーリーを手配する事は無かったのに。

以上の経緯から、コパルや1.8度のユニポーラタイプを諦め、中華製の安いバイポーラステッピングモーターを2個手配しました。注文した4日後には届きました。2個で1900円弱でした。

このバイポーラタイプのドライバーは秋月で取り扱っていますが、モーターより高価(2台分で2000円弱)です。 中華製なら1台分、600円台であるのですが、使い方を説明した資料がありません。 秋月のドライバーの場合、メーカーのホームページに制御の仕方や発熱についての注意文などが有り、初めて使うには安心です。 そして、基準ステップ角の1/2から1/256までの設定方法も詳しく書かれていますので、中華製ですが、秋月のSTマイクロ製のIC品で進行する事にします。 ただし、基準の1.8度以下のステップにした場合、停止位置で通電を続けないと基準の1.8度の位置に戻ってしまうという情報もあります。 対策として、停止位置をキープする為に、運転中より低い電流を流し続けるというアイデアもあるそうですが、この現象がATUにどのような影響を与えるかは、作ってみないと判らないです。

モーターとプーリーが手に入り、図面化しないと、タイミングベルトの長さが決まらないので、ベルトの手配は最後になります。

また、1.8MHz対応は私のアンテナに合わせて、リレーで切り替える事にします。

 

ステッピングモーターとドライバーが入手出来ましたので、動作確認をしました。

 

INDEXに戻る

2024年7月22日 (月)

バリコン式ATU mark 2

カテゴリ:オートアンテナチューナー(ATU)の製作

新マルチバンドアンテナ用に製作したLDGのKT-100をベースとした、プリセット型ATUを使用して、リレーの接触不良をだましだまし1年間使ってきました。 しかし、この場に及んで、複数のリレーが接触不良を起こし始め7MHzや18MHzが整合しなくなりました。 簡単に整合するのは21MHzだけで、それ以外のバンドは何度も再チューニングが必要となっていました。 また、FT8を運用始めた事により、ATU内のコイルのコアが発熱し、SWRが悪化する現象から、出力を50W以下に落とす必要があるバンドもありました。 このKT-100は12年前に購入したもので、使用されている中華製のリレーなら、こんなもんかと諦めざるを得ません。

この状況から、昔製作して、廃棄処分予定だったバリコン式ATUを引っ張り出し、現在使用中のプリセット型ATUに改造できないか検討を始めました。

まず最初に、コンパイラーがV2.46になったXC8との闘いです。 今までのVC式ATUはXC8のV1.32でコンパイルされていましたので、V2.0から導入された大幅なコンパイラーの仕様変更に対応しなければなりません。 そして、プログラムを詳しく読んでいくと、なぜ、このようなフローにしたのか?と疑問が続出しました。 当時のプログラム開発能力は、やっとエレキーがバグ付きながら動かせる程度のレベルで、今見たら完成度が悪いですね。

今回、mark2化に改造するに当たり、操作は全てシャックに置いたコントローラーから行う事にし、ATU本体のキーもLCDの表示も廃止し、いくつかのデバッグ用LEDのみ付けました。 コントローラーとの通信はUARTを使い4800ボーのスピードで行います。

Vcatu_inside1

Vcatu_inside2


ATUの配線図 VC_ATUmk2_main_V09.pdfをダウンロード

コントローラー配線図 VC-ATUmk2_contoroller_V09.pdfをダウンロード

以前のATUから改善したポイントは以下です。

・回転角を読み取る可変抵抗は270度回転しますが、バリコンは360度以上回転しても、実際に使用出来る範囲は180度です。 この為、モーターが暴走し、可変抵抗のストッパーに当たっても、モーターが止まらず、ギア飛びをおこしていたので、この部分の制御を一からやり直し、考えられる全ての異常動作が発生しても、可変抵抗器のストッパー超えが起こらないようにしました。(したつもり)

・従来のコイルのタップ位置はMTUの仕様にならい周波数に依存するように選択し、それから外れた時は上下の隣のTAPに移るという動作でしたが、実際のアンテナの場合、インピーダンスが低いときなど、大きくずれますので、まず最初に、SWRが最小となるTAP位置を決めてから、VCでSWRのサーチを開始する事にしました。 しかし、VC角度により、SWR最小のTAP位置は異なり、マイコンでは最適値を探す事はできませんでした。 やむなく、デフォルトのTAP位置を5と仮設定し、SWRが1.2以下にならないときはマニュアルでTAP位置を探す事にします。 この場合、SWR最小のTAPが最適とは限らず、TAPだけ切り替えて、SWRが最低となったTAP位置が7で、SWR最小値は1.6にしかならず、一つづつTAPダウンっしてSWRが1.1以下になったTAP位置は4だった事もあり、自動でディップポイントを探すのは不可能と悟った次第です。

・モーターギアのバックラッシュの為、VCの停止位置と可変抵抗の停止位置がぴったりそろわないという従来からの欠点を補う為に、VCの角度も、マニュアルで動かす事が出来るようにし、SWRが最適になったら、これもマニュアルでEEPROMにデータを記録出来るようにしました。 ハイパスT型のATUの場合、真の整合条件とは異なるVCの角度条件でもSWRのディップポイントが存在し、プログラムがこの条件に陥った場合、SWR最小値が1.5以下にならない事が発生します。 この状態に陥った場合、真のディップポイントなのか、偽のディップポイントなのかマイコンでは判断が付きません。その為、TAP位置を変えて再度ディップ条件を探し、もっと良い整合状態があるのかを確認するという動作が必要になりますので、マニュアル動作はマストです。 この様にSWR最適ポイントを探すのは、マニュアル操作を含めて、かなり時間がかかりますが、一度最適整合を見つけたら、EEPROMに記憶させておきますので、2回目からはプリセットコール一発で最適整合できます。

・このバリコン式ATUのオリジナルは、3.5MHzから28MHzがカバー範囲でしたが、1.8MHz用の約40mのロングワイヤーに対応する為1.8MHzまで拡大します。 50MHzは現在のループアンテナが対応出来ておらず、1年間の交信実績もゼロでしたので、このATUでは対応しません。

・ATUをスル―し、SWR計と周波数カウンターだけが機能するモードを設けます。

・リレー式ATUの時有った、使用周波数とアンテナの種類の間違いを防止する機能。 例えば14MHz以上はループアンテナ、1.8MHzを除く10MHz以下は垂直ダイポール、1.8MHzと3.5MHzは、ロングワイヤー、特に3.5MHzは垂直ダイポール(DX用)とロングワイヤー(国内用)のように使い分けるという条件を無視した組み合わせでの使用により、アンテナの性能が発揮されない問題の解決。 手動によるアンテナの選択機能は付いていますが、実際の運用では使用しないようにします。

最終的には、プリセットされた整合条件になるように、VC角度とTAP位置を設定しますが、VC角度はギアのバックラッシュが角度表示で1から2くらいありますので、これによる不整合の度合いが、実際のアンテナで許容できるかという事になりますので、アンテナに接続しないと、使い物になるかどうかは判らない事になってしまいました。

Vcatumk21

上の画像はバラックのコントロール回路で、最終デバッグ中のバリコン式ATUです。

ANTの負荷条件は純抵抗ですが、以下のように整合できました。

Vcmatingdata_2

上の表は、左から順にアンテナのインピーダンスが15Ω、50Ω、500Ωの時のATUの整合条件を示しています。 全てリアクタンスゼロの条件ですが、VCの角度範囲が約10から190まで有効ですので、リレー式のATUの整合範囲以上をカバーしています。

 

Vcatu_box_1

約1か月のデバッグで、ほぼソフトが完成しましたので、今上げているATUを降ろし、リレー式ATUを取り除き、バリコン式ATUに入れ換えました。 また、コントローラーも中身をそっくり入れ替えて、まずは、机上でのテストです。 とりあえず、50Ωの負荷をつないで、21MHzでの整合テストを行うと、正常に働きましたので、この状態で、デバッグを続ける事にします。

ATUの背が高くなったので、今までのBOXに収納出来るか心配でしたが、約2mmの隙間を確保して、蓋を閉める事ができました。 今まであったLやCの微調整用リレーのみは残っていますが、配線とLやCは取り外してすっきりしました。

Vcatu_box_2

Vcmtu_panel_1

上は、コントローラーと接続し、デバッグ中のVC式ATUです。

50Ωの負荷抵抗ですが、1.8MHzから28MHzまで、整合条件を確認し、かつ100WのCW送信でも問題が無い事を確認できました。 ただし、ほとんどのバンドが1.10以下のSWRに収束しましたが、18MHzのみ1.3以下に落ちませんでした。 原因は、SWRを1.5以下に追い込んだ後のモーターON時間が短く、ギアのバックラッシュ分しかモーターを回していない為、いつまでたっても収束しない状態でしたので、18MHz専用のモーターON時間を設定し、従来の2倍の時間に設定し解決しました。 後は、仮の高さのアンテナに実装して整合テストと25mの通信ケーブルとUARTの相性を確認するだけになのですが、連日39度を超える暑さの中で、しばらくは机上でのデバッグを続けます。

 さらに1週間デバッグを続け、大きなバグも見つかり修正しました。 次の日曜日、相変わらず39度の暑さが続きそうですが、昼前に、ゲリラ豪雨。 雨が止んだ直後の外気温は27度。 これはしめたと、VC式ATUを仮の高さに降ろしてあるマストに括り付け、高さはそのままで、チューニングテストを行う事ができました。 心配していた25mのコントロールケーブルと4800ボーのUART通信は全く問題なく行える事を確認できました。 そして、7MHzから28MHzまで最大SWR1.6で整合できました。 この日はフィルドデーコンテストが行われているのですが、あいにくの磁気嵐の際中で7MHzは雷のノイズだらけで聞こえるSSB局は1~2局だけ。 21MHzでも8エリアのCW局が1局だけ聞こえますが、SSBは皆無。 ゲリラ豪雨が雷を伴いながら連続して迫ってくるので、テストはここまで。 アンテナの同軸ケーブルをリグから外して、様子見です。

 

2024年8月

夏休みの初日にアンテナマストを最長に伸ばし、やっと正規の高さに上げる事ができました。 その日の晩に、1.8MHzから29.7MHzまで全バンドの整合を取り直し、EEPROMに記憶させました。3.5MHz以下のバンドでSWR1.8以下にならない現象がありましたが、FTDX101Dの内蔵SWRメーターではSWR1.2くらいになっています。

ここ3日間くらいは、SNが連日250を超えていますが、DXの入感はさっぱりです。 しばらくはATUのテストだけが続きそうです。

8月のお盆休みを利用して、再度チューニングテストをやってみました。 先日、整合OKでEEPROMに記憶したプリセットデータを呼び出しても、SWRが3を超える場面がかなりの頻度で出ます。 同じ日に記憶したデータなら、これを呼び出しても、ちゃんと整合状態が再現するのですが、数日前のデータの場合、不整合になる事が発生します。 原因を調査中です。

調査した結果、VC2に連動した可変抵抗器のギアが軸との間でスリップしているようです。 昼間、ATUのBOX内が多分50℃くらいになり、若干の熱膨張でスリップが発生し、バリコンは回るけど、可変抵抗器が回らないというのが原因のようです。可変抵抗器の軸を約0.3mm Dカットし、完全な周り止めを追加しました。 また、プリセットコールをON状態で周波数を切り替えた時、ターゲットのバリコン位置をオーバーランして、整合が崩れる問題は、VC2を制御するソフトのバグでした。 バグの原因は、VC2のモーターをONした後、現在のVC角をUARTで送信している内にオーバーランしてしまうもので、タイミングによりオーバーランの量も変わっていました。 対策は、プリセットデータを呼び出してVCをプリセットする時に限り、VC回転中はUART送信を禁止し、VCの回転が停止してからVC角をUART送信するようにしました。 また、回転方向によるVC角のズレを少しでも改善する為に、必ず2回連続して、VC角度を設定するようにし、2回目では、モーターの速度が上昇しきれないうちに指定角度で停止する事により停止角度の精度が上がるようにしました。

また、SWRが下がってくると、モーターのON時間を短くして、SWR最小ポイントを飛び越えないように細工していますが、温度により、この時のモーター回転量が大きく変化し、室温27度で最適に絞りこみが出来るように時間を設定した場合、夏の昼間はBOX内が50度を超えるような熱さになり、短時間のモーターONでもSWRディップポイントを飛び越えてしまい、SWRが収束するまで数倍の時間がかかっています。 室内でのシュミレーションは抵抗負荷による結果で、実際のアンテナの場合、リアクタンスを含みますので、VCの角度がもっとクリチカルになるのも影響しているようです。 この対策として、コントローラーから、モーターON時間を変更出来るようにしました。 キー操作やエンコーダー操作では変更できませんが、コントローラーのプログラムを書き換えると変更が可能になります。 いちいちATU BOXを降ろす必要がなくなりますので、夏と冬でON時間を変更することが簡単になります。

2024年9月

8月末に台風10号が広島を通過する事になり、事前にアンテナをたたんだ為、しばらくATUの検討が出来ていませんでしたが、9月の上旬最後の日に、今回仕込んだモーターON時間の変更確認を行う事ができました。 1.8MHzから28MHzまで最短でSWRが収束するON timeを設定し終わった結果、どのバンドも初期設定の半分以下に落ち着きました。 この確認は夜8時過ぎにおこないましたので、昼間の暑いときとは条件が異なるかも知れませんが、この状態で様子見です。

バンドを切り替えた時、リレー式の場合、受信ノイズが即大きくなりますが、このバリコン式の場合、3秒くらい遅れて急にノイズが大きくなり整合した事が判ります。 

VC_ATU_mk2_main_v1r00.cをダウンロード

VC_ATU-mk2_controller_v1r01.cをダウンロード

FreqRang_3.hをダウンロード

  

 

T型アンテナチューナーの欠点であるコイルのタップ位置により偽のSWRディップポイントが発生する事を解消する為、コイルのタップが無いZ-MatchアンテナチューナーのATU化にトライします。

 

INDEXに戻る

2024年6月12日 (水)

デジタルマイクコンプレッサーの製作1

カテゴリ<SDR> [ 自作  dsPIC]

秋月で扱っている安いdsPICを使い、安いSSBジェネレーターが実現できないか実験したところ、一応SSB信号の発生には成功したものの、出来上がった信号のスプリアスレベルが大きく、SSBジェネレーターの実験は失敗してしまいました。 しかし、せっかく、試作基板を作った事も有り、何かに活用できないか、考えていたところ、デジタルマイクコンプレッサーが出来るかもしれない。そこで、目的を変更して、実験を継続する事にしました。

無線機の平均変調度を上げて、了解度を改善する手段として、RFスピーチプロッセッサーと言うのが昔から存在します。 これは、低周波のままで、音声圧縮を行うと、どうしても、歪が増加してしまうのですが、一度、高周波のDSBに変換し、この高周波の尖頭レベルをクリップした後、フィルターを通し、元の音声信号へ復調すれば、歪の少ない圧縮された音声信号が得られるというものです。

従来は、ダブルバランスミキサーでDSBを作り、片方のサイドバンドのみをメカニカルフィルターや同等のフィルターで取り出した後、これにBFOを当て、元の音声信号に戻すという構成をアナログ回路でやっていました。 今回、これを全てデジタルで行います。

Mc_block

上のブロック図が今回実験するマイクコンプレッサーの構成図です。 オールデジタルと言っても、マイク信号をデジタル処理出来るレベルまで増幅する手段や、ADCの中で発生するエイリアシングノイズ対策及び、DAC出力に現れるサンプリイング周波数の漏れを対策する為のLPFはアナログ回路で作る必要があります。

マイクのすぐ後にあるリミッターアンプはADCが飽和しないようにレベルの先頭値を規制する為のもので、通常ALCと言われるICです。その後のオーディオLPFはOPアンプやLCで構成する3KHz以下を通すLPFです。 DSPと書かれた枠内にあるブロックが今回採用するdsPIC33FJ32GP202となります。ADCで12bitのデジタルに変換された信号は、10KHzのローカルオシレターの信号と掛け算され、キャリアの無いDSB信号となります。 その信号を16bitの最大先頭値信号から24dB低いレベルで、プラス/マイナスともクリップし、それより高いレベルは全てフラットにします。 次にクリップされたDSB信号のUSBのみをBPFで取り出し、この信号と10KHzのBFO信号を掛け算し、元の音声信号を復調します。 ただし、この復調信号には多くの帯域外ノイズが含まれいますので、3KHzのLPFを通した後、DA変換して、音声信号に戻します。 

このブロック図は原理図であり、実際の回路では、マイク感度とコンプレッサーレベルの調整の為、入力部と出力部に可変抵抗が追加され、色々なトランシーバーに接続出来るようにします。

私が作るコンプレッサーは、自作の無線機で使う事だけを条件にしますので、出力レベルは自作無線機に必ず付いているAUX端子のレベルに合わせる事にしています。

マイクコンプレッサー配線図 MIC_COMP_01.pdfをダウンロード

Mc_1khz

Mc_400hz

上の波形は、入力レベルを3VppでADCに加え、DSP内部にて、-24dBのレベルでカットした信号のDAC出力です。左が1KHz、右が400Hz。 -24dB下の波形は0.3Vppより少し低いレベルになりますので、カットされた波形は、ほとんど台形波形ですが、ごらんの通り、1KHzはほぼ正弦波に戻っており、400Hzでも、完全とはいかないにしろ、高調波歪はかなり抑えられています。

実際にマイクコンプレッサーとしてまとめるには、マイクゲイン、クリップレベル、DAC出力レベル等を、無線機の仕様に合わせる為、可変抵抗が必要になります。 特に、クリップレベルは実験しながら決める必要がありそうです。

ソースファイル

MIC_complessor.cをダウンロード

TapAUDIO127_BPF_KS.hをダウンロード

TapUSB255_BPF_KS.hをダウンロード

 

INDEXへ戻る

2024年6月 3日 (月)

ローコストSSBジェネレーターの実験

カテゴリ<SDR> [ 自作  dsPIC]

dsPICを使ってSSBジェネレーターを製作し、7MHzトランシーバーや160mバンド用SSB送信機を作成、実用しております。 秋月で取り扱うdsPICも最近の仕入れのものは、かなり価格を上昇しておりますが、昔から置いてある部品は価格据え置きで販売されております。 その中で、特に安いと思われるdsPIC33FJ32GP202というDIP 28pinのdsPICマイコンが有ります。現在の価格は180円で、本命のdsPIC33FJ64GP802と比べて大きな差があります。 機能的には、内臓16bit DACが無くなり、ROMもRAMもサイズダウンしていますが、DSPエンジンは同じものが使われています。

このGP202と外付けのDACを使い、安いSSBジェネレーターが出来ないかの実験記です。

Shema_gp202_ssb_generator

上が、今回実験に使うSSBジェネレーターの回路図です。 dsPICとDACを合わせて280円です。

仕様はLSB USB AM CWの送受信機能付きです。もちろん、送信機のみ、或いは受信機のみとしても使う事ができます。 GP802タイプのdsPICに比べてRAM容量が2KBしかなく、ジェネレーターとして必要なFIRのTAP数に大幅な制限がでますが、そこは音質(音声帯域幅)を了解度が落ちない程度に抑えて、新スプリアス対応可能なものを目指します。 この条件で設定したDSPの基本仕様は以下のようにしました。

Dsp_block2_2

RAMの容量制限対策の為、AUDIO BPF部分のTAP数は127、IF BPF部分のTAP数は255とします。いずれも専用のリングメモリーをRAM上に確保しなければなりませんが、リングメモリーとして、X data 領域及びY data 領域上に確保出来るサイズは2のn乗でなければならず、2KBのサイズの中に、ふたつのリングメモリーとそれぞれ用のTAP係数データもこのX及びY領域に配置する必要があります。 これは、DSP命令のアドレッシングモードがX,Y RAM領域しか機能しない為です。(リングメモリーのサイズは2のN乗という制限が付きますが、TAP数はこのサイズ以下の奇数なら何でも良い) Float形式のTAP係数はconst指定で、プログラム領域に読出し専用データとして、保存して置き、dsPICが立ち上がる都度必要なFloatデータを符号付整数に変換してX及びYのRAM領域にコピーする事で、RAM使用量を80%以下に抑えています。

DACが内蔵されていないので、外付けのDACが必要になりますが、ちょうど、秋月にて、16bit 2chのラダー抵抗タイプのDAC PT8211が100円で販売されており、これを採用する事にします。このDACはオーディオ用として作らており、符号付整数にて、DA変換を行いますので、便利です。

これらを踏まえた上で、とりあえず、送信モードのみ動作するプログラムを作成し、基本機能の確認を行いました。

Out_1khz_2Out_10khz_2

Out_16khz

In_16khz

40KHzのサンプリング周波数で10KHz(右上の波形)を出力していますので、理屈的には、このような波形になる事は判るのですが、オリジナルのGP802を使った時は、このような波形にはならず、少なくとも確認した12KHzの信号でもきれいな正弦波でした。

100円のDACがおかしいのかもと、Microchipの330円のDACに換えてみましたが、波形は同じです。 どうもGP802の中で使われているDACが特殊なDACなのかも知れないと調べてみると、デルタシグマ変調タイプのDACである事がわかりました。 ΔΣ変調型DACというのはかなり高次のオーバーサンプリングを行い、1bitデジタルデータに変換した後、これをフィルターで元のアナログ信号に戻しているもので、サンプリング周期内のレベル補間がスムースに行われる事が特徴であり、最近のデジタルオーディオは、ほとんどΔΣ型らしい。 今回使ったのはラダー抵抗型というもので、DACとしては、一番簡単なICです。そして、これがミキサーを通してUSBやLSB信号になったとき、どうなるかは判りません。

10KHzキャリアと1KHz信号をミキサーにかけ、後段のBPFを通った、LSBとUSBのスペクトルを見てみました。

1khzlsb

1khzusb

案の定、余計なスプリアスが出ていました。異常スプリアスと示したスペクトルがそれです。 ただし、スプリアスが有っても、許容値以内なら問題ないのですが、一番大きいもので基準より-44dBくらいしか減衰していません。 これはHFの場合、50dB以上、50MHzの場合、60dB以上低くなければならず、NGです。

オーディオ発振器をスィープさせ、それをオーディオスペアナでピークホールドしてフィルター全体のスプリアスを見てみました。

Lsb

Usb

正弦波単体の時と同じ傾向を示し、NGです。

使ったDACが100円も330円もラダー型でしたので、これでは送信機としては不適合になってしまい、免許は降りません。

これを解決する為に、ΔΣ型DACをさがすと、秋月で240円のICが見つかりますが、dsPICとのインターフェースは不可能ではないが、面倒です。 結局、870円のdsPIC33FJ64GP802の方が簡単という結論になってしまいます。

下のファイルは実験途中のもので、送信モードしか動作しません。 FIRフィルター係数のファイル名がBLとなっていますが、中身は全てKaiser窓です。

SSB_generator_CD0.cをダウンロード

TapAM255_BPF_BL.hをダウンロード

TapAUDIO127_BPF_BL.hをダウンロード

TapAUDIOCW127_BPF_BL.hをダウンロード

TapCW255_BPF_BL.hをダウンロード

TapLSB255_BPF_BL.hをダウンロード

TapUSB255_BPF_BL.hをダウンロード

 

SSBジェネレーターは諦めましたが、マイクコンプレッサーが作れるかも知れないと実験を始めました。

 

INDEXへ戻る


 

2024年5月 6日 (月)

FIRデジタルフィルター係数 発生ソフト

dsPICを使い、FIRフィルターを自作しておりますが、長年使ってきた 石川高専の山田先生のホームページがedgeでは閲覧できなくなっており、新たにFIRフィルターを設計するのに困っていましたら、フランスのThomas Drugeon さんがオーディオ向けのフィルター係数を発生させるソフトを公開していました。 さっそくダウンロードしてテストしてみると、これはいとも簡単に係数を発生し、C言語で扱えるファイル状態で出力してくれます。 以下、その使い方を紹介します。 

rePhaseと呼ぶソフトを紹介しているページはこちらにあります。

このページから、Latest version   (v1.4.3, 2019-01-16, Windows 32/64 bit)というソフトをダウンロードし、ダウンロードされたzipファイルを解凍すると、rePhase.exeというファイルが現れますので、これをダブルクリックすると以下のようなダイアログがオープンします。

Repaseorijinal

このソフトは本来、オーディオのグラフィックイコライザーの特性をデジタルフィルターで構成する時のフィルター係数のジェネレーターですが、dsPICでSSBを発生させる為のFIRフィルターの係数を発生させることもできます。

上の画像の真ん中付近にある「Linear Phase Filter」というタグを開き、左下側にあるlinear-Phase Filterの部分に必要な記述を行います。

Rephase_linearphase_filter_2

使うのは上の2行だけです。 最初の行をhigh-passにして、2行目をLow-passに指定します。

次にshapeの列に2行とも「brikwall」を選びます。 freqの列の1行目に150Hz、2行目に2850Hzと記入します。

次に、右下のInpulse Settingの部分を記入します。

Rephase_impuls_setting_2

まず、タップ数を奇数で記入します。ここでは251としました。 次のFFT lengthはタップ数に応じて自動入力されますので、手を加えません。 conteringの部分はmiddleを選びましたが、実際に動くようになったら他の選択肢へ変更しても良いでしょう。 その下は、「use closest perfect inpulse」を選びます。 windowing(窓関数)はサイドローブが低い[blackman-harris」を選びましたが、好きな関数を選択できます。 optimizetionはデフォルトのままです。

rateはサンプリング周波数を記入します。 ここでは48KHzとしましたが、実際には、使用するdsPICのADコンバーターのサンプリング周波数を記入する事になります。 formatは発生したフィルター係数をC言語形式で出力されるようにします。 directoryはこのCファイルをどこに出力するかを指定します。

右枠の中は、デフォルトのままです。

これらを設定し終わった、目標特性グラフ付のダイアログ全体を下に示します。

Rephase_allwindow

目標のBPFの特性は上のグラフのように四角いフィルター特性ですが、タップの数を例え1001としても、このようなグラフになる事はなく、タップの数が多いほど、この理想曲線に近くなるという事だけです。 実際はハイパスフィルターのカットオフを50Hzくらいにして501タップくらいで、Hi-Fi SSB信号が出来ると言われています。

この設定で作られたFIR係数ファイルの例を以下よりダウンロードできます。 このファイルをBPFxxxx.hとリネームし、ヘッダーファイルとして読み込ませたら、dsPICのソフトが出来上がります。

BPF150-2850.cをダウンロード

実際にこのアプリを使い、dsPIC33FJ64GP802用のBPF係数を出力し、AM送信機のFIR BPFフィルターを作った例はこちらの最後の部分で紹介しています。

2024年5月末

石川高専の山田先生のページはWIndows7 Chromeの組み合わせなら、問題無く表示出来るようです。

また、  http://dsp.jpn.org/dfdesign/iir/i_bpf.shtml  このURLを検索アプリのURLランに張り付けてエンターすると表示できる場合があります。

 

その後、FIRフイルター係数の計算を英語で検索すると、特性がrePhaseよりよさそうな係数を発生出来るページが見つかりました。 現在、次の自作モデル用として、dsPICによるSSBジェネレーターを試作中ですが、この係数に使って実力を確かめ中です。

新しい、FIR係数発生ページ Digital Filter Design (arc.id.au)

このページで生成されているKaiser-Bessel窓による係数は石川高専のページでも発生させる事ができます。ただし、フィルター外のATT量がデフォルト20dBとなっていますので、60dBに変更してやると、同等のデータがえられます。

 

NDEXに戻る