1チップ送信機

トランジスタ技術誌主催のマイコンデザインコンテストに応募した終段AT90S1200 1.9MHz送信機です。
「エレキー付き送信機」、もしくは「送信機付きエレキー」と言ったほうがよいかもしれません。
実用性はともかく、1チップでここまで機能を押し込んだ ということを笑ってください。

主な機能
1、送信周波数1.907MHzから1.913MHzまで連続可変
    周波数表示付き
2、長短点メモリー付きエレキー機能
    スピードは連続可変(もちろん送信中も)
3、サイドトーン発振器内蔵
    周波数はプログラムで作る
4、セミブレークイン機能
    アンテナ切替リレー付き
5、送信キャリアは連続位相でデューティーも1:1
    偶数次高調波と余分なスプリアスを減らすためもっとも苦労したところ

最終的には0dBm(!)の出力と、高調波はー60dB以下となった。


すべてアセンブラで記述したが、キャリア生成中に
  割り込みは一切使えない
  ビット判断による分岐は使えないためフラグなどはバイト単位で使う。
  サブルーチンは使えない。
という笑えない制約が生まれた。
その中でエレキーとかの機能を押し込んだわけです。

全体です

11個のLEDによる周波数表示(500Hzステップ)
大きなVFO(VXO)つまみと小さなエレキースピードつまみ

トロイダルコアは高調波を押さえるローパスフィルタ

パドルも自作です。

基板もプロに頼んじゃいました。
中身です

マイコンはアトメルAVR AT90S1200 です

マイコンのクロックは11.5MHzでバリキャップでVXOしてます

周波数測定のため4MHzの発振モジュールを1個、あとはTR、Diが数個です

圧電ブザーは他励式です


以下備忘録的メモと、簡単説明PDF回路図PDFアセンブラソースPDF です。(著作権は私くぼたが持っています、勝手に使ってはダメ)




終段 AT90S1200 ワンチップCW送信機

1、設計目標
CPU1個でアマチュアバンド用CW送信機を実現する

具体的には
キャリアはポートのON/OFFで生成する。
生成するキャリアのデューティー比は1:1とし偶数次高調波を減らしてローパスフィルタの次数を減らす。
キャリアの純度を上げるためキャリアは連続位相であること
周波数はバンド内を連続可変できること
周波数の表示ができること

その他オプションとして
スクイズキーをつなぎ長短点メモリー付エレキーの動作ができること
エレキーのスピードは連続可変可能なこと
縦振れ電鍵も接続可能なこと
サイドトーン発振器を持つこと
セミブレークイン機能を持ち、アンテナ切替リレーを内蔵する

これらの機能を目標として設計に入ります。


2、キャリアの生成
CPUの出力ポートをプログラムでON/OFFすれば特定の周波数の発信機となります。
最も簡単なプログラムは

  LOOP: ポートH
       ポートL
       ジャンプ LOOPへ

この場合3つの命令がすべて1マシンサイクルで実行されるならデューティー比は1:2となります。
後述のアトメルAT90S1200ではジャンプ命令は2マシンサイクルなので1:3となります。
設計目標のデューティー1:1のためには

  LOOP: ポートH @
        1マシンサイクル消費(NOP命令) @
        1マシンサイクル消費(NOP命令) @
        ポートL @
        ジャンプ LOOPへ A

となり6マシンサイクルで1サイクルの出力ができます。ここで1サイクルの出力にNOP命令が2個あり、
このループを工夫してNOP命令を他の命令に置き換えればデューティー1:1を維持しながら他の機能を
埋め込むことが可能となります。


3、CPUの選択
CPUは入手容易でオーバークロック動作をせず、という条件で探した結果アトメルのAT90S1200を使用する
こととし、AT90S1200の動作クロック上限12MHzと、前述の6マシンサイクルという制約からアマチュアバンドは
1.9MHz帯としました。


4、周波数の可変
1.9MHz帯のバンド幅5KHzをを連続可変することをプログラムで実現するのはさすがに無理なので、CPU外付け水晶
をインダクタとバリキャップでVXO化することにしました。
水晶の周波数は1.910MHzx6=11.46MHz付近となりますが、VXO化により下がりますので11.526MHzを用意しました。


5、周波数表示
送信周波数を知るために内蔵の8bitカウンタを使います。基準周波数が必要となるためカウンタに外部より4MHzを
注入して、プログラムによりゲート時間を生成しカウント値から周波数を計算する手法をとりました。
一般的な周波数カウンタとは違い、ゲート時間がVXO化されたCPUのスピードで変わり、それで基準周波数を測定する
という手法です。
具体的には送信周波数1.910MHzでゲート時間4.775218mscとするとカウンタ値が1変化するのは約100Hzとなります。
500Hzごとに並べた11個のLEDにより周波数表示を行います。
この周波数表示はキャリアを生成中は動作させませんが、ドット/ダッシュ後の1スペース中は動作しますので不都合は感じません。


6、エレキー動作
これは一般的な長短点メモリー付スクイズキーヤなのでプログラムとしては新しいことはありません。
しかし最近親指の動きが遅くなった為か短点が余分に出るため短点側メモリーはやめました。
エレキーのスピードはボリュームによる連続可変(送信中も)とするため、ポートからCRに充電し、内蔵のアナログ
コンパレータにより放電を監視する方法としました。コンパレータ入力の片側はボリュームにより電圧を可変し
基準電圧を変えそれにより1ドットぶんの時間を作っています。


7、その他
サイドトーンは他励式圧電ブザーを使い、周波数はプログラムにより作ります。
電鍵の接続はスクイズキーのドットと並列に接続し、電鍵を下ろしたまま電源をONすることで動作モード
を変えます。周波数の調整とかには便利な機能です。
セミブレークインは簡易的にキーを離したあとスピードボリュームの1ドット分のウェイト後アンテナリレー
をOFFします。
方形波から不要な高調波を取り除くローパスフィルタは以前実験した-----で設計しました。


8、プログラム
デューティー1:1を崩さず、また連続位相とするためにキャリアの生成時はいろいろな制約が生まれます。
 割り込みは一切使えない
 ビット判断による分岐は使えないためフラグなどはバイト単位で使う。
 サブルーチンは使えない。
これらをすべてアセンブラで記述しました。


9、結果
これらの仕様で製作した結果
送信出力 0dBm  保護抵抗のロスが多いが、出力を上げるなら外付けアンプを使った方がよい。
スプリアスは 2倍波:-60db以上 3倍波:-60db デューティーを崩すと2倍波は20-30db悪化する
という結果となりました。


10、終わりに
普段はPICのみで、AVRマイコンは初めて使いましたがPICの2倍以上の高速動作を満喫できました。
送信機としてはミニパワーですが、十分実用になるものと自負しています。
工事設計書に記載する終段名称は”AT90S1200”となりますが、終段入力はどのように書けば良いか
わかっておりません。