2012年1月4日水曜日

【回路】AD9850/51 DDS Control Part2

【AD9850/51を使ったDDS-VFO】
 正月気分も程々にAD9850とAD9851を使った安価なDDSモジュールでDDS-VFOのテストをしている。昨年から懸案になっていた実験だ。 VFOのプログラムは「AD9834を使ったDDS-VFO」のものを移植している。 同じようにうまく動いてくれた。何とか正月の休み中に終わってホッとしている。

 プログラムのおもな相違点はDDSへのデータ転送の部分である。VFOとしての機能に関わる部分はほとんど変えていない。回路もDDSモジュールの接続部分を除き共通だ。もしDDS-VFOの機能について再確認したいなら前のBlog(←リンク:DDS-ICにはAD9834を使っている)を参照してもらえたらと思う。 ここではマイコンにATmega328P-PUと言う比較的新しいチップを使ってテストしている。 このあたりの事情は文末のあたりで触れたいと思う。

 機能の違いはないが発生可能な上限周波数はアップした。 前のBlogのAD9834-DDSよりもDDS-ICに与えるクロック周波数がアップしているためだ。AD9850/125MHzクロックで約40MHzあたりまで、AD9851/180MHzクロックで約55MHzあたりまでである。 また、このテストで使用したDDSモジュールはDDS出力がDC結合になっているので極端な話し、1Hz以下まで発生可能だ。(オシロスコープで確認済み・笑)  もちろん通信機のVFOとしては意味がないのでプログラム的に下限も制限している。 通信機の発振器(VFO)ではなくて、低周波を含む広範囲な発振器の製作も可能だ。汎用発振器としてVFOのプログラムを簡略化したものも作りたいと思っている。

(注)以下の話しでは、三種類の「クロック」が登場する。1つはマイコン自身が動作するためのクロックで、マイコン内部の発振器で作っているもの。1MHzあるいは8MHzである。2つ目は、DDS-ICが出力信号を作るために使うクロックで、AD9850では125MHz、AD9851では180MHzである。AD9851では30MHzのクロックオシレータを使い内部で6逓倍している。3つ目はマイコンからDDS-ICへデータを送る時に歩調を合わせるためにつかうクロックである。(シリアル)シフト・クロックとも言う。これらの三種類を混同するとワケが解らなくなるかもしれない。なるべくわかり易く書いているが意識して読んでいただけたら幸いだ。

AD9850-DDSモジュールのテスト回路】
 のちほど説明するプログラムを走らせるためのテスト用回路である。 マイコンにはATMEL社のAVRマイコンから、ATmegaX8シリーズを使う。 このテストの目的ならATmega8、ATmega48(P)、ATmega88(P)、ATmega168(P)、ATmega328(P)のいずれでも良い。 作業手順であるが、基板を作成したらプログラミングのために、BASCOM-AVRコンパイラの初期設定を行なう。(初期設定の方法は→こちら)その後、下記で説明のプログラムを書込むことになる。

 マイコンのクロックはマイコン自体に内蔵のRCオシレータを使う。下記のプログラムを走らせるだけのテスト目的に限れば、ヒューズビットの書き換えは不要である。初期値である1MHzのクロックで十分だ。 従ってこのあとのテスト・プログラムを書込むだけで良い。 なお上の写真の様にDDS-VFOにするならヒューズビットを書き換えてクロックを8MHzにアップする必要がある。これはダイヤルやスイッチの状態を逐次監視し連続処理する必要があるからだ。 具体的には、ヒューズバイト:Lowを、ATmega8なら「E1」から「E4」へ、他のATmega48〜ATmega328Pでは「62」から「E2」に書き換える。それで8MHzクロックに切り替わる。(ヒューズビット/バイトの書き換えに関しては→こちら

 DDSモジュールへの配線方法は、手元の2種類の基板について纏めて書いておいた。 これは、次の写真のような2種類を同じプログラムでテストするためだ。 従って、自分が入手した方のモジュールに合わせた配線をすれば良い。マイコンからはDDSデータ、シフト・クロック、Fq_UDの各信号を配線する。また電源+5Vも供給する。従ってDDSモジュールへはGNDを含めて5本の配線で済む。

 プログラムを走らせてDDSモジュールから信号が出てくればテストの目的は達成だが、マイコン部分はDDS-VFO化したり他の目的にも使える。マイコンの回りは余裕を持たせて場所を開けておく方が良いかもしれない。

いろいろあるAD9850/51 DDSモジュール
 アナログ・デバイセス社製のDDS-ICを使い、使い易くモジュール化したものが多数販売されている。 いずれも中国製のようだ。 おそらく何か簡易な測定器あるいは通信機などの電子機器を製造する目的で開発したモジュールであろう。 写真の形状以外にも何種類か目にした。

 左は、既に紹介済みのものだ。AD9850版なら秋葉原でも手に入る。写真はAD9851版だが基板の見かけはまったく同じである。搭載されるクロック・オシレータの周波数とDDS-ICだけが異なっている。 AD9850版もAD9851版も基板の機能は互換である。(制御も殆ど同じなのでほぼ共通のプログラムで行ける)

 右はさらにローコストなモジュールとして売られていたものだ。今のところAD9850版だけらしい。左の基板よりも簡略化されているが同様に使えることがわかった。 こうした物は「数割」があるので自作好きの皆さんと共同購入している。今回は私が買う番で、少々海外通販のスリルを感じつつも纏め買いしてみた。(幸い問題なし・笑) なお、このDDSモジュールに関しては別のBlog(←リンク)で詳しく扱っている。注:数割=数量割引。いっぱい買うと安くしてくれる。

AD9850/51 DDS-ICのテストプログラム
 プログラム言語はBASCOM-AVRである。DDS-ICのテストプログラムとはなっているが、上記のDDSモジュールが対象だ。 前のAD9834のときと同じように基本的なことを確認するためのものだ。プログラムを走らせてDDS基板から7MHzが出てくればテストは完了である。
 しかし、DDS-ICを使うためのエッセンスはすべて詰まっている。この短いプログラムが動作しないようでは以後どんなプログラムでも旨く行かないだろう。 DDS-VFOなり汎用オシレータなりを開発するにあたっては、真っ先にこうした基本的な動きを確認しておきたいものだ。手に入れたDDSモジュールに異常はないか基本的な確認にもなる訳だ。

 周波数データは純2進数の32ビットで与える。DDS-ICに与えるクロック周波数と関連するので送るべき2進データ値を求めるには計算が必要だ。 リストの300番台の行にその方法を書いておいた。 同じ周波数を発生させるにも、AD9850とAD9851ではクロック周波数が異なるので送るべきデータ値は異なってくる。それぞれの計算方法を示しておいた。
 
 WindowsあるいはMacintoshに備えられた電卓を使うと簡単に純2進データを作ることが出来る。 何か試してみて欲しい。そうすればプログラム・リストの例(7MHz)とは異なった周波数が発生できる。 まずは電卓を起動したら関数電卓に切換え、それを使い式の通り十進演算で答えを求める。続いてそのまま2進電卓のモードに切り替えればそこに現れる数字が2進表現の「答え」なので2進変換はごく簡単である。(笑) なお、DDS-VFOではもちろんこうした演算はマイコン内蔵のプログラムで行なっている。もしもこうして発生した周波数に実測で誤差が認められるなら、DDSクロック・オシレータに周波数誤差があるのだ。計算するときに、ちょうど125MHzや180MHzではなく、実際のクロック周波数で計算すれば良く合うようになる。クロックと得られた周波数は比例関係なので、実測した周波数の誤差分を使って換算すればクロックの正確な周波数が求められる。クロックその物を実測する必要などない。

 上記の計算で得られた純2進データをDDS-ICに転送する部分はAD9834との違いが大きい。但し、転送方法そのものはむしろ易しい感じだ。 周波数データの列を分割して2回に分けて送る・・と言うような細工は必要ない。 単純に32ビットの周波数データを送ればよい。 さらに続けてDDSチップへのコマンド列:8bit(1バイト)を送って終了だ。 合計で40bitデータを送ることになる。

 最初に書くべきだったが、電源を与えたら真っ先にDDS-ICを初期化してシリアル(直列)データモードにする必要がある。周波数の設定などはその後だ。AD9850/51は、パワーオンの初期値は8bit単位のパラレル・データモードになっている。シリアル形式でデータを送るためにはモードを切り替えなくてはならない。リストの「Init_dds」と言うサブルーチンがその切換え部分だ。電源投入後の初期に一回だけ行なえば良い。 詳細は次項を参照。

AD9850/51をシリアル・モードに切り替える方法
 DDS-ICの初期化の部分である。 メーカーの資料に詳しく書いてあるが、説明はやや難解に思えたので自身の備忘として書いておこう。

 8bitのデータバスからコマンドで行なうことが出来るが、そもそもパラレルモードで使っていなければモードの切換えはできない。 そこで、左記のような方法がとれるようになっている。

 AD9850/51から引き出されているデータバス:D0〜D7の下位3ビット、即ちD0、D1、D2を図のように配線しておく。 そのうえで、1発だけシフト・クロック(Wclk)与える。そのあとで直ちにFq_UDパルスを1発与えるとシリアル・モードに切り替わる。

 なお、説明を読んでいてReset端子の操作が必要そうに感じた。試したらReset端子はLow、即ちGNDレベルに固定したままでも良いことがわかった。 電源を加えたあとで、上記のシーケンスさえ行なえばシリアル・モードに入ってくれる。 従って、DDS-ICとマイコンの間はデータと制御の配線3本の他、+5V電源とGNDを合わせても5本の配線でインターフェースできる。

 シリアルモードに切り替わったら、直ちに32ビットの周波数データと、8ビットのDDSコマンドを送ってやる。 周波数データとDDSコマンドの与え方は次項を参照。

AD9850/51へシリアル・データを送る方法
 一旦シリアル・モードに入れば,あとは32bitの周波数データと8ビットのコマンドデータ、合計で40bitのデータを送ってやれば良い。 Fq_UDパルス(周波数のアップデートパルス)を送ると、送ったデータが直ちに反映され新しい周波数が出力される。

 ここで注意すべきなのは、ビット列の送出順序である。 AD9834ではビット列の上位側、即ちMSB側から送出していた。 しかし、AD9850/AD9851ではビット列の下位側(LSB)を先頭にして送る必要がある。 これは8ビットのDDSコマンド(位相情報を含む)も同じである。

 一見難しそうであるが、BASCOM-AVRではShiftoutコマンドの後のパラメータでLSBファーストにもMSBファーストにも簡単に切換えできるから心配いらない。 パラメータの詳細はBASCOM-AVRのshiftoutコマンドの説明に丁寧に書いてあるので参照を。

 なお、AD9851には、外部から与えたDDSクロックを6逓倍する機能がある。その機能のON/OFFがDds_cmdのLSBにあって、「1」でON、「0」でOFFである。 OFFの場合はAD9850と同じように動作する。 AD9851を使った基板では30MHzのクロック・オシレータが載っていた。 従って6逓倍をONすれば180MHzのクロックで動作し、より高い周波数まで発生可能になる。 但し、逓倍に起因するらしいジッターがやや多くなるので、高級な通信機の局発にはイマイチかも知れない。 もちろんテスト・オシレータや周波数特性測定装置などの信号源には不安なく使える。

 AD9851は本質的にAD9850よりも高いクロック周波数を許容すると思われる。従って、内部6逓倍ではなく、外部から直接180MHzを与えてやれば出力信号品質を維持しつつ、より高い周波数の発生が可能なる筈だ。高次オーバートーンで180MHz付近を直接得てクロックとして与えたら面白そうだと思っている。

DDSモジュールをテストしてみる
 電源は+5Vを与える。 DDSモジュールの消費電流は実測の平均で110mAくらいであった。 +5Vの3端子レギュレータは放熱なしでも何とかなる範囲であるが、他への供給を考えて簡単なヒートシンクを付けておこう。 この程度のヒートシンクでは300mAくらいまでと思った方が良い。 いくら1Aタイプのレギュレータを使っていても、放熱が悪ければ遥かに少ない電流までしか許容できない。

 DDS基板には約70MHzをカットオフ周波数とするLPF(低域濾波器)が実装されている。 しかし、AD9851/180MHzならともかく、AD9850/125MHzクロックにはカットオフ周波数が高過ぎる。40MHzあたりが適当な所だ。 チップ部品の載せ換えでカットオフの変更も可能だが少量のチップ部品入手は難しいかもしれない。従って、DDSモジュールの外で増幅+フィルタを行なう方が良さそうだ。 簡単な実験程度なら、このままでも良いが実用にするならもっと目的に適したフィルタを外付けしないと旨くないと思う。 もしスペアナが利用できるなら良くスペクトラムを観測しておこう。

 搭載されているこうしたクロック・オシレータには周波数誤差があることを前に書いた。このDDSモジュールでも例外ではなく最大では+13ppmくらいの誤差があった。  初期周波数の誤差はプログラムによってソフト的に補正してしまうので何ら支障はない。 問題になるのは温度による周波数変動の方である。室温の変化から様子を見ていたら1〜2ppm/℃程度なのでまずまず安定と言えそうである。 もちろん自励発振器やVXOなど目ではない。 安価なDDSモジュールとは言え、周波数シンセサイザの威力を十分に発揮してくれる。

               ☆ ☆ ☆ ☆ ☆


エピソード:プログラム開発中のトラブル
 あらかじめ書いておくが、このBlogに掲載した簡単なテスト・プログラム(上記)ならまったく問題なく動作するから以下のことは心配はいらない。問題ない用途へなら古いチップもどんどん使うべきだ。

 実は、AD9850/51 DDS-VFOのプログラム開発作業で半日トラブった。 もともとAD9834用に開発したDDS-VFOプログラムをベースに開発していた。 ところが、手を加えてもいない部分でコンパイラのエラーが続出したのであった。 具体的にはTimer割り込みと内蔵のA/Dコンバータの部分である。 それぞれ割り込みコマンドやA/D変換のステートメントが未定義であると言うエラーが出たのだ。

 結論から言えば、BASCOM-AVRが少し古いチップをサポートしていないのが原因であった。写真奥のATmega168は既に5年以上前のチップだ。いま出ているのはサフィックスにPの付いた、ATmega168P-PUである。 ATmega168Pならエラーなくコンパイルできるのに、Pなしの旧型チップは不完全なチップ定義ファイルらしく未定義エラーが続発するのであった。結局、写真手前の新型チップ、ATmega328Pに変えたらコンパイル一発でノーエラーである。あっけなくAD9850版のDDS-VFOが完成した。(笑)

 もちろん、単純なポート操作程度のプログラムなら問題なかったのだろう。しかし、割り込みと言った少し高級な処理をともなうと古いチップに対するBASCOMの対応は不完全なようである。 原因がわかったから良かったようなものだが、エラーに悩んでお正月の半日分を損した気分である。(-_-)

 結局、こうしたマイコンのような部品は買い溜めたらダメである。 少々割高でも必要な分をその都度購入するに限る。そして余分に買ったら早めに使い切ろう。 BASCOMのエラーから教えられた教訓であった。(いつものことだ・笑) de JA9TTT/1

(終わり)
             ☆ ☆ ☆ ☆ ☆

【追記】ATmega168(8,48,88のPナシ含む)への対処方法:(備忘:2012.1.9)
 まずはBASCOMのフォルダを開いてみよう。BASCOM-AVRをアップデートすると、以前のチップ定義ファイル(例えば:m168def.dat)は「BACKUP」と言う名前のフォルダに保存される。(自動的に保存されている) このBASCOMフォルダのトップレベルには同名の新しいチップ定義ファイル:(この例では:m168def.dat)が置いてあって、コンパイル時にはこちらの新しい方が使用されるようになっている。

 上記の問題はこの新しい方のチップ定義ファイルに問題があるのは明らかだ。従って、新しい方のチップ定義ファイルをどこかに一旦退避させた上で、「BACKUP」フォルダ内にある前のチップ定義ファイルをトップレベルに持ってくることで解消できる。 これでPなしのATmega168,etcでも問題なくコンパイルでき、正常な動作が確認できた。従って、現在はATmega168-20PIで動作させている。もちろん快調である。(BASCOM-AVRも一旦、Ver.1.12.0.0に戻している)

 そもそも、それほど新しい機能を使っている訳でもないので古いバージョンのBASCOMのままでも良かった訳だ。 無闇にバージョンアップしないと言うのも教訓かもしれない。これで買い置きのATmega168-20PI,etcを無駄にせずに済む。 コンパイルできて書込みさえ出来れば別段P付きの新チップでなくても何ら支障はない。 もしも同じ問題に遭遇してしまい、旨く行かないならメールでも頂ければと思う。遠慮なくどうぞ。

(めでたし、めでたし)

続編:「安価な中華DDSモジュールについて」へつづく(←リンク)

2011年12月1日木曜日

【回路】Freq. Response of Filter on DDS Module

DDSモジュールのフィルタ・シミュレーション
 DDSでは原理上折り返し信号(スプリアスとなる)が発生するため、出力側に良く切れるフィルタの付加は必須である。 AD9850/AD9851 DDS-ICを使ったDDSモジュールには有極型の7次低域濾波器(7th order Low-pass Filter)が構成されている。

 左図はそのフィルタ部分を抜き出して回路シミュレータ用に書き出したものだ。 DDS-ICから見た負荷が100Ωになるよう設計されているため、負荷を分け合う形からフィルタの設計インピーダンスは200Ωになっている。なお、4:1のインピーダンス変換トランスを外付けし、50Ω出力にして使う際には基板上のR7(=200Ω)は除去する必要がある。言うまでもないと思うがR9(=200Ω)の方は取ってはいけない。

 なぜフィルタが200Ωの設計かと言えば、DDS-ICのD/Aコンバータが電流出力型であって、コンプライアンス電圧はわずかに1Vしかないからだ。 従ってD/AコンバータのI(max)=10mAとすれば、負荷抵抗RL=100Ωが最大となる。 またIC自身の出力インピーダンスは電流出力型ゆえにかなり高い。そのためIC直近の負荷を200Ωとし、さらにフィルタ後の負荷を200ΩとすることでDDS-ICから見たら100Ω負荷となるようにするとともに、In/Out対称型としてフィルタの設計が容易になるよう考慮している。(以上、私の解析)

DDSモジュールのフィルタ特性
 シミュレーションの結果は左のグラフのようになった。部品には誤差があって、基板にはストレー容量や配線インダクタンスも存在する。 従って、現実にはシミュレーションの理想通りにはならないかも知れぬ。 しかし概ね同じようになるはずだ。

 もっと通過帯域の「うねり」が大きいのではないかと予想していたが、意外に良好である。 約73MHzで-3dBであり、だいたい70MHzまでは平坦に通すよう設計されている。減衰域も-70dBくらい得られそうなのでマズマズだ。

 シミュレーション結果が悪ければD/Aコンバータ以降の回路はすっかり作りなおそうと思っていたが、その必要もなさそうだ。 もっとも、もっぱら低い周波数で使うのであれば、さらにカットオフ周波数の低いフィルタを付加すべきだ。 DDS-IC出力には折り返しノイズだけでなく、非高調波成分など広帯域で多様なノイズが含まれる。必要帯域幅に絞って使うのが旨く使うコツである。 なんでも広帯域ならよい訳ではない。

 基板上のLPF部分に目をやってみよう。部品はすべてチップ型なので物理的なサイズは十分小さい。配置もコンパクトだ。これならシミュレーションとさして違わぬ特性が得られそうだ。折り返しスプリアスを心配せずに十分使えそうである。

                 ☆ ☆ ☆ ☆ ☆

 まずは、DDSモジュールから信号を・・が先ではないかと言う声もあろう。 その件は既に他のお方(JE6LVE/3高橋さん)が先行確認されてるので、いずれ問題になりそうなDDS出力の低域濾波器(LPF)を探ってみることにした。 DDSモジュールのLPF部分を直接ネットワーク・アナライザで見てしまうのも良かろう。しかし設計特性もしっかり押さえておけば思わぬ測定結果にも慌てずに済む。  de JA9TTT/1

つづく)←続きへリンク

2011年11月28日月曜日

【部品】AD9851 DDS Control Part 1

DDS モジュールの制御:DDS Module Controller
 突如安価に登場した中国製らしいDDSモジュールはそのままでは何も機能してくれない。信号を得るには基板に搭載されたDDS-ICにしかるべきコマンドを与え、周波数データも送り込まなくてはならない。

 アマチュアのあいだでポピューラーな秋月電子通商のDDSキットは基板上のDIPスイッチからデータを読み込み、スタンドアローンで信号発生できるようになっていた。しかしこちらのモジュール(写真手前)は単独で動作できるようにはできていない。たった一波の発生でさえも必ず何らかのコントローラーが必要だ。

 もちろん、コントローラにはマイコンが普通だろう。しかしマイコンなしでDIPスイッチとシフトレジスタを組み合わせたハードロジックでも不可能ではない。配線が大変なので私はやりたくないけれど・・・。AVRマイコン+BASCOMでやる方がずっとスマートだ。

 写真奥はATmega88を使ったマイコン基板である。もともとは内蔵の10bit A/Dコンバータを実験するために作ったものだった。 ポートもたくさん余っており、実験には良さそうなのでDDSモジュールのコントロール実験に流用することにした。LCDの配線とか、意外に面倒なので既存の基板があれば楽である。この実験後もA/Dコンバータ部分に手は付けない予定なのでプログラムを元に戻せば何時でも前に帰れる。このあたり、Flash memoryマイコンの良い所だ。

 手前の基板には DDSモジュールを載せ、ほかに5Vの安定化電源(3端子Reg.)とDDS出力のアンプなどを置くつもりだ。 DDS-ICの消費電流は大きいので上のマイコン基板からは供給できない。別途+5V電源が必要だ。 実験が済んだら元へ戻すのも良いが、全部を小型の箱に収納してしまい簡単な発振器として使うのも良さそうだ。もちろん周波数はロータリーエンコーダー等で連続可変にすべきだ。ほかにレベル安定のためのALCやAM変調回路も内蔵しておくと簡易な実験用信号源として便利に使えるだろう。できてから考えてみたい。 AD9834用に作ったAVR基板の流用も容易なのだが、テスト継続中なので手をつけずにそのままにしておきたい。

DDS-ICはAD9851
 前のBlogを記憶しているなら「あれっ?」と思うかもしれない。 実はこのモジュールにはAD9850を使うものとAD9851を使う物が売られている。この二つのDDS-ICはピン・コンパチブルなので同一基板に実装できるのだ。さらに制御プログラムの方もほとんど同じで行ける。残念ながら先にAD9850を購入したaitendoにはAD9851モジュールの方は無いようである。(今のところ・笑)

 このAD9851モジュールは中国の通販ショップから購入した。(共同購入に参加させて頂いた。VY-TNX!) そのショップは単品で@$35-であるが、数量割引があって3〜6個の購入で@$30-、7〜20個では@$28-になる。数名で纏め買いしたので@$28-になった。為替レートを$1-=¥80-と仮定すると@¥2,240-になる。なお中国から日本国内への送料は無料であった。(参考:同じショップでAD9850モジュールならさらに安価。単品で$25-、3〜6個で@$20-、7〜20個なら@$18である。高い周波数の必要がなければこちらの方が経済的)

海外通販は注意深く!
 海外通販の安全性、ましてや中国からの安全を保証するものではないが、取りあえず問題はないようである。誰彼かまわずにお薦めできるものではない。各自の責任に於いてチャレンジされたい。ショップの永続性も怪しいものがあって、責任は持てないから購入先へのリンクは省略させてもらおう。(各自検索で。私への問合せはご遠慮を)

 AD9850とAD9851の違いであるが、これからの評価と言うことになる。簡略にテストされたお方によれば、おおまかな評価では差は感じられなかったそうである。 自身が重きを置く性能・機能が十分なのかも確認する必要があるので、このあと自身でも実験してみたい。簡単に言えば評価ポイントは信号の奇麗さの比較になる。

 AD9851は内部にクロックを6逓倍する回路が内蔵されている。従ってAD9850のように125MHzと言う高いクロックを直接与えなくて良い。写真のAD9851モジュールでは30MHzのクロック発振器が搭載されていた。従ってDDS内部は180MHzのクロックで動作することになる。このため125MHzのクロックであったAD9850モジュールよりも、もっと高い周波数まで発生可能だ。 検証が必要ではあるが実用上限は60MHzあたりであろう。 従って局発に使えば比較的高い所にIF周波数を採ったシングルスーパーでHF帯全域がカバーできそうだ。 もちろん信号が奇麗であると言う前提は必要なのだが・・・。(BCLラジオくらいには十分イケそうだ。いや、もっと・・・)

                  ☆ ☆ ☆ ☆ ☆

 数日で2011年の11月も終わってしまう。一編もBlogがない月は寂しいものだ。それで急遽用意したテーマなので評価前の予告編になってしまった。(笑) ここではAD9850だけでなくAD9851を使ったDDSモジュールも(安価に)登場していると言う話題を提供できたなら今月の目標は一応達成である。de JA9TTT/1

つづく)←続きへリンク

2011年10月11日火曜日

【部品】Improve the use of TA7358P -Part 1

TA7358Pの使い方を改良する
TA7358Pと言うIC
 いまでも普通に流通していて、手軽に使えるDBM-ICと言えば東芝のTA7358P/TA7358APくらいだろう。 APの方は製造プロセスの改良で、多少性能が良くなっているらしいが本質的にはどちらも同じものである。いずれも1個100円くらいで買える有難いICだ。(注:最近TA7358PG/APGと言う末尾G付きが登場している。これはRoHS対策品で、足ピンのメッキは異なるが性能は同じ)

 SN76514N、SN16913Pと言った使い易いDBM-ICが入手できなくなって、このTA7358P/APが自作ハムに注目されるようになった。 ところが赤のアンダーラインで示した部分がHAMの活用では問題になるのである。 これはこのICを使った人なら実感を持っておわかり頂けるだろう。

TA7358Pのブロック・ダイヤブラム
 シングル・インライン型9ピンのパッケージに、RFアンプ(1〜3ピン)、ダブル・バランスド・ミキサ(DBM)(4〜6ピン)、それに局発回路(7〜9ピン)がコンパクトに内蔵されている。

 少ないピン数で、FMラジオの入力回路部(フロントエンド部)が構成できる。 電源電圧も1.6〜6Vと幅広く、消費電流も少ないのでポータブルなFMラジオを作るのに最適にできている。

 このように、FMラジオ用に良くできており、「ミクサー出力のクランピング・ダイオード」も、FMラジオには有効な機能である。(それ用に作ったICなのだから当たり前だが) 放送局が近く非常に電波が強い時には効果的なのだ。クランプされてもFM波ならあまり支障はない。

TA7358P/APのDBM部分
 図の様に典型的なギルバート・セル形DBMになっている。 MC1496G/P(←関連ページにリンク)の時代から続く標準的な回路で、IC化するとバランスが良いのでキャリヤ・サプレッション(搬送波抑圧比)は良好である。

 特に、TA7358Pでは内部のデバイス特性が良く揃っていて、パターンレイアウトも良いためか、バランス調整なしでもかなり良好な性能が得られるようだ。

 ところが、図の赤で囲ったダイオード(=IC内部にある)が邪魔なのだ。このお陰で、DBMの出力振幅はダイオードの順方向電圧(約0.7V)を越えることができない。 DBM回路そのものは未だ十分リニヤな動作範囲にあるのに、ミキサー入力信号が大きくなるとダイオードのお陰で出力は歪んでしまうのだ。 以下の実測写真でその作用が良く見える。

 MC1496G/Pはもちろんのこと、SN76514NやSN16913Pをはじめ、SA602(=NE602)、SA612(=NE612)ではこのようなクランピング・ダイオードは入っていない。汎用に使うためには邪魔なダイオードである。 取ってしまいたいと誰しも思うが、ICの中にあるものを取る訳にも行かない。 「東芝さん、余計なことをしてくれましたね・・」とつぶやく自作HAMも多いのかもしれない。(笑)

TA7358Pの出力波形
 単純なDBMとして動作させてみた。 DSB信号なので、ツートーンと同じようなエンベロープになる。従って正弦波状のエンベロープになるはずだ、(キャリヤ周波数:1MHz、AF信号:1kHz、出力部はRFC負荷で非同調)

 しかし、出力部分のダイオードのお陰で物のみごとに1.4Vppでクランプ(クリップ)されている。 我々のアプリケーションのように、振幅に意味がある信号を扱うには注意が必要なのだ。 歪みなく使うためには、このDBM回路から1.4Vpp以上の信号を取り出しては旨くない。(注記:ダイオードの片側は電源電圧に固定さている。電源電圧を起点に+0.7Vと-0.7Vでクランプされるためp-p値では1.4Vとなる。2011.10.13)

 しかし、そうすると応用には制限が生じてしまう。 SSBやAMと言った振幅変調系の信号を扱う受信機では、かなり入力信号を絞って使う設計にしなくてはならない。 それでも突発的に強い信号がミキサーに加われば、感度抑圧現象や相互変調歪みが発生してしまうことになる。 ちょっと気の利いた設計の受信機には使えないICだ。

 SSBジェネレータに使うにも、音声信号の振幅を良く管理しなくてはならない。 そうしないとコンプレッサが掛かったような、「音声ピークが抑えられたSSB信号」になってしまう。  一見トークパワーが上がって良さそうに感じるかもしれないが、単純に音声ピークが抑えられるだけではない。 音声は複合信号なので、信号相互の相互変調歪み成分が音声帯域内にも発生してしまう。 音が濁って発生させたSSBの音質を害してしまうのだ。 そうかと言って、音声信号を抑えて使うと、キャリヤ・サプレッションで損をするし、S/Nも悪くなるのでSSBジェネレータに使うにも不利である。

 結局、このように見て行くとTA7358P/APは、「所詮FMラジオのフロント・エンドなのだ」と割り切って使うことになってしまう。 ずいぶん前に生産中止のSN76514NやSN16913Pをいまだに探す人があったり、外付け部品が多くて少々使いにくいMC1496G/Pを使い続ける人がいるのもうなずける。(JRC製のセカンドソース:NJM1496D/M/Vが生産中)

TA7358P/APの使い方を工夫する
 これが今夜のBlogのテーマ、「使い方の工夫」で実現したときのDSB信号の写真である。 上記と同じ信号を与えている。オシロの目盛は同じになっている。 一目瞭然、約13Vppの信号を取り出しているがオシロで見た範囲では目立った歪みは見えない。(キャリヤ周波数:1MHz、AF信号:1kHz、出力部はRFC負荷で非同調)

 内部回路図にあった、クランピング・ダイオードで制限されないようにTA7358Pを使っている。 もちろん、入力を増やして行けばやがて歪むが、その歪みはクランピング・ダイオードの作用ではない。 他のDBM-ICと同じように有限の電源電圧や回路電流によって起こる飽和現象の為である。

 TA7358Pの内蔵ダイオードを外から焼き切って「無き物」にしてしまった訳ではない。 もちろん、ICは定格電源電圧の範囲内で使っている。 何ら無理な使い方はしていない。 このようにクランピング・ダイオードを気にすること無く他のDBM-ICと同じように使えるようになった。

            ☆ ☆ ☆ ☆ ☆

 最近,オークションで纏めて落札したと言うTA7358Pを安価に分譲して頂く機会があった。 以前から安価に流通していることはわかっていたが、上記の問題があって活用が制限されると感じていた。 これまでは手を出さずにいたが、折角のICを無駄にするのも勿体ない。 何とか改善できないものだろうか。様々考えてみた。

 良さそうなアイディアが纏まって来たところで三連休の最後に試す時間を取ることができた。 実験を始めて、考えそのものは良かったのだがTA7358Pには別のクセがあって、それがワルサをして少々トラブってしまった。 結局、写真ような奇麗な波形が得られてアイディアは有効だとわかった次第。これでもうちょっと有意義な三連休にすることができた。 今日は神社に参拝して来たのが良かったのかも。(爆)

 TA7358Pのクセの問題も合わせて、改めてBlogできたらと思う。 de JA9TTT/1

(おわり)

2011年10月7日金曜日

【回路】AD9850 DDS Module

AD9850を使ったDDS基板
 AD9850と言うDDS-ICとクロック発振器ほか周辺回路の部品を実装した基板を購入してみた。 基板完成状態で@3,500円であった。 これは安いのだろうかと言う話しになりそうだ。
 3週間ほど前に注文したが品切れで待たされた。 売り切れ=キャンセルではなくて再入荷を待ったようだ。これは単発のジャンク品ではなくて継続した供給が可能なようである。自作機器には重宝なので永続的な供給を期待したいと思う。(参考:aitendoと言うネットショップで購入)

 秋月で売っていたDDSキット(←参考リンク)は6,400円(*注)であった。こちらは基板完成状態なのでお買い得と言えそうだ。 但し、秋月キットは基板単独でも発振器として使い得るのだが、こちらはマイコン(パソコン)の助けが必須である。 初期化してから必ず周波数データを送ってやらねばならない。マイコンが使えないと便利な基板にも手が出せない時代なのである。(*注:5,400円に値下げされたあと、現在は販売終了したもよう。2017.05.14)

参考:現在ではより一段と安価な中国製DDSモジュールが登場している。これから手に入れるなら断然そちらがお薦めだ。クロックの高純度化とあわせて詳細は別のページ(←リンク)で扱っている。このページを読んで概要を良く掴んだ後で合わせてご覧を。(2012.02.26)

AD9850-DDS基板回路図
 これは参考回路図である。 このようにAD9850を中心にクロック発振器と周辺部品が搭載され、必要な端子がコネクタに引き出された基板になっている。コネクタ部は2.54mmピッチなので普通の蛇の目基板に実装できるようになっている。(注:一部回路図と現物が違っている。現物のシルクを見るとわかるがJ5のGNDとD7は入れ違って逆である。回路図が間違っており、正しくはJ5-Pin7がGNDでJ5-Pin6がD7である。TNX! JE6LVE

 出力部には有極形の割とマトモそうな形式のLPFが付いている。fc=70MHzだそうだが、E系列の標準部品で構成しているので実測するかシミュレーションで特性を確認してみたい感じ。60MHzくらいまではフラットに通しそうだ。DDSから上限いっぱいまで取り出すには単純なπ型では厳しいのだろう。内蔵D/Aコンバータ(DAC)とLPF設計の都合で出力インピーダンスは200Ωになっている。50Ωで使うなら外部にインピーダンス変換器が必要だ。レベルも低めなので汎用信号源にするならゲインのあるバッファアンプの付加がお薦めだ。クロック周波数が125MHzなので、電源電圧:+5Vで使うことになる。電源電流はこのボードのみで150mAくらい見込む必要がありそうだ。(記述一部修正:2011.10.9)

 何か、汎用の目的で開発した基板なのだろうか? このDDS基板を元に信号発生器ばかりではなく、受信機、周波数特性測定機・・・様々な機器に活用できるだろう。

 見ての通りAD9850からはデータバスが引き出されている。従ってパラレル、あるいはシリアルのいずれの形式でも周波数データを設定できる。但し秋月DDSのように、単純に「DIPスイッチで」とは行かないから注意を。 いまではワンチップ・マイコンが安価である。高機能は追求せずに周波数設定だけが目的なら制御プログラムもごく簡単だろう。使いこなすまでにはアナログ・デバイセス社の資料を詳細に見る必要がありそうだ。

 HAMの活用だが、たとえばSSB復調器用のBFOのように数波をスイッチで切り替えれたいだけなら周辺回路を含め非常に簡略化できる。 費用もむしろ数個の水晶発振子を特注するより安価であろう。 たいそうな「DDS発振器」ではなく、ごくシンプルな水晶発振器の代用として使っても経済性は悪くない。

使い方のTIPS:基板上のJ1〜J4およびJ5(Reset)の意味と処理方法。
 シリアル通信モードで使う場合はJ1をショート(短絡)すること。また、J3は出力DACの電流を加減する端子である。ショートしておくか、何か抵抗を入れて電流を可変するようにしておく。オープン(開放)のままでは出力が出てこない。なお、周波数データ32bitと制御コマンド8bitの計40bitのパルス列はJ5-Pin6のD7にシリアルに与えること。(以上、必須)
 J2は矩形波出力を必要とする時にはショートする。矩形波の出力端子ははJ7のWAVE3とWAVE4(反転)である。通常はJ2オープンで良い。J4はLPFを通らないDAC出力のモニタ端子なのでオープンのままにする。別のLPFを外付けして、例えば低周波専用にするetc.の場合はこのJ4端子を使うと良い。J5のPin3にはMaster Resetが引き出されている。HighでAD9850はResetされる。Reset後はLowに固定しておく。たぶん、Lowのままでも大丈夫だ。(TIPSは私の回路の解析から。引用する場合は参照もと明記のこと)

クロックは125MHz
 搭載されているクロック発振器は125MHzである。AD9850の規格上限クロック周波数になっている。

 125MHzクロックの場合、折り返しと重なる上限の周波数は半分の62.5MHzである。 ただし、製作可能なLPFの特性や、スプリアスのレベルから考えると、そこまでは使えない。クロック周波数の約1/3程度、即ち40MHzあたりまでが実用範囲と考えるのが合理的だろう。前に扱ったAD9834より一段と周波数が高くHF帯がフルにカバーできるのは有利だ。 125MHzクロックの場合、最小周波数ステップは、クロックの周波数が正確であるとして、0.02910383046Hzとなる。 要するに周波数の刻みはクロックを2の32乗で割った周波数になる。

 こうしたクロック発振器には必ず誤差がある。正確な周波数の発生にはプログラムによって「デジタル的な周波数補正」を行なうべきだろう。 周波数が高いことでオシレータ自身の発熱も幾分多そうだから温度ドリフトも多めかもしれない。 安定度も考慮した周波数精度は1〜2ppmの誤差ではないかと思う。それでも十分安定なVFOになるだろう。

 AD9850:DDS-ICの欠点はAD9834と比べて消費電流が大きいことだ。ポータブルな機械には向かないが、AC電源で動作する機器なら支障はない。それに周波数範囲が広いのはかなり大きなメリットだ。

                 ☆ ☆ ☆ ☆ ☆

 まず始めにDDS-ICを入手し、さらにクロック発振器も用意したら変換基板に実装して自作すると言うのが従来の工作スタイルだった。 しかし、表面実装のチップを変換基板でピッチ変換し、さらには蛇の目基板で自作するくらいなら、こうした基板モジュールを使ってしまうのも悪くないかもしれない。 部品代の総計から言っても、けして高いものではないと思う。 実は、この基板は中国製らしく、中国直送でさらに安価なショップもあるそうだ。(笑)

#あとはプログラミングでこれを旨く使いこなすだけだ。 de JA9TTT/1

つづく)←リンク