2012．03．04 JA1VCW

SP-600 にAFCを
を付加する
付加する

１． はじめに古い受信機では周波数変動があります。
そこで安定に受信するために、自動周波数制御（AFC ）を付けようと考えました。 何しろジェネカバ
なので周波数範囲が広くこのあたりをどうするかが問題です。
案ずるよりも何とやら・・・ ということで先ずは作ってみました。
２． 現状と目標
7MHz あたりのSSBでの交信を聞いていますと、局発の周波数変動の影響で音調が変化してゆきます。
SSBといえども少しの音調の変化では話の内容がすぐに分らなくなるわけではありません。 ±100Hz 位
まででしたらまあ内容は損ねませんが、この程度変化すると聞いていて面白くありません。 従って
どうしても5分か10分ごとに同調を取り直さないと快適とはいえません。 その間も音調が変化し続けます。
AFCの目標としては、ある程度ウォームアップした後(電源onから15分後？）、ロックをかけて30分間位はダイアルに手を触れなくてもSSBなどが同一音調で受信できるようにしたいと思います。

３． どんなふうにするか
スーパーヘテロダイン(最近あまりこの言葉も聞きませんね）ですので、発振器があります。
受信周波数を一定に保つためには、すべての発振器の周波数の変動を可能な限り小さくしたい。
本機はSSBアダプタ付きの時、第一局発（可変LC発振器）、第二局発（水晶発振器）、BFO（水晶発振器）があって受信周波数によって異なる動作をしますが、一番不安定な発振器は第一局発です。
従って、これを安定化することを考えます。
AFC 自体は以前からいろいろな方法があります。 1chipCPUなどを使って実際に古いLCタイプのVFOに付加して好成績を挙げた例がいくつもあります。 せっかく1 chipCPUを使うことを少し覚えましたので、この方法で実現してみます。

４． AFC の動作
AFC は発振器の周波数を一定に保つためのひとつの方法です。 ネガティブフィードバックを使います。
発振器の周波数を周波数カウンタ（Fカウンタ）でカウントし、次のような動作をさせれば周波数が一定になります。
①第一局発の周波数をカウントする。 （局発周波数）②ロック周波数と比較して、高いか、低いか、同じかを判断する。
③可変容量ダイオード(Varicap) に与えるDC電圧を、前記２つの周波数が同じになる極性で印加する。
④①～③を繰り返す。
AFC ブロック図CPU （AVR) 注
SP-600

第一局発

F

カウンタ

ロック周波数周波数比較 （演算） ＜，＞，＝
DAC

DC

電圧

フィルタ

注）AVRはAtmel社製の１chip CPUです1５． 調査私の所有するSP-600 （本機といいます）の動作状態を調査しておかなければなりません。
回路や定数を決めるための基礎となるデータです。
あくまでも本機に対する値で、同じ機種でも他の個体はどのようであるかは解りません。
なおBand1（540kHz～1350kHz） およびBand6（29.7MHz～54.0MHz）はAFC を使用しないので測定対象外とします。
測定ポイントは次の場所です。
本機には最初から第一局発に端子があります。 -JX タイプの固定周波数発振器との接続用の端子です。
この端子に対してVaricapをつけたり、Fカウンタの信号の取り出しを行います。
写真および回路図（後出）に示します。
５．１ 発振電圧
Fカウンタの入力レベルを決めるために、局発の発振電圧を測定します。 測定の影響を少なくするため端子から2pFと200pFで分割し、オシロスコープで波形を観測しました。 それから計算して値を求めました。
・Band5 の上端で約15Vpp、・それ以下のBand では>15Vpp
５．２ 周波数変動
電源on からの周波数変動を測定します。 バンドの上下端の変動を測定します。
後出のFカウンタを使用して測定しました。
AFC をセットした場合、どの程度の変動まで補正できるかの目安を知ります。
（発振器のヒーター電圧は、6.3Vのままです。実際のヒーターピンでは5.5V位）
Band

上端

Band

2
0
-2

下端

2

0

200

400

600

-4
z)H
(k移 -6
偏
数
波 -8
周 -10

0

800

-2

-12

-14

-14

Band

-16

経過時間(min)

周波数（MHz)1

0.54 - 1.35

2

1.35 - 3.45

33.45 - 7.4

4

7.4 - 14.8

5

14.8 - 2 9.7

6

29.7 - 54

200

400

-4
z)H
(k移 -6
偏
数
波 -8
周-10

Band5
Band4
Band3
Band2

-12
-16

0

2

600

800

Band5
Band4
Band3
Band2

経過時間(min)５．３ 可変容量ダイオード（Varicap ）の容量変化
手持ちのVaricap を使っています。 部品名は不明です。
最近作ったLCメータでC-V特性を測定しました。 この程度のVaricapは各種あると思います。
また、 Varicapの電圧－容量の変化は直列にコンデンサを接続して使用しますと、比較的直線に近くなります。 実際に1pFを直列に接続して使用します。 それにしても合成容量は小さいです。
1S2267は後から入手して測定しました。 使用可能と思います。
14
12
)F10
p( 8
量6
容
4
2
0
0.00

Varicap C-V特性

Varicap C-V特性（1pF直列）

1.00
0.95

)Fp 0.90(
量容0.85

不明Dj
1S2267不明
1S2267

0.80
10.00

20.00

0.75

30.00 電圧(V)

0.00

10.00

20.00

30.00

電圧(V)

５．４ 容量変化による周波数変化
コントロール電圧をVaricap に印加して周波数を可変しますが、その周波数の変化を測定します。
実際に本体に接続しDACから制御電圧を出力します。 周波数は受信周波数に変換してあります。
Varicapにかかる電圧は、電源が+11.8Vなので1.5Vから22.1Vです。

最終
Band
1
2
3
4
5
6

C1=0.5pF
C2=47pF
C3=1pF
2/14
band下端band上端Band freq. 10.3V -10.3V 変化 10.3V -10.3V 変化(MHz) (kHz) (kHz) (kHz) (kHz) (kHz) (kHz)0.54-1.35 556.65 556.77 0.12 1306.9 1308.56 1.66
1.35-3.45 1398.04 1398.35 0.31 3346.81 3351.34 4.53
3.45-7.4 3542.56 3543.26 0.7 7219.9 7227.02 7.12
7.4-14.8 7631.03 7631.73 0.7 14582.53 14583.55 1.02
14.8-29.7 15288.17 15289.85 1.68 29267.59 29269.88 2.29
29.7-54
-

3

+12V

電源

C1

C3

C2

Ω

500k

制御電圧

６． ブロック図
次のようなブロックになりました。
基本的に周波数カウンタ（Fカウンタ）とDAコンバータ（DAC）です。
インターフェイス部
デジタル部
Timer0_IN
SP-600Buffer基準発振器
12.8MHz

入力アンプ

Varicap

D-FF

74AC14D Q
CK cl＊Q“A”“B” Gate

74AC74Gatesig
74HC161

外部ｶｳﾝﾀ
4bit

74AC00±10V

Control

Coun_tin

ｿﾌﾄｳｪｱｶｳﾝﾀ
8bit
変換器
内部カウンタ(8bit)
未使用
A/D

内部ｶｳﾝﾀ ｿﾌﾄｳｪｱｶｳﾝﾀ
16bit（Timer1)
8bit

Reset
*readpulse

ATmega328P

アナログ部
AD711

前 B
置 内部分周器分
8bit
周 （Timer0)
器
Timer0_OVF

AVR

DAC_out

Disp

PCM56

DAC
Amp ±3V 16bit

６．１ デジタル部

表示器(LCD)
16文字* 2行

１）AVR（1chipCPU)を使用した、周波数カウンタ(Fカウンタ）／コントローラです。
このCPUのおもな機能は次のようです。 (まだありますが詳細は省略）
・8bitタイマ/カウンタ*2本、16bitタイマ/カウンタ*1本、10bit 8ch(切替）A/Dコンバータ
・USART、アナログコンパレータ、ウォッチドッグタイマ、割り込み・32kbyte フラッシュメモリ（プログラム用）、1kbyteEEPROM、2kbyteSRAM
２）Fカウンタとしたときに最大入力周波数は45MHz です。
Timer1 の外部入力はclockで同期がとられているので、最大入力周波数はclkI/O の1/2 以下にしないといけません。 clkI/Oは今回は12.8MHzです。
従ってTimer1の最大入力周波数は少し余裕を持って1/3とすると約4MHz となりますので、それ以上の周波数を計数するためには外付けカウンタを追加します。
1/16のカウンタ(4bit)を付けると、4MHz*16=64MHzまで可能なはずですが、74HC161の場合はICの性能のためだと思われますが45MHz程度が上限でした。
３）ゲートタイムは20ms の整数倍で設定できますので、一応10Hz の分解能を得るために200msとしています。 必要に応じてプログラムで変えることができます。

4４）ハード的に基準発振器と同期が取れるような構造にします。 ソフトウェア制御のカウンタを作っていますがソフトウェアの遅延などが測定値に影響を与えないようにしてあります。
ａ）高精度水晶発振器の出力は前置分周器、Timer0 で分周されます。 その出力は外部に取り出されますが (上図“A”）、CPU の出力部で水晶発振器の周波数に内部で同期が取られています。
プログラムで作った(あまり精度の良くない）Gate信号は、 D-FFで“A”と同期をとっていますので、最終的に精度が必要なGatesig はほぼ水晶発振器の精度に準じます。
ｂ）ここで精度を下げる原因は、CPU内部でのクロックのジッタです。これは定義されていませんが、どうしても気になる場合は、“A”の信号を水晶発振の出力でもういちど同期を取ればOKです。
５）ゲートタイムの作り方は、後出の付． に記しました。

６．２ アナログ部
ほとんどの部分がデジタルで動作していますが、一部アナログ動作が必要になります。
・ カウントした周波数誤差をVaricap の制御電圧に変換する部分。

・ 本機のVaricap による周波数制御およびその周波数を測定するインターフェイス。
これらについて考えます。

６．２．１ 制御電圧発生部
Fカウンタで計測した数値を計算して誤差の値を求め、それをキャンセルするようにVaricap に電圧を印加して、誤差を最小にします。
当初AVR内蔵の8bitのPWM型DACでテストしました。 その結果、8bitでは分解能が不足であることが判明しました。 いくつかの周波数に関してロックをかけて周波数表示を見ていると数十Hz程度ふらついたり、場合によっては周波数が上下して止まりません（発振です）。
次にゲインをおよそ1/10にしてテストするとどうやら±10Hz程度に収まる様です。
従って実際には12bit程度の分解能が必要なことが解りました。
動作ディレイも考慮しないといけないのですが、先ずこれで進むことにします。
このあたりはいろいろ試行錯誤ありました。 経過省略します。
実際には16bitのデジタル・アナログ変換器（DAC）が手持ちにありましたので、これを使う事にしました。
PCM56というバーブラウンの16bitDACです。 出力電圧が±3Vなので±10Vになるように増幅します。
また、全体の関係は図のようになります。
AmpはAD711というOp-Ampを使っています。 ジャンク箱出身です。
どんなop-ampでもOKだと思いますが、ローノイズタイプのほうが良い様な気がします。
確かめたわけではありません。
±3V±32767 16bit DAC
カウント

±10V
Amp
*3.3

最大制御感度 7MHz付近 0.346kHz / V
1カウント => 314uV
3181カウント => 1V
1V => 346Hz

これから1カウント当たり 0.12Hz @ 7MHz

5

６．３ 本体とのインターフェイス
前述の測定に使った局発の端子を利用します。
数pFを接続しますと局発周波数が変化しますので利用できそうです。 最適かどうかはわかりませんが
他に方法がなさそうです。 シールドケースになっているユニットなのでこれ以外の接続方法を考えると、大掛かりになりそうです。
その端子にVaricap を接続して周波数を可変し、また周波数カウンタ（Fカウンタ）の信号をそこから取り出します。
制御電圧をFカウンタの信号と重畳させてあります。 接続ケーブルを減らすためです。

重要
SP-600

第一局発１）Fカウンタの入力
なるべく発振器に影響を与えずに信号を取り出す必要があります。
入力アッテネータ + FETバッファの組合わせで、FETバッファはソースフォロワでゲインはおよそ1弱です。
アダプタのFカウンタの感度は約64mVpp /35MHz であることが分っています。 また以前の調査から発振電圧が約15Vpp以上なので、アッテネート比は15V/64mV=234。 6dBほどのマージンを見積って1/100位にすれば十分としました。
アッテネータの入力側のコンデンサは、発振器に対する影響を少なくするために小さい程よいのですがあまり微妙でも困るので、0.5pF を使用し 47pF とで分割してあります。 機械によっては要調整です。
FETは高周波用のものでしたら何でも良いと思います。
２）周波数補正
可変容量ダイオード（Varicap）で周波数を変化させますが、実際に上記の回路を本機にとりつけて制御電圧を可変した所、受信バンドによってVaricap の効果が大きく違います。
実際には図の丸で囲った部分が重要で、特にコンデンサの値が微妙です。
本機では1pFにしました。 AFC全体で一番微妙な所です。 場合によってはトリマコンデンサを使用した方が良いかもしれません。 （1pFあたりを安定に調整できるようなトリマ･･･ジョハンソンのエアトリマ？
あるいは直列にセラミックトリマ？いずれにしてもちょっと面倒）
こういうことはいやなのですが、本体に手を加えないということが前提なのでしかたありません。
なるべくVaricap に印加する電圧範囲を大きくしたかったので、電源電圧を有効に使えるように+12V をカソードに接続します。 そして制御電圧を±10Vにすることによって、Varicapの印加電圧が2V～22Vとなります。
さらに今までのデータから周波数が下がることがほとんどなので、下がるのを補正する範囲を広くする為
ロック時のスタート電圧を+6V程度になるようにしてあります。
6

７． 制御７．１ 全体のコントロールの様子
どの様に動作させるかを考えます。 （操作仕様です）①電源on 時ではAFCモードはoff で、フィードバックはかかっておらず、周波数表示は受信周波数を表示
しています。 SSBやCW であればモードによって本来キャリアのある周波数を表示します。
②Lock SW を押すとその時点で受信している周波数が記憶されて(ロック周波数といいます）、それを基準にフィードバックをかけて、受信周波数を安定させます。
③フィードバックがかかっている状態でも発振器の発振周波数は変動していて、それをVaricap で補正しているだけなので補正範囲を逸脱すればもはや補正不能となって、その時点から受信周波数は変動して行きます。
④補正不能になるのは制御電圧が変化できなくなった時、すなわち±10V程度です。
⑤この時点で同調ダイアルを操作して受信周波数を動かし、また制御範囲に入ればすでに記憶してある
ロック周波数にロックして補正動作を続けます。
⑥モードSW を切り替えた場合には受信周波数が変わるので、AFCはoff になります。 このとき周波数が変化する場合があります。
⑦ AFC が動作中にLock SWを押すと、AFCモードがoff となります。 受信周波数が同調ダイアルで決まる周波数に戻るので、周波数が変化する場合があります。
⑧現在制御範囲のどのあたりにあるかをモニタできる様に、メータ をつけて制御電圧を表示しています。
メータを見て範囲ぎりぎりになったら同調ダイアルを回して、針を右端あたりになる様にすれば、しばらくの間また周波数はロックされます。
これらはAVRのプログラム仕様になります。 これに従ってプログラムを組みます。
７．２ AFCとしての動作AFCとして動作させる部分は次のように行います。 (これもプログラムです）①200ms ゲートで周波数を測定 （カウント数*5が実際の周波数）。
②周波数を10Hz の桁までLCDに表示する。 カウント数/2が10Hz までの桁表示となります。
表示は、BFOなどの周波数と計算して実際の受信周波数を表示するようにしてあります。
③ロックSW が押されたら、測定周波数値をロック周波数に設定。 AFC on にします。
④AFC off ならば①に戻ります。
⑤ロック周波数を計算－カウント数 => 誤差。
⑥DAC設定値 = 誤差＊係数 (係数： 1カウントあたりの周波数変化。 これ重要）⑦ハードとの極性を考慮して、ネガティブフィードバックになるように数値をDAC に設定します。
⑧ ②に戻ります。
その他、Power on 時のイニシャル処理、SW のチャタリングの処理、 AFC の解除条件
受信周波数によるハードの設定変更、などがプログラムに組み込まれます。
なお、プログラムは AVR用ベーシックコンパイラ(BASCOM-AVR）お試し版を使用しました。

7

８． チェックと調整
８．１ ロック範囲の確認
ロック範囲の確認をしないといけません。 数値は本機の場合です。
１）使用するバンドの上下端について、DACの出力の±最大電圧の周波数範囲を記録します。
これが周波数補正可能範囲なので、これ以上の周波数変動は補正できません。
プログラムにて±最大電圧を調整用として発生できるようにしてあります。
本機の結果は５．４項の通りです。
２）この補正可能範囲が適当でない場合は、Varicapに直列に入れてあるコンデンサの値を変更します。
かなりクリチカルで、私の場合は1pFではすこし少なく、2pFでは多すぎとなりました。
一例 1pF： 6.52kHz => 2pF： 19.82kHz (3V-19.8V、7MHz付近）
８．２ 系の安定性の確認
8.1項の確認時、次のようにして系の安定性も調べておきます。
安定でないとノイズが入ったら元にもどらなくなったりしますので、必ず確認し、収束するように定数を決めておかないといけません。
近くで蛍光灯をon/offしたら、電源を切ってロックしなおさないようだとちょっと面倒ですので。
１）ロックさせた状態で下図のポイントをクリップなどで数十秒+12Vに接続して、その後離します。
もとのロックした周波数に戻ることを確認します。 場合によっては数十秒かかることがあります。
また同様に-12Vに接続して確認します。 ポイントを間違えると半導体をこわす可能性があります。
２）ロック状態では問題ないように見えても、このチェックを行ったときにもとのロック状態に戻らないことがあります。 周波数が安定しなかったり、飽和してしまったらNGです。
３）うまくもとに戻らない場合は、プログラムの補正係数を変更したり、LPFの時定数（コンデンサ）を変更します。

コンデンサ・必要であれば調整

±12V
10k

DAC

Ω

本体インターフェイス

カウンタ ・アンプ

F

８．３ トラッキング再調整
局発に余分な回路が付いたので、ダイアル目盛りと実際の受信周波数がずれています。
局発だけがずれた状態なので、局発のトリマコンデンサを調整しなおすだけで終了です。
・電源を投入して機械がウォームアップした後、ロックさせない状態で各バンドの上端でダイアル目盛りとカウンタの表示周波数が一致するように、局発のトリマコンデンサを調整します。
本機の場合はバンド3（3.45～7.4MHz）が一番ずれが大きく、およそ100kHzくらいずれていました。
すなわち、目盛りが7200kHzで、カウンタの表示が7100kHzでした。

8

９． 結果９．１ 総評１）じわじわの周波数変動は抑えることができています。
目標として“アマチュアバンドで電源on後15分～20分程度のウォームアップ時間を経過し、一度同調を取り直しますと、（ロックに余裕がある方向に同調ダイアルを設置しなおす）30分以上ロックしてSSBを受信できる“ としました。 結果として28MHz以外のアマチュアバンドで目標を達成しました。
当然ながら、電源on時の周囲温度や筐体の状況（箱に入っているとか、寝かせてあるとか）によっても状況は変化するはずです。
２）28MHzあたりは時間あたりの周波数変動が大きく、１）の目標スペックを満足しませんでした。 15分に1回の同調取り直し程度です。 時間が経過すれば周波数変動は小さくなるので、同調を取り直す間隔は長くなります。 これを修正するには３）項のコンデンサを再度 調整する必要があります。
今回はこのままにします。
補正の範囲は受信バンドによって、またバンドの上端下端によって違います。 Varicapの制御範囲を測定しましたが、それに近い範囲になります。 （５．４項）
３）Varicapに直列に入れたコンデンサが重要ではありますが、そうはいっても実際に運用するとなると
まあ、ダイアルに触る回数が若干変わるだけで、例えば20分に1回修正するか、それが40分になるか
そんなイメージです。 音調がじわじわ変わってゆく事は無くなるのでその点は快適です。
1時間のラグチュウに補正が2回か1回かということで、手持ち無沙汰になればダイアルに触ったりしますので、現実的には私にとってはそんなに大きな問題では無いように思います。
４）特にバリコンの抜けた(容量の小さい）ほうの周波数において、局発に不安定さがあるようです。
(本機だけ？？） ロックをかけなくても発生します。 当然ロックをかけても除去できません。
これを修正するのは現在ちょっと大変な感じがします。 不安定さというのは、・じっとカウンタの表示を見ていると不規則に最終桁（10Hz)が3カウント位まで変わることがある。
・低い周波数のビートを聞いていると、たまにあれっずれた、ということがある。
会話などを聞いている場合はほとんど分らない。
こんな程度です。
５）これもバリコンの抜けたほうの周波数ですが、スタンバイや極度のAVC の電圧変化による、周波数の変動があります。 電源の電圧変動などで発生すると思われます。
最大50Hz程度ですが５）のロック時間の長いことと相まって、数秒間周波数表示が変化します。
これも設計の時代を考えれば無理もないことかもしれません。 Okとします。
６）本体との接続は細いラッピング線で接続してありますが、ここをミノムシクリップなど(長さ5cmくらい）で繋ぐと浮遊容量が増して、一番変化が大きい7MHzでは100kHz以上の周波数のシフトが発生しました。 ジェネカバラジオはいろいろクリチカルな所があります。
７）擾乱或いはダイアルの修正の後の、ロックまでの時間は長いです。 10秒～30秒くらいです。
ある程度はプログラムによって改善できる可能性はあります。
８）ロックしている時は使っているTCXOの精度になりますが、バンド3（＞7．4MHz）より高い受信周波数
ではダブルスーパーになって、本体内蔵の3.5MHzの水晶発振器の精度が加わります。
この発振器の精度は測定していませんが、作られた時代から考えてそんなに良いものではないと思われます。

9９.２ 問題点
29MHz以上あたり(Band5のバリコンの抜けたほう）でロック時に不安定さがあります。
ロックボタンでロックした時に周波数がずれます。 ロジックの動作が、クリチカルなこの辺の周波数に対して影響しているようです。 他の周波数では問題ないので今の所そのままです。
ちょっと重大な問題ではありますので、いずれ時間があるときに見たいと考えます。
９．３ 参考データ
28.5MHz のデータを、参考のために取得してみました。
この周波数あたりが一番周波数変動が大きいので試しました。
・Power on後、15分経過した時から測定をスタートしました。
・メータがFSの13.3%に達した時に同調ダイアルをまわして、93.3%になるようにします。
これを繰り返します。
温度、真空管、バンド、バンドの上下端によって特性が大きく変わりますので、このデータは参考です。
Power on

測定開始

Fs

－15 0

経過時間 (min)
18

45

75

120

180

93.3%
80.0%

13.3%

0
16.4

℃

18.4

10

℃

？

１０． 感想、及び、よしなしごと （ただ思うことを羅列・・・）
１）SP-600-J22（本機）の局発周波数変動特性を取りました。 夜間電源 off して朝から夕方迄値を記録しました。 ほかの事をしたり、時々忘れたりしながらでした。
温度も一緒に記録すれば良かったのですが、良い温度計がありませんでした。
このデータはどのように評価すればよいのか分かりません。
他のこの手の機械、例えば SX-73、HRO60、BC-779 などはどうなんでしょう。
昔の機械の実力はどの程度だったのでしょうね。 （誰もこんな測定なんかしないかな？）
２）バンド内の高いほうと低いほうでは随分特性が変わります。 低いほうでは温度補償がある程度効いて一時周波数が上がります。 第一局発可変のジェネカバで、バンド内うまく温度補償するのは大変でしょう。 良くやったというべきだと思います。
筐体が大きく、熱容量がおおきいのでじわじわといつまでも動いてゆきます。 まあ頻繁に電源をon / off するような使い方は、プロは普通はしないので良いのかもしれません。
３）これで真空管を変えたり、季節が変われば状態がまた変わると思われます。
４）他の機械（同じ機種を含めて）に接続するには調整箇所が多くて、作って繋いだら動作するという様なものではないようなアダプタになってしまいました。
もっとも調整が多いといっても理屈をふまえて考えれば、難しいものではないと思いますが。
５）実は次のようなフルデジタルコントロールのAFC？も考えました。
SP-600-JXタイプのように固定水晶発振器(XTO)が付く機種もあるので、この切り替えを利用して①ダイアルでの受信時は局発の発振周波数をFカウンタで測定している。
②ロックをかけたい周波数の時にロックSWを押すと、その周波数がDDSに設定される。
③その後DDSの信号をMixerに入力できるように信号を切り替える。 (場合によっては、切替のノイズが発生するかも？ このあたりは一考を要す）④XTO の電源、信号の切替は、最近の光MOSスイッチかリレーを使えば良い。
⑤DDS出力として比較的大きな振幅が必要とされるが、広帯域アンプは容易に作れるので、RFトランスと組み合わせれば可能である。
DDSに周波数オフセットなどを加える機能などを付ければ、ある程度の周波数変更なども可能。
周波数も水晶発振と同程度の精度になる。
DDS のC/N 、スプリアスなどもありますが、本機では局発用の発振LCを通るのでそれがフィルタの役をしますので、離れたスプリアスは減衰されます。 最近のDDSではC / N はよろしいでしょう。
実際に行ってもループが無いので問題は少ないと思われます。 予想されるロックした瞬間の切替
ノイズを除けば、性能面では最良の方法だと思います。
ただ、今回はあまりに面白みが無いようで、VaricapによるAFCにしました。
そしてちょっと苦労しました。
Mixer

読み込み

SP-600
Fカウンタ

第一局発

設定 CPU

固定周波数発振器
（FFO）

Amp

11

DDS

６）こんなに簡単にAFCが実現できたり、CPUが使えたりということを考えると、技術の進歩を感じます。
数100円で買えるCPUにしても、能動素子（FET)が何十万というような数が組み込んであるので、この程度の動作を行えるということでしょうか。 まさに技術の進歩でしょう。 感謝しなくっちゃ。
７）大変だったのは、周波数の変動に対するDAC の周波数変化（出力電圧）をどの程度にするかでした。
周波数変化を大きくすると不安定になるし、小さくするとロックに時間がかかる。 というわけで実験的に決めました。 現在ロック時間が長くて、一度ダイアルを触るとで10～30秒くらいかかります。
最良とは言いがたいのですが、いちど受信周波数を決めたら同調を取り直すことはほとんどないので良しとしました。 長期ドリフトキャンセラーというところでしょうか。 応答を早くする方策として、・周波数が大きく変化した時には、ゲート時間を短くしてある程度の所までは早く収束させる。
・同様にゲート時間は変えずに周波数変化の値を変える。
・バンドごとに周波数変化の値を変えて最適化を図る。 バンド内もバンド両端の値から計算する。
など考えられますが、つつきだすときりがないのでまたの機会にします。
８）ロックモニタのメータは非常に役立ちます。 針があんまり左に寄ってきたらちょっとダイアルに触って周波数を補正してやればよい。 ただしロックが外れるまでダイアルをまわしてしまうと後が少し億劫。
ロックに時間がかかるので、すぐにはどこが正しいポイントが分らなくなります。
そうしたら一度ロックをはずしてもう一度同調しなおすのがいちばん。
９）デジタル表示が付くと、どうしてもぴったりとした、切の良い周波数に同調したくなります。
ジェネカバなのでダイアルに対する周波数の変化が大きいため、数字を合せるのが大変です。
28MHzあたりになると本当に微妙なダイアル操作が要求されます。
近くの周波数に来たら値を丸め込む機能があると便利です。 一部のAFC にはこの機能が付けてあって便利に使えるようです。 プログラムで簡単にできます。 今はプログラム領域不足でこの機能はありません。
１０）DACのPCM56というICですが、当初バーブラウン（BB)という会社が発売していましたが、いつの間にかTI がバーブラウンのメーカー名で販売しています。 少なくとも30年以上前ですがバーブラウンは
アナログの特殊なICを開発、販売していて、DAC，VFコンバータ，ADC，高精度OPアンプなど優秀な半導体がありました。 アナログデバイセズのアナログICと同じ様なイメージでした。
アナログデバイセズは好調の様ですが、なぜかBBは身売りするようなこととなりました。
PCM56は少し前までオーディオ屋さんが使うことがあったようです。
BBのICです。 おもしろいパッケージもあるものですね。 上の2つはセラミックパッケージです。

12１１） 1966年～1975年頃でしたがアメリカの軍用のラジオを使っていた事がありました。
RBC-5というラジオで設計は1940年頃で、軍艦に載っていたものらしいです。 まあ見事な作りで金に糸目を付けないという感じで、重い、堅固力づく、良質の部品を使用していました。
SP-600と同様第一局発可変のセミオールウエーブ機 (4MHz～27MHz）にもかかわらず、 SSBで運用しても電源on後20分も経過すると、その後は周波数変動はほとんど感じない位でした。(7MHz）
SP-600と比べると、SP-600は回路的に優れているが、機械的強度、安定度はRBC-5という感じでした。
ハイバンドのコイルなどはスチロールボビンに2mmΦ位？の線がギリギリと巻いてあり、100Wくらいのハンダこてを使わないと半田も溶けないような構造でした。（内部の写真撮っておけばよかった。残念）それに比べるとSP-600のコイルやターレット構造などは、それなりに良いのですがずっと華奢です。

RBC-5の写真です。(1971,2

年頃？？）

一時多く市場に放出されたためお持ちのOMもいらっしゃるはず。

上はクリコン (この単語も14MHz以

最近は聞かない） を付けていました。

１２）プログラムはAVR用ベーシック（BASCOM-AVR) 無償バージョンを使用しました。 プログラムメモリの容量制限があって4k-byteです。 LEDを点滅させたり、音を出したりするのでは十分な容量ですが、ちょっとまとまった仕事をさせるとなると不足です。 特に表示などに凝りだすとすぐに限界が来ます。
今回4kぎりぎりで(残り100byte！）最低の機能です。 コメントやメモ、空行を含めて350行強程度です。
プログラムメモリ自体は32k-byteあるのでもっといろいろな機能を付けたいのですが、そのためには正式版を購入しないといけません。 正式版で今の8倍の容量だと結構な仕事ができます。
この手のコンパイラとしては比較的安価です。 （現時点で¥10k-前後くらい）どうしようか考えています。
以前からタダのC コンパイラがあって乗り換えようかとも思ったのですが、どうもベーシックの居心地が良いので困っています。 （なんとなくモヤっとした感じで、そこが好きです）
１３）もしプログラムの領域が大きくなったら、さしあたってこんな追加を実施したい。
・100Hz、10Hzあたりの切の良い周波数に引き込む。
・ロック時間の短縮。
・ロックはずれの警告 (可変範囲の9割くらいになったら、何か表示する）
・ハードを含めたデバッグ、調整のプログラムの追加。
１４）BASCM-AVRを使用中に、プログラムはほとんど変更が無いのにCPUの動作が変わってしまうことがありました。 全く動作しないという事ではなく、そこそこ動くのですが意図したとおりではありません。
この不具合が発生すると書き込み直してもコンパイルをしなおしてもだめです。 発生する条件も定かではありません。 試行錯誤して、いちどプログラム(XX.bas)を閉じてから、もういちどロードしてコンパイルすると、思ったとおり動作しました。 この不具合が私の環境によるものか、ソフトのバグか
私の操作ミスか、たまたまなおったのか、原因もまたこの処理が正しいかどうかも分りません。
プログラムをロードしなおさないで何回も修正、コンパイルを繰り返していると発生する感じがします。
こういう不具合は困ります。 コンパイラを信頼できなくなります。
13

１１． 写真 （SSBアダプタの稿と重複するものも、幾枚かあります）
・SSBアダプタと同じ筐体に入れました。
・SP-600の上に置いてあります。
・相変わらず、パネルにレタリングなどは無く、また、色塗装もありません。
・直線がゆがんでいるのは、デジカメが古いためです。
以下同様です。

・全体の様子です。 シャーシは300*200*50 (mm)です。
前面パネルのメータの部分が切れてしまいました。
・左手前 ： Fカウンタ／AFC／コントロールボード。
・右手前 ： SSBアダプタ（IFフィルタ、AVC、SSB検波）。
BFOはコントロールボードにあります。
・左奥 ： メータのFS/Zero調整のVRのボード。
どうしても他のボードに入りませんでした。
・右奥 ： 電源部。
・SP-600との接続は25pinのD-SUBコネクタ1個のみ。
（リアパネル）・Fカウンタ／AFC／コントロールボードです。
・ボードは秋月電子のジャノメ基板で実配。
・AVR、Fカウンタ、16bitDAC、Op-amp、
DDS(BFO用）、DDSバッファ、F カウンタ入力アンプ、などが組み込んであります。
・SOP(AD711)とSSOP（AD9834)は変換基板に載せた。
・AVRは左側の長いムカデ。

・本体とのインターフェイス。 (SP-600の内部）・RCAジャックの左下の白い端子が接続部。
・Fカウンタ入力バッファとVaricapの付いた基板。
・端子と基板は細いミドリ色のラッピング線で接続。
・接続用RCAプラグは抜いてあります。
・ツバの付いたシールドケースの真空管が第一局発。
・本機には固定周波数発振器はありません。
従って切替SWもありません。
14

・メータがオリジナルの電圧表示のままです。
そのうち・・・？
・メータはSWで切り替えて S と AFC 時DAC の
出力電圧 を表示。
・周波数表示用のLCDはちょっと小さいですね。
・LCDの下の赤いボタンがロックon／off スイッチです。

・実験中～～
・こんなお粗末です。
・プログラム用のパソコンと受信機が数m離れているので、可搬型でないと書き込みができない。
ケーブルを延ばしたら、書き込み器が誤動作。
それで段ボールに付けて行ったり来たりです。
・ノートパソコンでもあればいいんですが・・・・左の基板はSSB検波アダプタで、メカフィル
プロダクト検波、AGCなどが組んであります。
(別稿があります）

パネルレイアウト
Freqency
Digit

Meter

IFgainSel

Monitor
Power

AFC

メータ

MODE

メータとAFC電圧の表示切替
受信周波数／ロック周波数 表示
AFC on/off
選択度切替(filter on/off）
AFC使用時の周波数の桁のまるめ （1k/100/off） この機能現在無し、SWのみ※ IFゲイン※ AM-LSB-USB-CW切替※ 送信時モニタレベル※SSB検波アダプタに使用。 別稿を参照のこと。

Meter
Frequency
AFC
Sel
Degit
IF gain
MODE
MonitorS

15

付 １ Fカウンタ内容
基本になるFカウンタの内容です。
付１．１ タイムベース(ゲート信号）の発生
ブロック図を再掲します。

期 80us1/1024 周

前
置
分
周
器

基準発振器
12.8MHzD Q
CK cl＊Q

置

“A”
“B”

期 10ms1/125 周Timer0_OVF

内部分周器
8bit
（Timer0)

ｿﾌﾄｳｪｱｶｳﾝﾀ
8bit

入力
設
設
余裕

生
且

Gatesiｇ

D-FF

AVR

設
レ

Timer0 の前 分周器には 1/1024 を 定します。 Timer0 のは12.8MHz/1024=12.5kHzです。
Timer0 にtoggle ードを 定し、比較 ジスタ（OCR0A）に124 を 定すると1/125の分周器として動作し、OVF ( Timer0 のオーバーフロー）は10ms でします。
Timer0 にスタート前に値を 定しておくと、スタートしたときに 定値からOVFが発 するまでに時間のずれが られます。 これはプロ ムと実際のカウンタのOVFとの を作って、 つロスの時間を

モ

設

設

得

反転

グラ
らすためです。
終了時も同様にTimer0 に値を設定します。
””

このエッジでゲートは終了する
ただし”A”は“H”なので“L”に戻す必要がある
OCRA0の値を小さく設定しなおしてすぐ“L”になるようにすれば時間効率が良くなる

グラムで“Hi”にセットしてからOＶＦの割り込みでBをカウントして、たとえば値が⑩になったらAをプログラムで“Ｌ”にセット
ゲート時間は10ms*10=100msとなるスタート時に B をプロ
Timer0をスタートする
信号名
(上図）
B

この割り込みが入ったらTimer0をストップする

10ms 10ms

A

Gatesig

減① ② ③ ④⑤・ ・ ・ ・ ⑨

⑩ ⑪⑫

立ち上がりで同期をとってゲート時間とする

BをAの“B”はプログラムでセット／リセットされるので、精度は良くない。 “A”は水晶発振器の精度の信号。
（正確にはCPUの内部でジッタが発生する可能性があるが、この程度のシステムでは問題ない）
Gatesigは“A”と同期を取っているのでほぼ水晶発振器の精度で動作していると考えてよい。
16

付 １．２ メインカウンタ
このようにして作ったゲート信号で、入力信号をゲートします。
メインカウンタは外部カウンタ(4bit)＋Timer1(16bit)＋ソフトカウンタ(8bit)で構成します。
トータルで28bitで、数値としては268,435,455までカウント可能です。

ゲートを閉じたときに外部カウンタにはデータが残っていますが、・ 読み取りパルスをCPUからTimer1 の数値が増えるまで発生する。 すなわち外部カウンタからキャリーが上がるまで発生する。 この時発生したパルスの数をカウントしておく。
・ 送ったパルス数から演算して、外部カウンタに残っていた値を知る。
ということで算出します。
なお外部カウンタは74HC161 では45MHz 位まででした。 74AC161 ではもっと高域は延びるはずですが実験していません。
また、Timer1 のオーバーフロー（OVF) をインタラプトで係数して、ソフトカウンタとします。
付 １．３ 入力アンプ
以前の拙稿で作ったアンプの回路をそのまま使用しています。
ゲインはおよそ 27dB、 -3dBの帯域は 50MHzです。

17

付 ２． SP-600 RF部回路図

この信号が端子で外部に出ている

SP-600-22(本機）
ではFFOおよびこのSWは在りません18

付３． シミュレーション

シミュレーションといっても今回のAFCの内容を正しく記述しているわけではありませんが、動作イメージということでExcelで遊んでみました。
図のようなループで局発が500Hz変化したときに、ステップごとにどの様に補正して行くかを見ました。
①例えばバリコンなどをまわすと発振周波数が変化します。
②Fカウンタがカウントします。 (カウント値。 200msゲートなので500Hzだと100カウントになる。）③これに係数(CF：ゲインですね)を乗算したデジタル値を DACによってアナログ値になおしてVaricapにに印加します。 Varicapは周波数を補正する方向に動作します。
補正値はDACの出力電圧を等価的な周波数値に変換してあります。
④これを繰り返す。

Fカウンタ
リファレンス･カウント
CF =ずれ（Hz)
1
500
2
308
3
190
4
117
5
72
6
44
7
27
8
17
9
10
10
6
11
4
12
2
13
1
14
1
15
1
16
0
17
0
18
0
19
0
20
0

1.92
カウント
100
62
38
23
14
9
5
3
2
1
1
0
0
0
0
0
0
0
0
0

カウント
－－

D/A

*

補正

局発
+Varicap

変化

係数 CF
補正(Hz)
192
118
73
45
28
17
10
6
4
2
2
1
1
0
0
0
0
0
0
0

700

100
61
500 37
23
14
300 8
5
CF
3
100
1.92
2
8
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
10.4-100 000-300 000-500
00-700 00

結果は当たり前といえばその通りです。 自動制御の本に出て来る基本です。
係数（CF)を変えて様子を見るとグラフのようになりました。 (リストはCF=1.92の時のみ表示）
値によって素直に収束したり、振動しながら収束したり、発散することが見て取れます。
この結果からCFは系の特性を決める重要なファクタになることが分ります。
擾乱などがあった時にDACの出力をモニタしていると、収束状態が分ります。
上記のCF=1.92のように一方的に収束するのは良いですが、 CF= 8のように0を横切って行き来するようですと少し不安定だと判断できます。
あまり収束が遅いようですと、まだ検討の余地があるなどとも考えられます。
以上
19