AT90S2313制御のDDS-VFO


  これはアトメル社のAVRマイコンAT90S2313でAKIZUKIのDDS-kitを制御し、液晶に周波数を
  表示させる「デジタルVFO」の作り方です。
  ウェブ公開版プログラムを「実践AT90S2313プログラム」で解説。
  <頒布版の特徴>
  1、発振周波数とは異なる(送受信)周波数を液晶表示できる(DDS周波数と表示周波数の独立)
	1Hzから約4GHzまで最高10桁で表示
  2、発振周波数が1Hz変化する時、表示周波数を1,2,3,4または10Hz変化させられる(DDS出力を
      逓倍するリグに対応)。 発振周波数(DDSキット)は1Hz〜約16MHzの範囲です。
  3、発振周波数の増/減とは逆方向に、表示周波数を減/増させる事ができる
  4、VFOダイヤルの回転速度を判定し、自動で1Hz/10Hz変化になる(ジョグダ機能)
  5、クイックスイッチにより、最少変化周波数を1KHzにする(シャトル機能)
  6、16バンドの異なるVFO周波数(メモリー周波数)があります。
  7、バンド毎に、周波数(上の1〜3項)を設定できます(セットアップ機能)
  8、PTT入力により送信時と受信時で、異なる周波数にできる(スプリット機能)
  9、DDS基板から、使用中のVFO番号を4ビットバイナリで出力する(プリミックスVFO
      方式リグの周波数合成用局発出力の自動選択に対応可能)

  <バグ修正>Ver.5c以降は対策済み。アマチュア帯の周波数表示には実害ありません。
	100MHzと10MHzの桁について…その上位桁がゼロでない時でも、この桁がゼロなら
	ゼロ・ブランクしてしまう。


	制御基板にDDSとLCDを付けた(デジタルVFOとしての)写真。
	見にくいけど制御基板の下には秋月のDDSが付いている。                            <2005/12> これはJA4CEKさんに教えて頂いた「ノリタケ伊勢電子」の
 この写真はプログラムを改造しメモリー周波数を8バンドから14バンドに増量(VFO#:A〜N)   蛍光表示管(型番:DS-CU20025ECPB-U1J)の写真。CU20016(16文字)が売り切れて
	プログラム改造法は「AT90S2313プログラム改造編」で解説。                            20文字を使って実験。1,2ピンを入れ替えるだけでSC1602(LCD)と差し替え可。
   
必要部品 ・DDSキット …1 秋月電子オリジナル (トロイダルコア・黄色ほか:DDSキットのLPFを作り変える場合、下の回路図参照) ・LCDモジュール SC1602BS*B …1 秋月電子(ソケットはオスがLCD側、メスはAVR基板) ・制御基板 AVR基板 …1 JR6END頒布 ・AVR AT90S2313 …1 JR6END頒布(頒布版プログラム書き込み済み) ・セラミック発振子 10MHz …1 秋月電子 ・ICソケット 20ピンDIP …1 汎用 ・タクトスイッチ 1回路 …6 韓国製(4本足) ・光学エンコーダ RES20-50-200 …1 コパル製 ・バイパスコンデンサ 0.01μF位 数個 汎用 ・集合抵抗 10KΩx7 …1 SIP(1列8本足) ・抵抗 10KΩ・1KΩ 各1 1/8W ・ネジ付きスペーサー 20_ …2 汎用 〃 5_ …6 DDS、AVR基板、LCDをサンドイッチに重ねるため 〃 30_ …2 このほかに、安定化した5V2A程度の外部電源が必要です。また、できるだけリセットICを付けて 下さい(基板に取り付け穴はありません)。 機能、仕様 ・1MHzから約20MHz(スペック上は16.75MHz)までの範囲のどの周波数でも発振可能。 ・発振周波数と異なる周波数をLCDに表示(秋月のLCDモジュールを使います)。 ・制御基板(AVR基板)の電源はLCD、DDSと同じ +5V単一。 DDSを最少ステップ1Hzで、連続変化させるよう制御しています。 ・AVR基板はAT90S2313と5つのスイッチの簡単回路。 ・AVR基板の裏・表にDDSとLCDが載る一体化構造。 ・VFOメモリーは8バンド分。 バンドは「セットアップ」で初期周波数のユーザー設定可。 ・LCDの上段に表示周波数を表示、下段にVFO番号・ステップ比などを表示。 ・バンドを変える時、それまで使っていた周波数を変更していたらメモリーする。 (VFOメモリーの書き換え回数は約10万回) 操作 ・VFOダイヤル:周波数を変える ダイヤルの回転速度を検出し、ゆっくり廻すと1Hzずつ変化、普通に廻すと10Hzずつ 変化(ノーマルモード、Mode=N) ・[Q]スイッチ:VFOダイヤルによる周波数可変のステップを変える スイッチを押すたびに、ノーマルとクイックが交互に切り替わる。 クイックモード(Mode=Q)ではダイヤルの回転速度に関係なく1KHzずつ変化。 ・[U],[D]スイッチ:メモリーVFOの切り替え(8バンド)。頒布版は16バンド。 バンドを変えるとき、それまでのVFO周波数を変えていたらメモリー。 ・[M]スイッチを押してもVFO周波数をメモリー。と同時に使用していた バンド(VFO番号)もメモリー。そしてDDS発振停止,LCD表示クリア。 電源を入れ直すかリセットで復帰。 このスイッチは頒布版では、スプリット運用のためのPTT入力になっています。 ・[Q]スイッチを押したままリセットを押すか電源を入れなおす(デバッグモード): JR6ENDと表示されるまで押し続けると…表示周波数と発振周波数を同時に表示。 ・[S]スイッチでVFO(バンド)の周波数初期値変更(セットアップ):→後述 セットアップモードでは下記の3項目を順にセットし、メモリー。 [U],[D]で桁(1Hzの桁〜100KHzの桁)を選び、ダイヤルで変更する。 「頒布版」だけの追加機能: ・16バンドのVFOメモリー。 ・DDS基板上のPO1〜PO4に現在のバンド番号を出力。 ・QスイッチとDスイッチを同時押しすると周波数メモリー、DDS発振停止、LCDクリア。 Q,U,D,Sのどれかのスイッチで復帰。 ・QスイッチとUスイッチを同時押しするとスプリットのオン/オフ。 ・Mスイッチを外し、代わりに親機からのPTT入力とします(送信時だけHiにする)。 スプリットがオンの状態では送受信の周波数を個別に可変できます。 液晶の上段左端にRかTを表示しスプリットがオンになっている事を示す。 ・スプリットがオンの時はU,Dスイッチを禁止しています。 ・送信中はQスイッチを禁止、更にデバッグモード時はスプリットを禁止しています。 ・周波数メモリーに書き込む際、先にデータを読み出し同じ値なら書き込みしない。 なお、セットアップの方法は公開版と同じです。 スプリット用の表示,発振周波数は 使っていないRAMと真の周波数データをアクロバチックにやりくりしているだけですから スプリットをオフにすると消滅し、メモリーされません。 セットアップ(AVRライター、プログラムミングの知識不要) 1、DDS 発振周波数の初期値(1Hz〜約16MHz)20MHzくらいまでは何とか使えます。 2、上記DDS発振周波数における表示周波数(1Hz〜約4GHz) 3a、ダイヤルの1ステップ当たりの発振周波数(DDS)と表示周波数(LCD)の「変化の割合」を 選ぶ事ができる(varable ratio) ギヤ比可変。 1Hz:1Hz(Normal),4Hz:1Hz(DDS出力を4分周するPSN-SSB用), 1Hz:2Hz,1Hz:3Hz,1Hz:4Hz 1Hz:10Hz(DDS 出力を親機で 2,3,4,10 逓倍する回路用) 3b、DDS発振周波数が高くなるとき、LCD表示周波数も高くする(follow)/逆に低くする(reverse) 詳しくはセットアップの方法を見てください。 回路図(IE以外では見えない事があります) 回路図
赤丸の右側がDDS出力用1.5D2V、その下がトロイダルコアで作り直したLPF(回路図参照)。

写真の(ptt)はMスイッチです。 頒布版はMスイッチの代わりにPTT入力となり、 スプリットモードをオンにすると、この入力がHiかLoで周波数が独立して変わります。
回路図(上と同じ) プリント基板パターン図 操作マニュアル(WinXPのMS-Wordで書いたもの) 公開版 18/Mar/2002 HEXファイル(秋月AVRライターキットで書きこむファイル) データEEPROMファイル(〃) 下の2つは、アトメル社のアセンブラ(Windows対応版)でアセンブルしました。 DOS版アセンブラなら2つのファイルを1つにまとめてもアセンブルできます。 ソースプログラム(主プロシジャ)、下のファイルをインクルードします。 EEPROMデータテキスト(インクルード用) 人間が作ったものです、バグは必ずあります。 周波数セットアップの方法 (下の写真の順序でデータを変更します) ・[S] を押すと、それまで選択されていたVFO(バンド)についてセットアップを開始します。 セットアップ開始直後は[Q]スイッチを押すと、セットアップを中止します(Quit)。 セットアップの途中でリセットスイッチを押して、リセットを掛けるとVFOメモリーの周波数は そのまま残り、変更されません。 セットアップ:予めセットアップするVFO(バンド)を [U],[D] で選び、[S]を押すと 選んだバンドについて、表示周波数,発振周波数,ギヤ比,DDS:LCDの 増減の順・逆変化を再設定します。 ・最初は DDS の「発振周波数」を設定します。 液晶に表示された、発振周波数の桁を U/D で選択して、ダイヤルで数値を決めます。 [S]スイッチを押せば次に進みます。 何も変えずに[S]を押すと最初の数値が残り、次に進みます。 ・次に LCD の「表示周波数」を設定します。 液晶に表示された、表示周波数の桁を U/D で選択して、ダイヤルで数値を決めます。 [S]スイッチを押せば次に進みます。 何も変えずに[S]を押すと最初の数値が残り、次に進みます。 周波数は 0 〜 $FFFFFFFF(4294967294)まで変えられますが、DDS発振周波数は その発振可能範囲を超えて発振させることはできません。 ・最後は、VFOダイヤル回転の1パルス当たりに変化する周波数の量を、DDS発振周波数と LCD表示周波数について個別に選択します。液晶には "DDS:LCD" ギヤ比として表示し、 最初は「1:1」になっています。 また、発振周波数と表示周波数の増減の「順変化」「逆変化」も設定します。 逆変化は比の横に*印が表示されます。 [U]スイッチ:DDS発振周波数(右側)の変化量(1Hz/4Hz)が交互に替わります。 [D]スイッチ:LCD表示周波数(左側)の変化量(1,2,3,4と10Hz)が順に変わります。 [Q]スイッチ:DDS周波数とLCD周波数の変化の順逆設定が交互に替わります。 [S]スイッチを押すと、これまでの設定をEEPROMに書きこみ、プログラムは再スタートします。 表示周波数の最少変化量,10Hzを追加しギヤ比1:10 に対応しましたが、液晶には 「1::」と表示されます。 また、DDS:LCD ギヤ比を「4:4」や「1:3*」と設定することを制限していません (面倒なのでやっていません)ので、意味のある設定をして下さい。 セットアップで変更(再設定)した発振と表示の周波数は、Qスイッチを押したままリセットスイッチを 押せば、液晶の上下段に発振/表示の周波数が表示され確認できます。ギヤ比が1:1でない時は、 発振・表示両方の変化を確かめて下さい。 別のVFO(バンド)を変更するにはバンドを選びなおし、セットアップをもう一度最初から行います。 ⇒頒布基板では、[S]スイッチは普段使わないからLCDの裏に配置しました。以下の写真は最新の もので、スイッチは左からリセット,U,D,Qです。MスイッチはLCDモジュールの上側に なりました。
次に表示周波数(LCD)を表示して、発振周波数同様に変更します。 最後にDDS,LCDのステップ倍率および変化の順/逆を[U],[D],[Q]で選びます。
  DDS発信周波数と目的(送受信)周波数の関係。(IE以外のブラウザで見えない事があります)
<製作> ・基板のジャンパー線は図のように付けます。 ・ロータリーエンコーダは光学式を使ってください。やむを得ずEC16Bを使う場合は プルアップ抵抗を 3.3K〜1KΩで調整してみてください。EC16Bはチャタリングのバウンスが長く ダイヤル回転判定プログラムが、データを二重取りします。 ・また、光学式エンコーダーは電源が要ります。 図にはありませんが、+5VとGNDを配線して 下さい。 コパルのRES20-50-200は・・・ ・赤…+5Vにつなぐ ・黒…GNDにつなぐ ・白と茶…RE1とRE2につなぐ 基板上の7x10KΩ(8本足)の集合抵抗の足を端から2本(RE1とRE2の プルアップ用)カットします。 代わりに10KΩの抵抗2本を用意し、RE1とRE2をそれぞれ、10KΩで プルダウン(GNDに落とす)します。 ケンウッドのHF固定機から外した光学エンコーダーは・・・ ・+5VとGNDをつなげば、RE1・RE2はプルアップのままで動作します。 ・青…+5Vにつなぐ ・黒…GNDにつなぐ ・黄と橙…RE1とRE2につなぐ ・青の部分はLCDとDDSへの渡りです。 LCDのソケットはメスをこの基板に付けます。 DDSは、この基板とハンダ面同士が向かい合わせになるようにすると、信号線の穴の 位置が合います。制御基板のハンダ面に長めのリード線を立てて、DDSを挿してから DDS基板の部品面スルーホール側からハンダ付けします。
DDS-VFO制御用のAT90S2313プログラムのバージョン: Ver.0 PIC16F84のDDS制御プログラムをAT90S2313に移植したもの。(不完全版、非公開) Ver.1 メモリー周波数データの再セットアップ対応。(バグあり、非公開) Ver.2 ウェブ公開版。このページからダウンロードできます。 Ver.3 これ以降は有料頒布。スプリット運用に対応。(ブラウンアウトするバグあり) Ver.4 メモリーVFOを8バンドから14バンドに増加。ブラウンアウト回避対策。 Ver.5 メモリーVFOを14バンドから16バンドに増加。領域不足でブラウンアウト対策外す。 Ver.5b DDS基板にバンド番号を送出する機能を追加。(ブラウンアウト対策なし) Ver.5c 液晶表示で、表示すべき桁がゼロの時にゼロ・ブランク動作をするバグを修正。