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

つづく)←リンク

2011年9月29日木曜日

【部品】14.318MHz Crystals

14.318MHzのクリスタル
 写真はHC-49/U形の14.318MHzクリスタルだ。すでにこの形式は旧式であり、高さ方向をつめた後継のHC-49/USでさえ国内の製造は終わったと聞く なんでも表面実装で組立てる時代になって、こうしたリード付き部品は流行らないのである。

 整理していてたくさん出て来たので、どう料理しようか思案中だ。 オーソドックスにラダー型クリスタル・フィルタの用途が一番だろうか。 ハムバンドに入っているので、14MHzのリグには向かないが他のバンドなら良いかもしれない。

 TVがデジタルに移行したので、もはやNTSC方式のアナログ・カラーTVは作られないだろう。 14.318MHzのクリスタルはNTSC方式のカラー副搬送波(=3.579545MHz)を作るために使われていた。 時代を反映したジャンク部品も時とともに消えて行くに違いない。

秋の夜長、クリスタルの選別から始めてSSBジェネレータの製作など如何だろうか?
de JA9TTT/1

(つづく)

2011年8月7日日曜日

【部品】making replica FCZ Coils

いわゆるFCZコイルの製作
 FCZコイルの模造品を作ってひと儲けしようと言う魂胆じゃない。 商売として模造品の製造が可能なくらいなら、今でもホンモノが継続していただろう。継続に向け関係者が様々な努力をされた結果の製造中止だろう。しかし慈善事業ではないから採算にのらなくなれば致し方あるまい。

 なくなってしまったものは仕方がない。どうしても必要ならオークションで「金力勝負」に出るか、頭と手先を使って「使えるもの」を自分で作るしかない。 自作HAMとして、金力頼みではいささか悲しいから手作りの方をお薦めしたい。 FCZコイルの設計意図はにわかには計り知れぬ所もあるが、電気的に同一、あるいは類似のコイルなら十分に手作り可能だ。こうしたコイルの性質を知っていれば幾つかの情報だけで十分作れる。 もちろん、さしたる道具も必要としない。

 写真は、CQ Hamradio誌2011年9月号に掲載予定の拙記事である。 FCZコイルが生産中止になって既に数ヶ月経過している。 だれかが既に類似記事を投稿しているかと思ったら、そうでもなかったようだ。しばらく前から「FCZコイル」関連のキーワードでこのBlogに来る人が急増していた。それでこのニーズには何とかする必要があると感じていた。

 秘伝でもなんでもないが、アマチュア的で十分使用可能な代替品(模造品?)の作り方(ノウハウ?)を掲載して頂いた。 中身はその実オーソドックスなものである。コイル巻きのベテランなら既に実践中かもしれぬ。しかしFCZコイルは『使うもの』で、『作るもの』ではなかったなら記事は新鮮だろう。勿論どこかの話しの焼き直しではない。 近ごろはみな短いなかで全6ページと奮発して頂いた。FCZコイルに困ったなら役立つかも。 いわゆる10Kとか7Kと言われるコイル形式で作る例を扱っている。

 CQ Hamradio誌9月号は、2011年8月19日発売予定だ。 一部地域や直接購読者はもう少し早く読めるそうだ。 9月号は品切れ必至だから(ホントかなあ?・笑)お早めに近くの書店でどうぞ。もちろんAmazonにもありますとも。(注:9月23日現在、Amazon.co.jpの在庫が復活。ほか古書店からはなぜかこの号だけプレミアム付きで出品されている。Amazonの在庫が切れたらまずはCQ出版に当たってみる方が良い。出版もとでも品切れたら該当ページのコピーサービスを受けるのが得策)

続きも:『FCZコイル+トロイダル』のキーワード検索もかなり頻繁にある。 入稿済みだった『トロイダル・コアで作る続編』がCQ Hamradio誌2012年3月号(←紹介ページにリンク)に掲載された。こちらにも『Something NEW !』をタップリ盛り込まれていると思う。トロイダルコアでFCZコイルを作りたいなら是非ご覧を。(追記:2012.02.20)

注意 !:編者が目を通した雑誌記事とは言え、学術論文のように査読をうけたものではない。記事は、自作を楽しむための「一つの」アイディアを提供するものだ。既にご自身の手法を確立しているならそれを続けるのが一番だろう。自作は良さそうなアイディアを取り込みながら各自各様に工夫しながら楽しむもの。 本記事のベースは私の『アイディア・ノート』である。 de JA9TTT/1

               ☆ ☆ ☆ ☆ ☆

追記】ご覧いただいたご感想に基づいて、若干の補足を追記する。(2011.8.20)

(1)図2:コイル測定用発振器:
   使用可能なFETとしては、記事中に例示した以外に高周波小信号用FETなら
   多くが使用可能。例えば、2N4416、J310やMPF102など海外製でも良い。

(2)図1:10mm角コイルの巻き数とインダクタンス:
   グラフの作成にあたって・・・・
   中心の「ねじコア」の位置は、可変範囲の中心相当の位置にしておく。
   シールドケースの上面より、概略2.5mmほどねじ込んだ位置になる。

(3)シールドケースの外し方:
   外し方は記事では特に触れていない。少しコツは要るが難しくはない。
   怪我をしないよう注意しながら各自で良く研究を。(物により違うので)

(おわり)

2011年7月24日日曜日

【部品】winding a bifiler toroidal coil

トロイダル・コイルを巻く
 写真はバイファイラ巻きしたトロイダル・コイルだ。 お馴染みの「FCZコイル」がディスコン(=製造中止)になって、これからは欧米のHAMのように自分で巻いて何とかしなくてはならない。

 写真の巻線はφ0.32mm(AWG28相当)の細い線材なのであらかじめよじったものを巻いて行くと旨く行く。コアはT-37サイズである。 大きなコアに、ごく太い線を巻く場合はよじって巻くのは難しい。その場合は2本を平行に沿わせて巻いて行けば十分だ。

 ところで、写真の青いコア材は滅多に使われない#1材である。実際にコイルを巻いてみると人気がない意味がわかる。:-)

巻線を用意しておく
 バイファイラ巻き専用の電線も作られているが、少量の入手は難しいだろう。 バランに使ってある2色になった線を見たことがある。配線間違いが防止できて良さそうであった。
 しかし、手に入らないのでは仕方がないので、手製でバイファイラ巻き用の線材を作っておこう。 

まずは2本の線を用意し片側を万力などに良く固定する。 もう一端は電動ドリルあるいは電動ドライバに固定して引張る。 あとは適度のテンションを与えながら「よじり」の具合を見ながらウイ〜ンとやれば良い。

 もちろん、電動じゃなくてハンド・ドリルでも可だ。 あまり長いものを一気に作ろうとしないのがコツと言えそう。 材料は昔ながらのエナメル線は被覆が弱いので向いていない。特別な事情がなければ、そのままハンダ付けできるポリウレタン電線:UEWがお薦めだ。あるいはホルマール電線:PEWでも良いが、ハンダ付けの時に被覆を除去しにくいのであまりお薦めではない。

出来上がり
 前に作った物が品切れになったので、2mほど作っておいた。これで随分の個数が巻けるからまた暫くは間に合う。

 ほかに、3本の線をよじったトリファイラ巻き用の線材も作ってある。 さらに,より小型コアに巻くことを考えて、もっと細いφ0.2mm(AWG32相当)で作った線材も用意してある。
 必要になったら何時でも所望のトロイダル・コイルやトランスを作ることができる訳だ。 数種のコア材と巻線材料、そして製作用の巻線データが用意してあれば1個作るのに5分もかからない。 一般にシールドする必要も無いから便利なコイルだ。

くれぐれも結線を間違えないように! 作ったコイルが旨くないのは繋ぎ間違いかも。

                 −・・・−

 自作品はこのような簡単な作業の積み重ねでできている。 当たり前でつまらぬ作業が意外に知られていなかったりする。 こうした格好良いとは言えない「泥臭い所」を手際良く片付けるのも「自作のコツ」だろう。 むしろ高級測定器やソフトウエア・ツールを駆使するような「見かけの良い作業」はわずかなものだ。(笑)  de JA9TTT/1

#このままでは7月のBlogが一つもなくなりそうなので、ごく軽いテーマを扱ってみた。

注意!:このBlogは「こんなやり方もありますよ」と言う一例を紹介している。 何もわからぬ人には幾許か参考になると思うが、既に「自分流」を確立されてるなら、それでやられれば良い。何か示唆したり方法を強制するつもりは毛頭ないので勘違いなきように! 自作は良さそうなアイディアを採り入れつつそれぞれの流儀でやるのが一番楽しい。

参考:いわゆる『FCZコイル』の代替品の作り方についてはこちら(←リンク)もご覧を。

(おわり)

2011年6月18日土曜日

【AVR】 DDS Control Part 3

DDS-VFOの機能
 DDS-VFOのつづきだ。 ここからはプログラムによって実現した機能の話しになる。回路図を見てもわからない部分だから、どこまで伝えられるかちょっと心配だ。 これはプログラム・リストを公開したからと言って伝わるものではないそうだ。(BASCOMは簡単とは言え、誰もがプログラムを読める訳じゃない。実際、他人サマが書いたものを解るのも容易じゃないし・・)

 マイコン単独で機能が完結する「マイコン製作もの」なら機能説明も難しくないだろう。 しかし重要な部分ではあってもDDS-VFOは通信機の構成要素の一部に過ぎない。 従って、そのコントロールには通信機の機能が密接に関わりを持っている。

 このDDS-VFOの動きを納得するにはスーパー・ヘテロダイン式受信機(←リンク)の知識が必要そうだ。たぶんこうした物に興味を持つようなお方なら大丈夫。十分ご存知という前提で話しを進めさせてもらおう。

旨く伝えられれば、「便利なVFO」だとわかってもらえるに違いない。


想定のトランシーバ
 説明の助けとするために、このDDS-VFOの使用を想定する機器(トランシーバ)のブロック・ダイヤグラムを書いてみた。 受信部は局発を上側にとったシングル・スーパー、送信部はDDS-VFOのあと3段ストレート増幅だ。

 いかにもそれっぽいデバイス名が書いてあるが言わば余興である。但し、その通り作ることだってあり得るラインナップにしておいた。 探しまわる人がいると気の毒なので、近代的でポピュラーな半導体ばかりでレアなデバイスは一切使ってない。(笑)

 受信状態ではモードスイッチによって発振周波数が変化する。これは、受信モードによって実際の受信周波数と表示周波数の間で誤差が発生しないようにするためだ。スーパー・ヘテロダインの仕組みがわかれば理解できると思うが、これは重要な機能である。USB、LSB、CWにモードを切り替えても受信周波数が変化しないようにしている。

 アナログVFOの時代には受信モードごとダイヤルに3本のカーソル線を引いていた。DDSなら発振周波数そのものを補正してしまう。なお、SSB受信ではキャリヤ・センターで、CW受信ではフィルタ・センターで周波数表示される。 送信モードではCWの受信と一致させているので、フィルタ・センターと等価になる。

 混乱するかもしれないが、USBにしろ、LSBにしろキャリヤの周波数は自在に設定できる。もちろんCWモードのフィルタの中心周波数も自由に設定できる。使用するIFフィルタの都合に合わせられる。 以下、具体例でモードとDDS-VFOの発振周波数の関係を示しておこう。(ほかダブルスーパ用に表示のシフト機能もあるのでもう少し複雑なこともできるのだが、キリがないので省略させてもらった)

ダイヤル・スピード
 ダイヤルスピード、すなわち1回転あたりの周波数変化は、一つにロータリ・エンコーダの分解能で決まる。 使用したエンコーダは安価なものなのでダイヤルの1回転で96ステップしか得られない。従って、10Hzステップでは1回転で1kHzに満たない変化しか得られない。

 そうかと言って100Hzステップでは刻みが荒すぎる。CWのトーンがステップ状に変わるのを感じてしまう。それに100Hzステップでさえ1回転で9.6kHzしか変化しない。バンド内の大きな移動には不便である。

 結局、4種類のスピードに切り替えることにした。10Hz、100Hz、1kHz、20kHzステップである。最高速は100kHzステップにしたかったが、内部変数の関係で20kHzになった。それでもダイヤル1回転で約2MHz変化するからHF帯のリグなら大丈夫だろう。

 10Hz、100Hz、1kHzはセンターオフのスナップスイッチで切り替える。20KHzは押したときだけONになるプッシュスイッチを使う。この20kHzスイッチはいつでも最優先で機能する。上記ブロック・ダイヤグラムと前回の回路図を参照。

RITコントロール
 今どきのメーカー製無線機は殆どすべてが周波数シンセサイザ化されたので、交信中に周波数が変動するものなど皆無だろう。

 しかし、QRPerの多い7003kHzをワッチしていると、結構ずれて呼んでくる局や、QRH(周波数変動)する自作局もあるのが実体だ。 従って、自身の送信周波数はそのままに、受信している周波数だけを微調整するRITは未だに不可欠な機能である。
 
 RITは昔ながらの可変抵抗器を使っている。但し、すぐにA/D変換してしまいデジタル的に行なうようにした。 A/Dコンバータの分解能は10bitあるが、VRの接触状態次第で少しふらつくので感度を1/10にしている。全部で約100ステップある可変範囲において、1ステップあたり10Hzの変化として安定動作を優先した。従ってRITの操作範囲は±約500Hzである。

 この程度の可変範囲で支障ないと思うがもう少し拡大しても大丈夫そうだ。このあたりは、自在に変更しうる。メインダイヤルと同じようにロータリ・エンコーダを使う手もある。(ソフトウエアの変更を要する)

送信モードの発振周波数
 いま、ダイヤルは7000.00kHzに合わせてある。(最小表示は10Hzの桁) 送信モードにするとDDSは7000.000kHzを発振する。写真の右上は、周波数カウンタによる実測値である。この状態では「表示周波数=発振周波数」の関係になっている訳だ。 

 従って、ブロック・ダイヤグラムにもあるように、DDSの出力を送信アンプに導いて所定のパワーになるまで増幅すれば簡単にCW送信機になる。これがDDS-VFOの基本状態である。(注:実際には7000.000kHz丁度で送信するとオフバンドになる)

参考:以下いずれの写真も周波数カウンタの表示は設定値にピッタリ合っている。少々ウオームアップしてから周波数の校正を行なえばこのように良く合う。特別に撮影用の工夫をした訳ではない。DDS-VFOはクロックの水晶発振器と同じ周波数安定度が得られるのでかなり安定だ。

CWの受信モード
 上記と同じ状態でTX/RXスイッチを切り替えて受信モードにする。いま受信モードはCWである。

 想定している受信機はシングルスーパーであって、使っているCWフィルタの中心周波数は455kHzと想定している。

 従ってDDSは7455.000kHzを発振する。「発振周波数=受信周波数+IFフィルタの中心周波数」の関係だ。 なお、CW受信のためのBFOはフィルタの中心周波数から上か下に700〜800Hzくらい離れた周波数にする。 可変周波数形のBFOでも良い。


USBの受信モード
 次に、USB受信モードにしてみよう。SSB受信フィルタは中心周波数が455kHzで帯域幅は3kHzのものを想定している。USB受信するにはSSB復調器に与えるキャリヤ発振周波数は453.5kHzになるはずだ。従って、DDS発振器は7453.500kHzになる。

 「発振周波数=受信周波数+(USBの)キャリヤ周波数」と言う関係になる。

 もちろん、フィルタの特性によりキャリヤ周波数は必ずしも453.5kHzとは限らない。このキャリヤ周波数は「変数」としてセットできるから、ある程度任意に設定できる。


LSBの受信モード
 同じく、LSB受信モードにしてみよう。 LSB受信では456.5kHzのキャリヤで復調することを想定している。

 USBと同じように、「発振周波数=受信周波数+(LSBの)キャリヤ発振周波数」の関係になる。 従って、発振周波数は7456.500kHzとなる。

 USBのときと同じようにキャリヤ周波数は「変数」でセットできる。もちろんある程度任意である。

 以上、いずれもブロック・ダイヤグラムに従った説明用なので、教科書的な周波数関係になっている。 そのようになるようプログラムを初期設定しておいたからだ。 実態に合わせてプログラム的に初期値を変更できるのは勿論だ。

IFフィルタも自由自在
 以上、受信モードと発振周波数の関係を示したが、かなり自由な設定が出来る。

 写真は左からCollinsのSSB用・メカフィル、MurataのAM用・セラフィル(R)、そして自作のCW用・世羅多フィルタである。

これらは、少しずつ中心周波数がずれているので、昔のアナログVFOを使ったリグにおいては一緒に使うのはかなり厄介だった。 このCollins製SSBフィルタの中心周波数は453.5kHzである。 キャリヤ・ポイントはUSBが約452.000kHz、LSBは約455.000kHzになるだろう。 AMフィルタの中心周波数は標準的な455kHzである。一方、自作したCW用・世羅多フィルタの中心周波数は約439.4kHzである。

 このようにだいぶずれた中心周波数のフィルタを混在して使うのはアナログVFOではいささか厄介なことになる。 モードを切り替えるたびに受信周波数が大きく飛んでしまったからだ。 切換えのたびにダイヤルCALが必要なのでは実用的でない。

 しかしDDS-VFOなら支障はない。モードに従った発振周波数の補正でフィルタ周波数の違いを吸収できる。 極端なはなし、CW用は455kHzのフィルタを使い、SSB用は2MHzのフィルタを使うと言うような芸当もこなせる。 モードを切り替えても受信周波数は自動的に調整されるから、もちろんダイヤルを合わせ直す必要はない。

# こうした目的によって変える必要がある一連の「変数」はプログラム初期化部分にまとめておいたので、後々の活用も容易だろう・・・と自己満足。(笑)

DDS-ICのテスト・プログラム
 難解にならない範囲でプログラムのことも書いておこう。初めてDDS-ICを使うときは不安なものだ。いきなり複雑なものが動くのか心配になる。このプログラムは非常にプリミティブな「DDS版のLEDチカチカ」のようなものだ。(笑)

 ごく簡単で確実なプログラムで基本的な動作を確認しておけば、トラブルがあっても問題の分離が容易になる。 このプログラム・リストはあらかじめ判っている周波数データをDDS-ICにセットし、正しくその周波数で発振するのを確認するものだ。 :プログラムの転載おことわり。

 DDS制御のエッセンスを凝縮した必要最低限の部分だけでできている。 この短いプログラムが正常に動作すればマイコンからAD9834:DDS-ICへのデータ転送はうまく行っている。 マイコンもDDS-ICにも回路的な(=ハードウエア的な)問題はないことがわかる。 あとは必要な機能を実現するためのプログラムを頑張れば良い。

 なお、例示のプログラムはDDS-ICに与えるクロック発振器の周波数誤差は補正していない。従ってジャスト7000.000kHzにはならぬだろうが、せいぜい1kHz以内の誤差に収まるはずだ。 DDSの動作を受信機や周波数カウンタで確認してみる。

 もしも67.10886MHz以外のクロック発振器を使うなら、発生周波数は周波数比だけずれる。周波数の計算はごく簡単だ。(例えばクロックが50MHzなら、約5215406Hzになる)DDS-VFOを作ったら、まずはごく簡単なこうしたことから確かめることが非常に重要な一歩だと思う。 これが確かに動かぬようでは、どんな「高級プログラム」もマトモに動きはしない。

参考:このテスト・プログラムを走らせるAVRマイコンは何でも良い。但し、PortC.0にDDS-ICのFSYNC、PortC.1に同SDATA、PortC.2に同SCLKを配線する。ヒューズビットを操作しクロックは内蔵RC発振の8MHzにセットする。ATmega8、ATmega88、ATmega168、ATmega328がお薦め。 或はプログラムの必要箇所を書き換えてPortBやDを使うようにすれば、手持ちのATtiny2313やATtiny26(L)、ATtiny861Aで試すこともできる。(修正は簡単だ。方法は私に聞かず各自努力で)


DDS-ICへデータ転送・1
 写真はマイコンからAD9834:DDS-ICへデータ転送している様子だ。クロックに同期して16Bit分のデータが連続3回送られる。 BASCOM-AVRのShift outコマンドで16bitデータを簡単に送ることができる。

  開発の初期段階では、様々な原因で正常に動作してくれなかった。 回路的な問題なのかプログラムに何か欠陥があるのか、それぞれ旨く分離できなかった。 そこで、実際に送られるデータをデジタル・オシロスコープで直接観測して確認すると言った作業が必要になった。 上記のようなごく簡単なプログラムを作成し一歩ずつ確認する作業を進めて完成へと前進して行った。

 こうして観測してみると色々なことがわかる。 AD9834に一つの周波数データを送信するのに要する時間は約126μSであった。 ロータリ・エンコーダを読み込むタイマー割り込みの周期は約2mSである。従ってデータ転送には十分余裕があり、合間に周波数データの演算処理は問題なくできることがわかる。 また、2mSおきにのべつ幕無しにデータを送り続ける訳ではない。状態に変化がない限り送らぬようにしている。 一番処理時間が掛かっているLCD表示にも十分な時間を割当できているようだ。

DDS-ICへデータ転送・2
 写真はAD9834:DDS-ICへデータを送り始めた先頭の部分である。 下段のシフトクロックに同期して、シリアルにデータが送られている様子がわかる。

 X軸のカーソルで示すように、SCLK:シフト・クロックの周期は約2.4μSである。 また、画面に記入したようにSDATAの様子を見れば実際にどんなデータが送られているのかも解析可能である。

 AVRマイコンからDDSへのデータ送信が旨く行かないのなら、こうした泥臭い解析も必要になってくる。 開発の過程では何でもアリだと思ってやってみる決意こそが必要なようだ。 お陰でまたまたデジタル古城の主に。(爆)

               ☆ ☆ ☆ ☆ ☆

 MIZUHOのVFOを目標にして開発を始めた。具体的に使用機器を想定すると、様々な配慮が必要になってくる。そうした実用上のニーズもうまく盛り込むことができたようだ。

 DDS-ICにデータを送ることができ、所定の周波数で発振が確認された時点で一つのハードルはクリヤできたといえる。 しかし、実用性を高め汎用性も確保するには種々の機能を取り込む必要がある。 プログラムの基本はAD9834:DDS-ICへのデータセッティングにあるが、セットすべきデータをどのように加工するのかは各自工夫の部分だ。

 どんな構成のRigに使うのか構想を描きながらプログラム開発を進め、それが実現できるのは楽しいものだ。 完成した後でもプログラミングの範囲なら思い立ったらすぐ自在に変更できる便利さもある。そしてバグが発見されたら直すことも。hi マイコンを使ったRigの製作は自作HAM向きだと思っている。

 もちろん、いつものように以上は自身の要求に基づいた「私的な開発品」である。各人それぞれ考えが違えば要求も異なって当然だろう。 お薦めするような物ではないが、開発の過程を備忘にとどめる意味でBlogにしておいた。例によって「読み物風」になったが悪しからず。

 着手してから約1ヶ月半、あれから数えれば数年掛かってしまったがAVRマイコンを始めた自身の目標がまた一つ達成できた。これでやっと肩の荷が下りた気分である。今夜はビールが旨いぞー。 de JA9TTT/1

参考(追記:2013.05.10):AD9850搭載の中華DDSモジュールを扱った別編は:→こちら

(おわり)

2011年6月13日月曜日

【AVR】 DDS Control Part 2


高安定な可変周波発振器
 安定で任意の周波数に可変できる発振器は通信機にとって長年のテーマである。スーパーヘテロダイン受信機の周波数安定度を決めるからだ。写真はそうした可変周波発振器の例だ。良い物を知らずしてより良き物は作れない。

 左は泣く子も黙ると言われたCollinsの70H-12形VFO(PTO)である。右はTRIOのVFOでTS-130に使われたもののようだ。ほぼ同等のVFOはTS-510からTS-830の時代まで使われ、これまた歴史のある優れモノだ。

 いずれもLC発振回路を内蔵し巧みな温度補償により周波数安定度を得ていた。周波数シンセサイザ以前の時代にあって、高安定な発振器を製作するには高度な技術を要していた。


減速ギヤとダイヤルメカ
 発振回路だけでは実用にならない。十分な減速比をもったギヤメカと読み取りに必要なダイヤル機構が必要だ。

 CollinsのPTOはネジ機構を使ったコアの出し入れで周波数の微動機構を実現している。コイルの巻き方で周波数直線性を確保し、シャフトの10回転で1MHzをカバーする。

 写真のようにTRIOのVFOはエアーバリコンと減速ダブルギヤでバックラッシュを防ぎ、1kHz以下まで読めるダイヤルを実現している。周波数の直線性はバリコンの羽曲げで調整しているはずだ。いずれにしてもメカ+電気の技術で実現していた。


自作VFOも
 160m Band専用受信機のために自作したLC発振VFOである。大きな容量のエアーバリコンを使って安定度を向上させている。周波数が低く、簡略ながら温度補償もおこなってあるから安定度はかなり良好だ。

 バリコンはギヤとボールドライブで減速され同調しやすい。周波数は表示補正機能つきの周波数カウンタで読み取っている。受信周波数と表示を一致させるためにカウンタ基板にあるデジタル・スイッチで補正値を設定する。マイコン以前の昔のテクノロジーで周波数直読を実現したものである。

 こうしたVFOを自作するのはなかなか大変だ。当時は手持ちの部品があったので製作できたが、いまどき1から部品を集めるのでは大変だろう。あえて自作するなら古い無線機から部品取りするのが手っ取り早い方法かもしれない。


ミズホ通信機のVFOとは
 開発の目標としたミズホ通信製VFOユニットである。どんな物か概略わかるようCQ出版の書籍より情報を抜粋しておいた。5MHz帯のVFO-5と7MHz帯のVFO-7があった。

 ミズホのVFOは誰でも買える既製のVFOとしては唯一のものであった。アマチュアの手作りより周波数安定度に優れ、規格化されたVFOは機器の製作再現性に役立っていた。多くの自作記事で標準モジュールとして活用されてきた。

 5MHz帯のVFO-5は9MHzのSSBジェネレータと組み合わせて14MHzあるいは3.5MHzのSSB送信機の製作に使われた。VFO-7は7MHz帯のダイレクトコンバージョン受信機やQRP送信機用だろう。図の左のような初期型から周波数安定度を向上させた右の改良D型へと進化しながら長く販売された。

 しかし、良質な部品やダイヤル減速用のボールドライブなどが入手困難になり販売終了してしまった。 自作に重宝なユニットがなくなってしまったのは残念だ。これも近年の部品事情を反映したものだ。 VFOを自作しようと思っても同じような問題に直面してしまうだろう。結局、これからのVFOは近代技術で解決するべきなのだ。

 MIZUHOのVFOは登場した当時4,600円で、改良D型になってからは6,000円で販売されていたようだ。周波数安定度を確保するノウハウ・苦労や手間を考えたら十分リーズナブルな価格であったと思う。


DDS-VFO開発用基板
 写真はDDS-VFOの開発に使った基板だ。試作検討には十分だが、実用には表示器を延長し基板構造も変更すべきだろう。マイコンはATmega8を使っている。

 同じ28pinのシリーズ:ATmega88/168/328のいずれも使用できる。メモリサイズからATmega48は残念ながら使えない。またBASCOM-AVRも試用版ではコンパイル時に容量オーバーになってしまう。

 手持ちのありあわせ部品で作ったので、スイッチなど機能のみでデザインは考慮していない。実際に使う際は別の物を使おうと思う。なお、ダイヤルの早送りスイッチと、モード切り替えスイッチは写真撮影のあとで追加したため写っていない。

 肝心のDDS-ICはアナログ・デバイセス社のAD9834である。マイコンに搭載した制御ソフトはわずかな変更で他のDDS-ICに使える。なお、データ転送ルーチンを小変更するだけで秋月のDDS基板にも活用可能なように考えておいた。AVRマイコンは内部RCオシレータ(8MHz)で動作する。DDS用クロックジェネレータは67.10886MHzの水晶発振モジュールを使った。詳細は以下の回路図を参照。


DDS-VFOの回路
 なるべく簡単にするため少ない外付け部品になるようにした。しかし、多様な機能を持たせた関係でスイッチやVRがいろいろ付いている。受信機だけではなく、トランシーバに使うことも念頭におき送受回路の制御機能もある程度内蔵した。

 SSBトランシーバは複雑なので作るのは少し難しいがCWトランシーバならたいへん簡単に製作できる。受信部より簡単なくらいだ。送信モードに切り替えればDDS-VFOが送信周波数を発生するからだ。受信周波数に追従するのでトランシーブできる。従ってDDS発振器のあとに数段のアンプを設ければ簡単にQRPトランシーバ(送信機)ができる。

 一方,使用を予想する受信部もかなり様々な回路構成を考えた。オーソドックスに世羅多フィルタを使ったLA1600受信機や、数MHzの自作ラダー形フィルタを使った受信部に対応する。スーパー・ヘテロダイン型を第一に想定しているが、ダイレクト・コンバージョン受信機ももちろん可能だ。 またスーパー・ヘテロダイン受信機においては、CWあるいはSSBフィルタの中心周波数の違いを吸収できる。 帯域幅により中心周波数が移動する世羅多フィルタを含む自作ラダー型フィルタでは特に便利だろう。当たり前であるが、受信モードを切り替えても正確に「表示周波数=実受信周波数」が維持される。

 回路図にモードスイッチや送受切り替えがあるのはそうした機能のためだ。詳細はあらためて「つづき」の機能説明のところででも。

 消費電流はLCD表示器のバックライトOFFで約45mA、バックライトONでは約80mAであった。ミズホのVFO-5/VFO-7の消費電流は20mAだそうなのでその点でははだいぶ負けている。(要するに大食い・笑)

AD9834の優位性
 昨今はアナログ・デバイセス社のAD9834を採用する無線機が増えている。消費電流が少ないのでポータブルな機器に向いているからだ。しかも低コストなのも理由だろう。 より高性能・広帯域のDDSチップも登場しているが消費電流から汎用のVFOにはこれを使うのが最適だと思う。 もちろん消費電力をいとわない機器なら別のDDS-ICの方が良い。マイコンの制御ソフトはそれらにも対応できる。

 AD9834はそのかわりクロック周波数の上限は低めなので発生可能な上限周波数は低めだ。 簡易なリグならDDS出力を直接使用することになるのだが、67.10886MHzのクロックでせいぜい21MHzバンドあたりまでにするのが良い。スプリアスから考えて、クロック周波数の1/3くらいまでで使うのが良い。(特性の良いLPFを付加してクロック周波数の40%あたりまで)

 それ以上のバンドではPLLを併用する。 周波数分解能は十分あるので4倍の周波数のVCOをロックすれば良い。 50MHzバンドの無線機にはそのように使うべきだ。 DDS-ICとして下限はそれこそ1Hzでも可能なのだが、上記の回路ではおおよそ500kHzくらいまでである。

 なお、AD9834には供給クロックの上限周波数が50MHzのAD9834BRUZと75MHzのAD9834CRUZがある。かなり余裕があるらしく、BRUZでも67.10886MHzで使えるが、これから入手するなら75MHzのチップが良いと思う。そちらは100MHzのクロックでも動作すると言う。だいたい1個1,000円〜2,000円で購入できる。(2011年6月現在)


クロック発振器は良いものを
 先のBlogで扱ったが、DDS-VFOには良好なクロックを供給する必要がある。クロックに基づいたタイミングでサイン波のデータを読み出しD/A変換して出力しているからだ。

 基準が揺らいでいては出力信号も揺らいでしまう。奇麗なサイン波にならない。写真は以前販売されていた普通の水晶発振器だったころの67.10886MHzのモジュールである。右手前は同じく秋月電子通商の店頭で売られていた50MHzの小型オシレータだ。

 プログラムによる計算が簡単なので2^Nのクロックが向いている。従って67.108864MHzのオシレータが好ましい。しかし、先のBlogのように最近販売のものはジッタの多いオシレータになってしまった。

 従って、必ずしも2^Nのオシレータでなくても良いよう対策する必要ができた。当初は67.10886MHzを使う前提で開発を始めたが、秋月の事情があってから任意のクロックが使えるようプログラムを改造することにした。現在の最新パージョンでは入手容易な50MHzなど任意周波数のモジュールが使えるようになっている。 なるべく高めの周波数の方が良いが、良く見かける写真のような48.000MHzでも旨く動作する。(但し上限周波数は16MHzあたりになる)


クロック発振器には誤差がある
 上記のような簡便なクロック発振器(Simple Packaged Crystal Oscillator:SPXOとも言う)には周波数誤差があるのが普通だ。密封されたパッケージに入っており周波数の微調整はできない。そのクロック誤差はそのままDDSの周波数誤差になる。

 クロック発振器に与える電源電圧:Vccを加減すると周波数が変動するので、それを逆手にとって周波数微調整する例も見るが調整可能か否かは運しだいだろう。 定格電源電圧を大きく外れると発振振幅に影響が出るうえ発振状態も不安定になってくるので、ダメそうなら別の発振器に交換してみるしかない。

 ここではそうした不確実な手法は採用しなかった。VR1:F-ADJ(写真参照)の値をA/D変換で読み取り、それに基づいてソフトウエアで周波数調整できるようにした。即ち周波数誤差はプログラム内部で数値的に補正する。発振周波数に少々誤差があっても支障は無い。誤差補正は固定値の加減算ではなく、発生周波数を係数とした補正で行なっている。従って特定スポットの周波数だけでなく全周波数範囲で良好な精度が得られている。

 デジタル的に補正する関係でDDSの分解能以下の補正はできないが、50MHzのクロックで約0.1863Hz刻みの補正ができる。67.108864MHzなら0.25Hz刻みである。むしろ、補正しきれない残留誤差よりクロック発振器の周波数変動の方が気になるくらいだ。

 半固定抵抗器:VR1の調節なので、あたかもアナログ的な調整のような感触である。0.1ppm以下の誤差までスムースに合わせ込めるが、実用上の周波数精度はクロック発振器のドリフトしだいだ。総合的に見て校正後の精度・安定度はおおよそ1ppm程度のようであった。もちろん、アナログなVFOと比べたら比較にならぬほど安定している。たぶんCollinsのPTOよりも優秀だ。(笑)

                 ☆ ☆ ☆ ☆ ☆

 DDS-VFOのPart2では開発の目標を明らかにしハードウエア的な部分(=回路や部品の部分)を採り上げてみた。 さすがにミズホのVFOより複雑な回路ではあるがそれほどの規模でもない。思ったよりも製作は容易である。ダイヤルの減速ギヤや周波数直読などの機能を電気的に実現・解決したと考えれば妥当な回路規模と言える。製作の手間を考慮しない「部品コスト」だけで言えばミズホのVFOよりも安価である。全部品を揃えても5,000円で十分なお釣が来るだろう。 もちろんマイコンを使った製作ではプログラムも大切な要素であり、回路に魂を入れる部分だ。 次回は実現した各種の機能を採り上げ、その動きを追って見たいと思う。 de JA9TTT/1

つづく)←リンク

続編)←リンク(おなじAD9834を使った発展バージョンへリンクします)

2011年6月5日日曜日

【AVR】Modification of rotary encoders

ロータリ・エンコーダの改造
 DDS式VFOを作っている。 昔のVFOと同じフィーリングになるよう周波数はダイヤル・ノブで変えられるようにしたい。 それにはロータリ・エンコーダを使うことになる。

 写真は秋月電子通商で売っている中国製ロータリ・エンコーダだ。 クリック付き24ポジションで15度分解能のものだ。 軸の回転量に応じた数のパルスを出力するインクリメンタル型である。 初期位置の概念はなく、回転した/回転していると言う情報だけが取り出せる。 単に回転軸で接点を開閉する構造では回転方向がわからないので回転角に対し開閉位置をずらせた一対の接点が設けてある。

 操作フィーリングや、耐久性にも影響するので市販無線機ではずっと良い物が使われている。しかし、安価に何時でも手に入ると言えば写真の物に限られるようだ。 秋月電子通商では200円で購入できる。 少々チャチで壊れ易いが、何しろ安価なので我慢することにしよう。 本来はクリック付きの24ポジションである。それを接点の「変化検出式」で使い4倍の96パルス式として使う。 無線通信機にはもっとポジション数の多いものが良いのだが、4倍化することで取りあえず使い物にはなる。

 4倍の96パルス式で使うにはクリックを外す必要がある。 以下はその手順だ。 このあと、このエンコーダをDDS-VFOに使うにあたっては必須の作業になる。

分解
 4カ所でカシメてあるツメを起こすと簡単に分解できる。 シャフトに直結した接点円盤の部分と接点ブラシの部分に分解できる。 少々デリケートな部分なので円盤やブラシの部分には手を触れない方が良い。

 円盤には摩耗を防ぐ意味からグリースが塗布してあるようだ。 そのまま触れないようにしておこう。 なお、固定用のナットとワッシャを外した方が作業し易かった。 元に戻す関係から、必要以上にツメは起こさない方が良さそうだ。

クリック解除
 クリック感は接点円盤の周囲にある刻みと、写真の押しバネによって得ている。 従って、この押しバネが円盤の刻みに当たらないようしてやればクリックはなくなる。

 ドライバの先などでバネの出っ張り部分を押し込んでしまおう。 またクリック付きに戻すつもりがなければグッと奥まで押し込んで良い。 中途半端にクリックが残っても困るので良く押し込んでおくのをお薦めする。

 これだけで、クリックなしに改造できる。 クリックなしのモデルもあるだそうだが、改造は簡単なのでクリック付きの手持ちがあれば改造して使えば良い。


接点円盤
 内側の放射状にならぶ24個の電極が接点である。 反対側の接点バネの接触位置を僅かにずらせることで二相出力を得ているのだ。

 円周の周辺にある24個の歯車状のものがクリックを作る部分である。こちらは電気的な接点ではない。

 こちら側は観察のみで手を触れずにもとに戻しておこう。 改造が済んだら手順を逆に辿り、押さえていた4カ所のツメをカシメなおせば改造完了だ。 塗布されたグリースのためか回した感触は少し粘るようではあるが、スムースに回るようなら問題はない。 クリックの部分以外、内部構造に手をつけなければ失敗はないだろう。

4倍化の仕組み
 他のサイトに詳しく書かれているのでごく簡単にしておく。 いま必要なことは、どちらの方向へ回転したのかと言う情報とツマミの一回転で96段階のステップが得られるようにすることだ。

 ロジック回路的に行なおうとすると結構厄介かもしれない。 しかし、マイコン式なら容易だ。 まずは上段の右回転で説明してみよう。 いま「1」の位置にツマミがあったとしよう。 A相、B相ともに「L」である。 ツマミを回転し「2」の位置にくるとA相が「H」になり、B相は「L」のままだ。即ちLL→HLに変わったら右回転である。 おなじ「1」のポジションにあっても、左回転ならLL→LHに変化する。そのように変化したら左に回ったと考えれば良い。
 良く見ると、右回転の状態変化1→2、2→3、3→4、4→5の4種類と、同様に左回転の1→2、2→3、3→4、4→5は、それぞれユニークである。 即ち回転方向の判定は状態の前後比較により間違いなくできる。また状態変化がなければ回転軸は停止していると考えれば良い。

 マイコンを使った処理なら、前の状態を記憶し、その後の状態との比較で回転の有無や回転方向を簡単に検出できる。 このあたり、web上のサイトにもたくさん情報や事例があるので参照を。 私のプログラムでは「状態比較」の切っ掛けを一定間隔のタイマー割り込みで得ている。 もちろん、ほかの手法もあるだろう。

                  ー・・・ー

 DDS発振器は周波数データを送り込んでやれば動作する。 しかし、人間とのインターフェースは慣れ親しんだダイヤル操作が一番だ。 サムホイール・スイッチで周波数切換えするようでは実用的ではないだろう。 人の操作とDDS発振の仲立ちをするのがロータリ・エンコーダだ。

 ロータリ・エンコーダの読み込みに関しては随分前に試作済みであった。 概ね確立できた技術としてその当時のプログラムをそっくり移植して実験を進めていた。 しかし妙な飛び方をするうえ、旨く96ポジションにはならなかった。 ちょっと悩んでエンコーダのクリックを外さないとダメだったと言うのを思い出した次第。 さっそく改造して目出度く思い通りの動作にできた。 前のことをすっかり忘れてしまうほどの時間が経っていた。(笑) de JA9TTT/1

つづく)←リンク

2011年5月30日月曜日

【AVR】 DDS Control Part 1

DDS コントロール】予告編
 AVRマイコンの活用を始めたのは2006年の4月ころだったので、もう5年も経過している。 マイコン活用の二大目標は無線機用のデジタル周波数表示とDDS(←リンク)を使ったVFOの開発にあった。

 周波数カウンタの方から始め、簡易なものはかなり早く実現できた。頒布もしたので既にたくさん使ってもらっている。 その後の高機能化も要素実験はだいたい済んでいて、あとは「やる気」の問題と言ったところだ。

 一方、DDS-VFOは「秋月DDS」の制御実験までは早かったのだが・・・その後はずっと停滞してしまった。 部品もだいたい揃えたと言うのにまったく勿体ない。 放っておくと陳腐化しそうなほど時間が経ってしまっていた。 「趣味に納期はナシ」とは言っても、これは反省しなくては。(笑)

 それで、先日からDDS-VFOの仕様を考え始めていた。 当初の目標はミズホのVFO-5とかVFO-7と言ったVFOの同等品だったと思う。 ミズホのVFOは生産終了になったし、自作しようにも良質の部品は入手困難になっているからだ。 しっかりしたバリコン、減速用のギヤ・ダイヤル・メカ、ステアタイトのコイル・ボビンなど、欲しいと思っても入手は運しだいだろう。 そのあたりを今の電子部品(=マイコンとか)で解消するのが目標だった。

 休日を何回かを使って、写真のようなVFOが出来上がりつつある。作ったATmega8基板はこの目的用であった。  概ね良さそうだが、まだ纏まっていないので取りあえず予告編と言うとことで今日は写真のみ。  de JA9TTT/1

つづく)←リンク

2011年5月21日土曜日

【AVR】 ATmega8x Fuse-bit Memo

鬼門のヒューズビット?
 先のBlogではAVRマイコン基板を作成したが、ATmega8を使うのは初めてであった。もちろん、同じ系統のATmega48、168、328なら使ったことはあったのだが、なぜかmega8は初めてである。(少々賞味期限切れの感じだが、いま使わないと機会がなくなりそうで・・)

 この28pin AVRシリーズは類似点も多いので、あらかた同じで動作するのだが初めて使うなら一応データシートを見てからと言うことになる。 BASCOM-AVRは固有のチップへの依存度は低いのだがヒューズビットは個々に見ておこう。以下ヒューズビットの要点と感じたことをメモして行く。

 ヒーズビットの操作そのものは難しくはない。 写真のように今ではGUIプログラムで一発だし、BASCOM-AVRの対応ライタならプログラミング画面からも容易に操作できる。あるいはコマンド・プロンプトから文字列のキーインでやるのも難しいと言うほどではない。要するに、書き換えそのものは難しくないのだ。

 ところが、巷ではAVRマイコンの「ヒューズビット」は鬼門のように言われている。どうやらその理由は2つあるらしい。

1・とっても危険な行為:
 「ヒューズビットを下手にいじるとAVRマイコンがパーになる。怖いな〜!」、「使えなくなると怖いので触らないのが吉。素人はそのまま使うに限る」

2・説明が難解で自信が持てない:
 「ヒューズビットって良くわからん。ワタシがやりたいことに合う設定を誰かおせえて」、「ATMELのデータシートが難解で、結局どうしたら一番良いの!」

 確かに、無闇に操作するとプログラムの書込みができない状態に設定してしまう可能性がある。ISP書込みなら、リセット端子をI/Oポートに設定したらそれまでだ。ISP書込みではリセット端子を操作するのだから、それができぬ設定にしては旨くない。また、ISP書込みにはクロックの供給は必須だ。内部クロックをやめ外付け水晶発振子や外部クロックにするならそれに合わせることだ。クロックがないとAVRマイコンは無反応になってしまう。

 ヒューズビットは沢山あって細かく見るのも大変だ。しかし、よく使うのはヒューズビットLowだろう。実際それだけで困ることはほとんど無い。以下で、ATmaga8をテーマにヒューズビットLowのポイントをメモしておく。

ヒューズLowバイトの機能
 ヒューズビットは1バイト(=8bit)単位で操作する。HighバイトとLowバイトの2バイトがあり、そのうち「下位側」と称する方を良く操作する。 これはAVRマイコンが動作するクロックをLowバイト側で決めているからだ。

 また、AVRが正常に起動(スタートアップ)するまでの待ち時間もここで設定する。

 ほかに、あまり使うことはないのだがATmega8では電源電圧の低下を検出する「Brown out検出」の設定もLowバイトに含まれている。しかし必要が無ければそのままにしておけば良い。

 結局ヒューズLowバイトでは主にクロックの選択とスタートアップに関する部分がポイントだ。

ATmega8のクロック
 ATmega8の動作クロックは様々な方式から選択できる。

1・外付け水晶発振子あるいはセラミック発振子
 所定の端子に水晶発振子(クリスタル)あるいはセラロックのような発振子を接続してクロックを得る方法。一般に数MHzの周波数のものを使う。保証上限周波数はATmega8では16MHzで、最近のチップでは20MHzになっている。発振子の周波数や種類に応じ、ヒューズLowバイトの下位4bitを1111〜1010の種類で設定する。以下で詳しく説明。(クロックの周波数精度と安定性を要するとき使う)

2・特に低い周波数の水晶発振子
 同じ水晶発振子でも、特に低い周波数の発振子を外付けする方法。これは、時計用の32kHzのような周波数を言う。こうした低周波水晶発振子は数MHz〜の水晶と同条件では旨く発振できない。従って特別な設定が設けられている。ヒューズLowバイトの下位4bitを1001に設定する。(この設定はあまり使われないようだ)

3・外付けRCによる発振
 非常にラフな用途の場合、抵抗器RとコンデンサCの時定数でクロックを作ることができる。このあと説明する内蔵RC発振器では得られないクロック周波数にしたい時に使う。外付け水晶発振子やセラミック発振子より安価だが不安定だから周波数変動しても良いラフな用途に限る。ヒューズLowバイトの下位4bitを1000〜0101の種類で設定する。(一般にあまり使わない)

4・校正済み内部RC発振
 内蔵された抵抗器RとコンデンサCの時定数で発振させクロックを得る方法。外付け部品不要なので便利である。厳密な周波数精度を要しない用途に適する。発振周波数はチップ個々に補正されているので、RC発振器としては比較的正確である。ヒューズLowバイトの下位4bitを0100〜0001の種類で設定する。(外付け部品がいらないので最もよく使われる)

5・外部クロック
 AVR内蔵の発振回路では水晶発振とは言っても精度や安定度に限界がある。おおよそ±10〜50ppmの変動は見込むべきだ。安定なクロック周波数が必要なら、温度補償型水晶発振器(TCXO)などを外付けして供給すると良い。 あるいは動作に適した既存のクロックがあれば、それを供給することもできる。複数のマイコンの同期を取り易いと言うメリットもある。ヒューズLowバイトの下位4bitを0000に設定する。(周波数カウンタや高精度な時計などで使われる)

 この項目で注目すべきは、下の方の赤の下線部分だ。ATmega8は出荷時にヒューズLowバイトの下位4bitが0001に設定されており、スタートアップSUT(後述)は電源の立ち上がりがゆっくりであると言う設定になっている。(どう使ってもいちばん無難と思われる設定になっている訳だ)

校正済み内蔵RC発振
 いちばんよく使われるのは校正済み内部RC発振だ。外付け部品不要で、I/Oポートも2つ増やせるメリットがある。 ATmega8の内部RC発振器は8MHzで発振している。 周囲温度が25℃で電源電圧が5Vのとき±3%以内の周波数精度となっている。クロックの周波数精度・安定度が程々でよい用途には最適だ。

 内部RC発振器で得られるクロック周波数は1,2,4,8MHzの4種類だ。8MHzを源に整数分周して低い周波数を得ている。分周せずに8MHz、1/2分周で4MHz、1/4で2MHz、1/8で1MHzである。この分周数をヒューズビットで設定している。

この8MHzは周波数の「校正値」が「校正バイト」と言う場所に書き込まれている。工場出荷時に規定の精度範囲になる最適値が書き込まれる。 校正バイトの書き換えは可能だ。5V以外の電源電圧で使用する場合など、実条件で校正すれば周波数精度を上げることができる。しかし周囲温度の変化でも周波数変動はあるから、周波数精度・安定度を要するならセラミック発振子や水晶発振子を使うべきだ。

# 設定だが、ヒューズLowバイトの下位4bitを:
0001で1MHz(←これが出荷時設定)
0010で2MHz
0011で4MHz
0100で8MHz
・・・・の設定でクロック周波数が選べる。

ほか、スタートアップ・タイムをきめる2ビット:SUTは、もっとも安全な「10」が初期設定されている。特に必要性がなければ書き換える必要は無いと思う。

外付けRCによる発振
 図の様に外付けの抵抗器RとコンデンサCの時定数でクロック発振させる。クロック・タイミング(周波数)がデリケートに影響しない用途向けだ。

 クロック周波数fは、おおよそf=1/(3RC)で計算できる。 なお、Cの値は少なくとも22pFにすべきで、CKOPTと言うヒューズ・ビットの設定でAVR内蔵の36pFを使うこともできる。(注:CKOPTはヒューズHighバイトにあり)もちろん、この36pFにも誤差があるし、配線によるストレー容量もあるから、計算式通りにはならない。 また温度係数も補償されないからクロック周波数がアバウトで良い用途に限定される。使用例は見ないが、特別低いクロック周波数をRC発振で得たい場合にでも使うのだろうか?

 スタートアップタイムに関しては、上記の「校正済み内蔵RC発振」と同じである。

外付け水晶発振子による発振
 水晶発振子を使うと周波数(周期)精度が良く安定したクロックを得ることができる。 マイコンの動作クロックをもとに時計やタイマーのような、時間精度を要する用途には最適だ。
 また、外部信号の周期や周波数を計測するアプリケーションにも安定したクロックが必要になる。 なお、セラミック発振子も使えるが周波数安定度は水晶発振子より100倍くらい悪いので用途目的次第である。

 AVRマイコンのXTAL端子は、図の様にインバータを使った発振回路になっている。XTL1がインバータの入口側、XTL2が出口側である。XTL1とXTL2とGND間に接続するコンデンサ、C1とC2は水晶発振子あるいはセラミック発振子の周波数により異なる。 具体的には次項の表にあるが、数〜16MHzの一般的なケースではいずれも15pFか22pFを使えば良い。 なお、セラッミック発振子ではC1とC2をメーカー指定の値にすべきだ。

 内蔵水晶発振器には2つのモードがある。発振振幅を抑えたモードと、発振振幅が電源電圧いっぱいに振れる「Full rail-to-rail swing」がある。 不要輻射を抑えるには前者が、ノイズが多い環境で使うには後者が向いている。いずれにするかは、ヒューズHighバイトにある「CKOPT」の設定で変更できる。私は(デフォルトの)発振振幅を抑えたモードで使うことが多い。


水晶発振のヒューズビット設定
 使用する水晶発振子の周波数帯によって3種類の設定がある。 さらに、発振振幅の選定があるので全部で6種類の設定があることになる。

 多くの場合、数〜16MHzの水晶発振子を使うだろう。発振振幅を抑えたモード(=初期設定)で発振させるなら、CKOPT=1、CKSEL3..1=111で良い。 殆どの場合、これで良い筈だ。 なお、CKSEL0も1で使うケースが殆どのはずで、結局CKSEL3..0=1111と言うことになる。(次項を参照)

 別のAVRマイコンにクロックを供給する場合はCTOPT=0として、フルスイング発振させた方が安心だ。出力はXTL2端子側から取り出す。(注:ヒューズ・ビット:CKOPTはヒューズHighバイトにあり)

 C1とC2であるが、上項のように多くの場合15pFか22pFを付けておけば良いようだ。 セラミック発振子の場合、3端子型ならC1とC2は発振子に内蔵されているから外付け不要である。

 幾つか調べてみたが、2端子型のセラミック発振子も数MHzなら水晶発振子と同じ15pFか22pFで良いようだ。 但し1MHz以下ではもっと大きな容量が必要で、村田製作所のセラロック(R)では100pFが指定値である。たとえば455kHzのセラロックを使う場合などだ。

 アマチュアの用途なら「発振すればOK」であるが、製品に使うには電源電圧、周囲温度の変化のほか、マイコンのロットによるバラツキも検討しておかないと安心できない。

スタートアップ・タイム
 電源を加えてからクロックが安定し、内部が初期状態にリセットされ、初めてマイコンは正常に動作する。 従って、電源電圧が加えられ一定時間経過してからプログラムはスタートする。

 同様に、スリープやパワーダウンの状態から復帰する場合も暫くの待ち時間が必要だ。 どの程度の時間で起動するかはヒューズビットのスタートアップ・タイム・ビットで決定する。

 特別に短い起動を必要としなければ、十分な起動時間を取って、ゆっくりした起動の方が確実であろう。 また、マイコンに加わる電源電圧の起動特性も関係する。 一般の安定化電源では設定電圧に安定するまでに、数10〜数100mSの時間が必要だからSlowly rising powerを選択するべきだ。

 起動時間がクリチカルではない用途なら、セラミック発振子の場合で:CKSEL0=1、SUT1..0=00にする。水晶発振子の場合で:CKSEL0=1、SUT1..0=11でも良いと思う。

 注釈が付いているが、パワーダウンあるいはパワーセーブ状態からの復帰で安定まで待つ(必要のある)クロック数は:セラミック振動子で258クロック、水晶発振で1,000クロックでも良い。但し、いずれも精度を要しない場合に限る。また上限に近いクロック周波数では推奨されないとある。 普通はもっと待つ方が良いのである。

 参考:セラミック発振子の待ちクロック数が少ないのは発振に要する起動時間が短いからだ。 Qが極めて高い水晶発振子は発振振幅が安定するまでに時間を要する。従ってやや長く待つ必要がある。

外部クロックの与え方
 外部からクロックを与える場合は、ヒューズビット:CKSEL3..0=0000とする。 また、信号はXTAL1端子に加えること。 与える信号の振幅は、ゼロから電源電圧までフルスイングする矩形波信号が良い筈で、Duty=50%に近いものが好ましい。

 負荷としては重くないので普通のC-MOSやPull-up抵抗付きのLS-TTLでドライブできる。 なお、TCXOほか、缶入り水晶発振器の出力は、C結合になっていることがある。 その場合は電源電圧の半分に相当するバイアス電圧を掛けた方が良い。 特に発振振幅が不足気味のオシレータではバイアスを掛けないと動作が不安定になることがある。 ドライブするオシレータ側の事情によるが、10kΩ〜47kΩ程度の抵抗器を2本用意し、1本目:電源→XTAL1端子、2本目:XTAL1端子→GNDに接続してバイアスを掛ける。

 スタートアップ・タイムは、上記と同様に特別な事情が無ければ十分な時間待つ方が望ましく:SUT1..0=10の設定が望ましいと思う。 なお、SUT1..0=11は「将来用の予約」なので設定してはいけない。

Brown-out Detection
 停電と言うのはBlack-outであるが、Brown-outと言うのは電圧低下状態のことだ。 たとえば電池が減ってきて規定の電源電圧を下回ったら、通常の処理をやめて待機準備に入る必要があるかもしれない。

 Brown-out Detectionと言うのは、そうした電源電圧の低下を察知する機能のことだ。その機能をON/OFFすることができる。 通常はデフォルトのOFFのままで良いだろう。

 たまたまATmega8ではヒューズLowバイトに含まれているのでここで説明している。 おなじ28pin AVRでも、ATmega48〜ATmega328ではヒューズHighバイトに含まれている。 但し、機能は概ね同じなので、電圧低下処理が必要な機器なら詳細を読んで機能させる。 


ヒューズバイトの書き換え
 意味がわかれば恐れることもない。 意味もわからず無闇に書き換えようとするから、復帰不能な状態に設定してしまうのだ。

 外付け水晶発振子や外部クロックの状態に設定しただけなら、所定のクロックを与えれば大丈夫。 再びチップが応答するようになって再度書き換えできるようになる。 従って過度に怖がらなくても良い。

 もちろん、水晶発振子なりオシレータが手元に無いと困ってしまう。数MHzの良質な水晶発振子や出力波形確認済みのオシレータ・モジュールを用意しておくとかなり安心できる。

 図はhidspx-GUIの画面だ。今の場合Clock周波数を内蔵8MHzに変えたいだけだった。ヒューズLowバイトの下位4ビットを、「0100」にすれば良い。16進で言えば「4」にする。上位4ビットは無変更なので「1110」即ち「E」である。結局、初期値が「E1」だったものを「E4」にすれば良いのだ。

 もうわかったから上の方にある、ヒューズビットの窓に所定の設定をインプットし「Write」ボタンを押せば書き換え完了だ。 けして難しいものではない(だろうと思う)。

参考)ATmega48PA、ATmega88PA、ATmega168PA、ATmaga328PではヒューズLowバイトの初期値は「62」になっている。内部RC発振器の1MHzで動作しており、上記と同様8MHzのクロックにするには「E2」に書き換える。「E4ではない」ので注意を! 詳細はATmega48/88/168/328のマニュアルを参照。

                    −・・・−

後記
AVRマイコンの様々な機能のうち、内部の回路的な部分はユーザープログラムからでは操作できない。 (内部にある)スイッチに相当するものがヒューズビットだ。 その「スイッチ」で内蔵回路の接続を切り替える。 例えば内部のRC発振器を停止しクロック入力を足ピンに切り替えてやれば外部クロックで動作できる。 おおよそそうした切換えを行なうのがヒーズビット(ヒューズバイト)の役割だ。

 在庫品の活用が目的だったのだが、このBlogを書き始めて暫くしてATmega8はもう既に過去のデバイスであることに気付いた。 現行主流のATmega48〜328とはヒューズバイトのアサインが随分違うのだ。 新チップに対応すれば良かったのだが、もう大半書き終えていたのでそのまま行くことにした。 もしATmega48、88、168、328を使うなら、ここに書いたATmega8とは違うので注意を。クロックなど考え方は同じなので所定のビットを同様に設定してやれば大丈夫。

 ヒューズビット(バイト)は回路屋には理解し易いが、ソフト専門の人には難解かもしれない。 しかし恐れる必要はない。 機能は各チップで概ね同じだから少しマニュアルに目を通せば心配いらない。 それにヒューズとは言っても一回切ってしまったら修復(再接続)できない訳ではなく、(限度はあるが)普通の意味では何回でも書き替え自在だ。

以上、例によって自身の備忘用Blogなのであるが、こうやって書いてみると、やっぱりヒューズビットは面倒だなあ。(笑) de JA9TTT/1

(おわり)