● 実験テーマ66

「AD9834_DDSモジュールによる低周波発振器の、製作実験記」
 (前テーマの結果を踏まえ、LPF+出力アンプを追加して、低周波帯域で使える発振器を製作してみました。)

※ 150922: 周波数スイープ機能を追加しました。
         尚、外観は殆ど変りません。
         ハード改造は、未使用のLEDポートを、スイープ同期パルス出力信号として、液晶の右横に
         2ピンのヘッダコネクタを追加して出したのと、ノーマル/スイープの、モード設定ピン(3ピン)
         を同じ場所の近くに追加した点の、2点のみです。
         プロジェクト名は、「AD9834_AF_OSC_V2」としました。
         詳細は、
2015.8.31からの記事を参照してください。

※ 151022: スイープ分解能を上げました。(easy_fra_v2用です。)
         最低周波数ステップを、5Hzから、2Hzにし、全73ステップから181ステップに変更しました。
         ソース名は、「AD9834_AF_OSC_V2a.c」としました。

<この発振器の実測から見た主な性能>
 @ 出力レベル
   ・レベルVR最大/600Ω負荷時: 3.5Vp-p
   ・
レベルVR最大/無荷時: 7.5Vp-p
 A 出力抵抗
    560Ω
 B サイン波出力の周波数特性
   ・5Hz〜 300kHzまでは、フラット(0dBv= 0.775Vrms(600Ω負荷)→
 約2Vp-p)
   ・-3dB点帯域は、約1.5Hz〜 450kHz(2Vp-p 600Ω 0dBv)
 C 周波数精度
   ・±1〜 2Hz(自作カウンタでの確認では、マイナス傾向でした。)

・以下、この実験の顛末記です。

■ 2014.3.9
  ・ストリナの、DDSモジュールを使い、外部に、LPF+出力アンプを追加して、600Ω或いは、50Ω負荷にて
   全帯域でフラットな特性の、低周波に特化した発振器として使える形にまとめようと思い立った。
  ・LPF+出力アンプは、後閑氏がHPで公開している回路(7次のLC構成チェビシェフ型フィルタ+OPアンプ)
   を参考にすることにした。
  ・7次のLC構成チェビシェフ型フィルタは未経験だと言うこともあり、シュミレーションにて動作確認を
   してみた。
   その時のメモを下にアップしました。


■ 2015.3.10
  ・使える形に別基板でまとめてみる。
   DDSモジュールを使うので、ユニバーサル基板で製作。
   (EAGLEでやりたいが、なにせ予算がない・・・)
  ・簡単にラフ画きで、パーツ配置・基板サイズなど検討してみた。


■ 2015.3.13
  ・水魚堂にて最初の回路図作成を行い、部品を手配した。
   来週16日から、3/19まではスポットで仕事が入っているので、受取は、3/20になる。
  ・仕事に入る前までは、本番のソフトを考えることにした。
   まあ殆ど実験時のと一緒でもOKなのだが・・・
   液晶への周波数表示は、ゼロブランク対応に改良しようと思う。


■ 2015.3.14〜 2015.3.15
  ・ゼロブランク対応(ソフト対応)を検討しコーディング→ 上手く行く。


■ 2015.3.22
  ・部品が届いているので、実際に部品を置きながら、配置検討を行う。
   こんなもんかな・・・


■ 2015.5.4
  ・結局、仕事はスポットで終わらず、GW突入前の、4/28まで続くことになり、この間、電子工作に戻れなく
   なっていた。
  ・久しぶりに電子工作復帰(5/4)
   ただたぶん、明日位までしか出来ないが・・・
  ・今日は、部品配置検討の詰めを行い(下写真参照のこと)基板加工図を作成した。


■ 2015.5.5〜 2015.5.6
  ・前後アクリル板+基板の加工と、主要部品の実装+仮組みを行った。
   今回の基板サイズは、正方形サイズの、104 × 104mmになりました。

  ・結局仕事の方は、GW明けの、5/7〜 5/15まで延長になった。


■ 2015.5.18
  ・ユニバーサル基板の配線が完了した。


■ 2015.5.19
  ・完了後、動作確認をしようと思ったところで、OPアンプ(CLC452 "N.S")の注文を忘れているのに
   気付く。
   調べたところ、このOPアンプは古いタイプのもので、現在はディスコン対象品らしいです。

   製造中止となった製品(EOL品)をオリジナル・メーカに代わってサポートする企業、ロチェスター社
   と連携している、マルツで注文を受け付けていますが、最低購入個数が、36個となっており
   個人で注文するには無理がありすぎます。

   そこでこの部品と上位互換のある「LMH6723」の存在を知り、それを注文することにしました。
   こちらは、RSで、最少5個単位で注文できます。
   ただ、DIPパッケージは無く、8pinのSOICか、5pinのSOT23パッケージしか用意されてません。
   サンハヤトの、8pinSOIC→ DIP変換基板を使う予定だったので、8pinのSOICタイプのものを
   注文しました。

   以下に、主な仕様の比較を示します。
              CLC452                   LMH6723
      ----------------------------------------------------------------------
    @ 帯域幅    130MHz                    370M
    A 出力電流   100mA                     110mA
    B 電源電流   3mA                         1mA
    C 電源電圧   5V単一電源で動作可能  4.5〜12Vの範囲の単一電源で動作可能
      ----------------------------------------------------------------------

  ・OPアンプ未実装状態で動作確認を始めた。
   まずは電源のショートチェック
   最初からつまずいた。
   電源回りの配線ミスが2ヶ所あり、レギュレータの入力とGND及び、AVCCとGNDがショートしていた。
   この修正でショートチェックOK。

  ・電源電圧チェック
   全IC未実装状態で、+5V= 5.06V, AVCC= 5.02V
    PIC18Fのみ実装状態でも変わらず。

  ・HEX書込みはOK。
   RE(ロータリ・エンコーダ)と、ステップSW動作もOK。
   方形波出力を、中華オシロとカウンタにてチェック→ OK


■ 2015.5.22
  ・LMH6723が届いたので、サンハヤトの、SOIP→ DIP変換基板に実装した。
  ・まずこれを実装して、サイン波出力、無負荷時の電源電圧を確認した。
       (下記、実測値は、600Ω負荷・レベルVR最大でも落ちること無かった。)
  → +5V: 5.05V
          AVCC: 5.01V
  ・現状の回路で、OPアンプのGAINポテンショ:中央位置/レベルVR:最大で、600Ω負荷の
   サイン波出力レベルは、1.8Vp-pで飽和してしまう。
   (非飽和最大レベルは、1.6Vp-pであった。)
   ここは、非飽和で、2Vp-p(約0dBv 600Ω負荷)は欲しいところである。
  
  ※ 下に現時点での、サイン波出力の周波数特性と、負荷特性(無負荷・600Ω負荷)の実測結果を示す。


■ 2015.5.23
  ・昨日の実験結果で、問題になると思われる点
   @ 600Ω負荷時のレベルが、2Vp-p(max)に足らない。(1.6Vp-p)
      まあこれは四捨五入すれば約2Vp-pなので良しにしても良いとは思うが・・・
      (1Vp-p(max)でも私の用途では問題にならないか・・・)

     <考えられる対策>
      ・LMH6734は、4.5〜 12Vの単一電源動作が可能なので、ACアダプターに安定化された9V出力のもの
       を使い、その電圧をOPアンプ電源として供給すれば、たぶんこの問題は解決するとは思うが・・
      (この時点では、これしか頭に浮かばなかった。)

   A 周波数特性だが、何故か、2kHz〜 10kHzの間で、少しずつGAINが低下(約-3dBの範囲)しているのが
      気になる。(10kHz〜 300kHzまでは、その低下したレベルでフラットであるが・・)


■ 2015.5.25
  ・昨日の問題点Aの方からかたずけることにした。
   これに関して思い当たることがある。
   それは、AD9834の、VINピン(コンパレータ入力)の扱いが、オリジナル回路と、MY回路で異なる点である。
   オリジナル回路は、このピンは、300Ωでプルダウンされているだけである。
   一方、MY回路では、ストリナのDDSモジュール内で、DAC出力(Iout)が、CRフィルタを介して、VINに接続
   されている。

   前(2015.5.22付)にアップした回路図の赤丸で囲んだ部分が、そのCRフィルタであるが、この時定数から
   カットオフ=約5.3kHzであることが判る。
   どうもこのフィルタ(たぶん、300Ωはダンピング目的の抵抗で、0.1uはパスコン目的であると思われる。)が
   悪さをしているような気がしてならない。
   元々コンパレータ入力を使っての方形波出力はしてないので、R=300Ωは削除してもかまわない。
   0.1uは、交流的なプルダウンとして考えればこのままでよいはず。
   この修正のついでに、もう一つオリジナルと異なる点があるので、それも修正することにした。
   それは、オリジナルは、Iout出力には、C=20pが付いていない点である。
   ストリナのモジュールには、このCが付いている。
   関係あるとすれば、周波数特性にだが、あまり変化はないかもしれないが、やることにした。

  ※ 下に修正後の測定結果を示す。
     問題の、
2kHz〜 10kHzの間で、少しずつGAINが低下する現象は無くなり、フラットになった。


■ 2015.5.27
  ・次に、Aの問題(レベル不足)をかたずけることにする。
   前にも述べたように、ACアダプターに安定化された9V出力のものを使い、その電圧を
   OPアンプ電源として供給する方法も考えられるが、手持ちの部品でなんとかしたく
   別の方法で考えた。
   何も、5V単一電源にこだわる必要はない。
   LMH6723は、±5Vの、2電源供給も出来るので、+5Vをチャージポンプ式の負電圧発生IC(
LTC1144CN8
   に入力すれば簡単に、-5Vが得られる。
       この方法で改造することにした。
   追加スペースも、OPアンプの位置から、そんなに離れてない場所にありそうなので
   (方形波出力のRCAコネクタの下)そこに追加することにした。

   まず改装後、無負荷の電源コンディションを確認した。
   → +5V: 5.05V
      -5V: -4.94V
     AVCC: 5.00V

       600Ω負荷では、
   → +5V: 5.05V
      -5V: -4.91V(リップル: 約0.1Vp-p)

     AVCC: 5.00V

  ・-5Vリップルは、約0.1Vp-p程度だが、小レベルの時、影響が出そうなので、LTC1144の負出力の
   コンデンサを、10uから、手持ちの、120uに容量増ししてみた。
   結果、リップルは殆ど無くなった。
   平滑効果から、-5Vの電圧レベルは、若干低下したが問題ないレベル→ -4.89V

   ここまで確認したところで、いくつか出力波形を取ってみた。以下にアップします。
   これで良さそうである。


■ 2015.5.28
  ・
回路FIX後の、周波数特性を取ってみた。
   これは、このページトップのドキュメント画像を参照してください。
   以下のような良好な結果となりました。
   <サイン波出力の周波数特性>
   ・5Hz〜 300kHzまでは、フラット(0dBv= 0.775Vrms(600Ω負荷)→
 約2Vp-p)
   ・-3dB点帯域は、約1.5Hz〜 450kHz(2Vp-p 600Ω 0dBv)

   ※ 2週間ほど仕事が無く待機してましたが、また6月1日より、1ヶ月の仕事が入りました。
      6月は、電子工作の方は出来そうにもありません。
      次のテーマは何にするかも思案中ですが・・・・


---<ここから、追試:「周波数スイープ機能」追加の記事>-------------------------------------

■ 2015.8.31
  ・将来的に、簡易な自動周波数特性測定装置の実験をしてみたくなり、それに使えるように
   
周波数スイープ機能を追加してみることにしました。
   考えた仕様概要等は、以下です。

   <初期バージョンからの変更点>
    ※ 通常の、低周波オシレータ機能(NORMALモード)の他に
       スイープ・モードを追加
       @ 2つのモードの切替えは、電源投入時の、モードピン(空ポートRB7を使用)
          の状態を読込み、各処理に分岐する。(途中の切替えは考えない。)
       A 通常モード時の、Step SWを、スイープ・モードでは、Start SWとして
          使用する。
          Start SWが押されたら、現RC2の、LEDポートに追加したピンヘッダより、
          正の同期パルスを出力後、スイープを開始する。
          途中のストップは考えない。
          スイープが終了したら、再び、Start SW ON待ちとし繰返す。
       B スイープ中に出力している周波数変化の模様を、液晶に表示する。
    
   <スイープ仕様>
    @ スイープ周波数範囲= 10Hz〜 100kHz(フラット領域を使う)
    A 周波数ステップ
       周波数帯により、次のステップで周波数を変化させる。
       10〜 100Hz= 5Hzステップ
       100〜 1kHz= 50Hzステップ
       1k〜 10kHz= 500Hzステップ
       10k〜 100kHz= 5kHzステップ
    B 周波数出力時間= 各1秒とする。(全73ポイント、1スイープ1分13秒)


■ 2015.9.1
  ・一応ソース書き上げる。
   コンパイルもOK。


■ 2015.9.2
  ・ボードを改造し、デバッグ開始。
   10〜 1000Hzまでは、OKだが、1000Hzの次が、1050Hz出力(1500Hzが正解)
   になってしまう。
   どうも、周波数ブロックの最初の出力と、次から、周波数ブロックの最後までの、FORループ
   の処理の2つに分けているのが問題のようだ。
   最初のブロックは合うが、次回のブロックからは、先頭の出力が1つズレるために、1000
          でお尻になるはずが、1050まで、50Hzステップで進んでいる。
   1つの、FORループで完結させ、ループを抜けたら、ステップ数だけ更新するように修正した。
   この修正で上手く行く。


<最終回路図>
 ・こちらから、どうぞ→ 「PIC18F_DDS低周波発振器」

                 ※ 150922: スイープ機能追加に伴い回路図を置き換えました。

<最終ソース>
 ・こちらから、どうぞ→ 「AD9834_AF_OSC.c」
 (初期バージョン:スイープ無し)
                    「AD9834_AF_OSC_V2.c」 (スイープ機能追加バージョン)
                   「AD9834_AF_OSC_V2a.c」 (スイープ分解能を上げました。QVGA表示の、easy_fra_v2用です。)


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ67へ →