AD9833でファンクションジェネレータを作る15 完成

published_with_changes 更新日:

labelAD9833 labelESP32 labelファンクションジェネレータ

一年近く放置していたのですが、思い立って完成させました。放置していた理由は、
  • 回路が複雑になりすぎて、ユニバーサル基板に手ハンダで組む自信がなかった
  • オペアンプ用の両電源とESP32の電源の扱いに悩んでいた
  • 電源ノイズがAD9833の出力に載っていて、完成させる意欲がそがれた

などです。

トランスを2つ使って正負の3端子レギュレータで電源を作ろうと調べているときに、TPS60403というマイナス5Vを作るスイッチング電源モジュールを見つけました。その小ささにコンパクトにまとまる気がして、またやる気が起きたのがきっかけです。60mAまで流せるので、2回路のオペアンプなら、2つ使えます。スイッチングノイズについては、フィルタを奢って対策を試みます。

タカチのケースに入れることにこだわると、ケース細工も大変だし基板の構成も制約を受けるので、基板むき出しで作ることにしました。それと、ミリバルを内蔵する計画もやめにしました。作成意欲を阻害していた煩雑な事柄を思い切って取り止めにしたので、前に進む気持ちになれました。

目次
  1. 電源
    1. 回路図
    2. 電源ノイズ
      1. 3端子レギュレータ
      2. 正負5V電源
      3. ESP32が作る3.3VとAD9833出力
    3. ヒートシンク無し
  2. ハード構成
    1. 機能
    2. 回路図
    3. ESP32 ピンアサイン
    4. 基板レイアウト
    5. 実装
  3. 完成
    1. ハード
    2. ソフト
    3. 代表特性
      1. sin波 100kHz, ±1Vp-p
      2. sin波 1MegHz, ±1Vp-p
      3. 三角波 100kHz, ±1Vp-p
      4. 三角波 1MegHz, ±1Vp-p
      5. 矩形波 100kHz, 2Vp-p
      6. 矩形波 1MegHz, 2Vp-p

電源

回路図

オペアンプの両電源については、L7805でプラス5Vを作り、それを反転したマイナス5VをTPS60403で作ります。プラス5VはESP32の電源としても利用します。電源の供給元は手持ちのトランス式の9V ACアダプターを利用します。そしてノイズ対策に随所にLPFを入れることにしました。

手持ち部品で作りましたので、1μを直列で3つ繋げて3端子レギュレータ入力用の0.33μにしたり、1μと1Ωを直列に繋げてタンタルコンデンサの代わりにしてTPS60403のIN/OUTに入れたりしています。最初は発振していたので、対策に色々手を加えました。タンタルもどきのコンデンサもこの一環です。発振は収まりましたが、何が効いたかはわかりません。

電源まわり

電源ノイズ

3端子レギュレータ

供給元のトランスは全部の回路を組んだ状態で、10.4Vで出力していました。このとき、Vp-p 654mV 120Hz(交流の倍圧整流回路)のリップルが出ています。3端子レギュレータのL7805でリップルを取り除くと、 Vp-p 73mvになりました。

3端子レギュレータ前後に載るノイズ

正負5V電源

TPS60403の前後に設けた3素子LCフィルタの接点周波数はIN側 5kHzで、OUT側 3kHzです。(同じ容量のコンデンサを4つ揃えることができなかったので、こうなりました。)LCフィルタの特性は手持ち部品で適当に決めています。-60dB/decadeで減衰します。このフィルタを通した正負5V電圧は下図のようになりました。負側がややノイズが大きいです。FFT解析を行うと、正負両電圧ともノイズのピークはTPS60403のスイッチング周波数の250kHzに出ていました。

正負5V電源に載るノイズ

ESP32が作る3.3VとAD9833出力

ESP32が作る3.3V電圧でAD9833とLCDモニタを動かしていますので、この電圧のノイズも見てみました。さらにAD9833の1Hzサイン波形に載っているノイズも見てみました。Generator出力は±1V程度で使いますので、振幅に対して 9.6[mV]/2[V]=0.489.6[mV]/2[V] = 0.48 %の比率のノイズになります。FFT解析するとその周波数成分はGenerator出力周波数の高次成分と、スイッチング周波数の250kHzの高次成分でした。

3.3VとGenerator出力に載るノイズ

以前はAD9833の出力に間欠的にノイズが載ることがありました。周波数を変更するタイミングであったりとか、周波数スイープをさせているときにノイズが出ていたので、AD9833の出力パラメータの切り換えがうまくプログラミングできていないのだと考えていました。しかし、今回変更した電源に変えてからは、そういったノイズが出なくなりきれいな波形になったので、原因は電源ノイズであったのだと思います。

ヒートシンク無し

ROHMのTechnical Report 3端子レギュレータの放熱設計 に倣って検討します。

条件
    入力電圧                 VIN=10.4 [V]V_{IN} = 10.4 ~ [V]
    出力電圧                 VO=5.0 [V]V_{O} = 5.0 ~ [V]
    最大周囲環境温度                 TAmax=40 [C]T_{Amax} = 40 ~[^\circ\mathrm{C}]
    最大ジャンクション温度         TJmax=120 [C]T_{Jmax} = 120 ~[^\circ\mathrm{C}](定格の 80%)
    熱抵抗                         TJA=62.5 [C/W]T_{JA} = 62.5 ~[^\circ\mathrm{C}/W] (データシートより)

P=TJmaxTAmaxθJA=1204062.5=1.28 [W] \begin{aligned} P &=\frac{T_{Jmax} - T_{Amax} }{\theta_{JA}} = \frac{120 - 40}{62.5}&= 1.28 ~[W]\\ \end{aligned}
IO=PVINVO=1.2810.45.0=0.237 [A] \begin{aligned}I_{O} &= \frac{P}{V_{IN} - V_{O}} = \frac{1.28}{10.4 - 5.0} &= 0.237 ~[A]\\ \end{aligned}

この結果より、3端子レギュレータを流れる電流が 0.237A より少なければ、ヒートシンクがなくても大丈夫です。全ての構成部品をブレッドボード上で組んで、電流を実測したら0.19Aでしたので、ヒートシンクは付けなくでも大丈夫そうです。

PCB基板に本組みして3端子レギュレータの温度を測ると、雰囲気温28℃のときで 57~60℃でした。ファンクションジェネレータでは負荷の変動はないので、常にこの温度になります。仮に触れたとしてもやけどする今度ではないので、このままにします。

ハード構成

機能

機能についてあらためて整理すると、表のようになります。a) 波形選択 と e) Adjust Frequency、f ) Freqency Increment Set は参考にしたAD9833 Waveform GeneratorAD9833 DDSモジュールを試す(1)のブログ記事のコピーです。波形をタクトスイッチで切り換え、2つのロータリーエンコーダで周波数を設定します。

b), c), d)については以前にブログに載せた内容です。

機能InputOutputESP32
IN Port
ESP32
Out Port
備考
a) 波形選択Tact SW2 x photo coupler, 1x LED11排他処理回路
b) 周波数スイープTact SWSoftware, LED. LCD11
c) DCカットTact SW2 x photo coupler, 1x LED11排他処理回路
d) 出力オンオフTact SWSoftware, LED11
e) Adjust FrequencyRot EncSoftware, LCD3-
f ) Freqency Increment SetRot EncSoftware, LCD3-
アップロード中: 37565 / 37565 バイトをアップロードしました。

回路図



ESP32 ピンアサイン

使用するESP32はWemos D1 mini ESP32です。普通のタイプのESP32-DevKitCに比べてI/Oの内容は同じなのですが、ピンが並列しています。

基板レイアウト

ユニバーサル基板はタカチPCB100-160 (100×160×1.6)を使います。部品レイアウトと配線はKicadで行います。「反転ビュー」で裏から見ることもできますので、配線のはんだ付けや導通チェックも迷わずにできます。


実装

Kicadで作ったPCB図を印刷してユニバーサル基板に貼り付けて、その上から部品を載せて行きハンダ付けをします。この方法を思いついて、部品の実装がとても楽になりました。


全ての部品をハンダ付けした状態です。出力端子はBNCにしました。同じものを2つの端子から出すようにしています。一方はオシロに入れて、モニターしながら使うことを想定しています。


裏面の配線はKicadの画面をPCで見ながら行いました。Kicadがなければ配線は困難だったと思います。ジャンパー線はポリウレタン線を使いました。重なっている箇所はショートの未然防止のため、ホットボンドで線同士を浮かせてました。


完成

ハード

ESP32の電源はPCのUSBポートを利用する場合と3端子レギュレータで作った+5Vを利用する場合のどちらも有効です。前者の回路には保護回路を入れていないので、PCに繋ぐ場合には電源のトグルスイッチをOFFにする使い方です。より安心のためには、それぞれを排他的に使うようにします。


ソフト

参考にしたedyさんのブログに載っていたスケッチをベースにしています。

当初の構想では、スイープ周波数の設定をロータリーエンコーダで変更することを考えていたのですが、しばらくの間、放置していたのでスケッチの内容を忘れてしまいました。現状は10Hzから50kHzを120秒かけてリニアスイープする設定です。変更が必要な時には、それを書き換えて使うようにします。
AD9833 DDSモジュールを試す(1)

AD9833 DDSモジュールを試す(1)

アマゾンでAD9833DDSモジュールを買ってしまいました。10月14日に発送通知があり、26日に到着しました。商品の説明には「オンボードの高速は300Mアンプと、低域通過フィルタリングされています。 」とありますが、そんな部品は見当たりません。ちゃんとしたした説明をつけてほしいものですが、これがチャイナクオリティでしょうか。先のAD9850DDSモジュールを使った記事で参考にしたサイトを書いた人が、AD9833 Waveform Generator...


代表特性

1ch(上、黄色)がAD9833のoutputで、2ch(下、青色)がLPFとアンプを通した本ジェネレータの出力波形です。Butterworth LPFの効果で、細かなノイズまで除去できています。比較できるように、各々のケースで出力波形のy軸ゲインは500mV/divで一定にしています。

sin波 1MegHzではゲインは少し下がりますが、波形は目視ではほとんど歪んでしません。三角波と矩形波の1MegHzは使うのが厳しい波形です。また、矩形波はLPFを通していないので、立ち上がりと立ち下がりにオーバシュートが見られます。

sin波 100kHz, ±1Vp-p


sin波 1MegHz, ±1Vp-p


三角波 100kHz, ±1Vp-p



三角波 1MegHz, ±1Vp-p


矩形波 100kHz, 2Vp-p



矩形波 1MegHz, 2Vp-p


Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down