AD9833でファンクションジェネレータを作る12 ミリバル

published_with_changes 更新日: event_note 公開日:

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

12 ミリバル

12.1 ミリバルを搭載するための課題

このプロジェクトの当初目標は
周波数をスイープさせて、自動で周波数特性を測る。それをPCとかで見る。
です。
そのためにはミリバルを組み込み、ESP32のAnalog readで値を読み込む必要があります。

ESP32のADCはリニアじゃない

ESP32は公称0~3.3Vを0~4096で読み込みます。ただし、精度は良くなくリニアリティが悪い、特に最小値、最大値付近はとても悪いという癖があります。

特性を測定して補正して使うつもりですし、周波数特性なのでミリバル出力を1V程度に合わせ込んで使うつもりです。この特性補正はできてからの検討事項です。

データを送る方法

もう一つ課題があります。
Analog readで読み込んだ値をPCなり外へなりへ送る方法です。現状では割り込みとの関係でSerial.printが使えません。シリアル通信がNGなのか、何が良くて何がダメなのかを究明する必要があります。
ここをまず押さえる必要があります。

ミリバルの読み込みタイミング

更に、
例えば、AD9833の発振する信号をアンプに入れて、アンプ出力の周波数特性をミリバルで測るとします。このとき、ESP32へ、「今からミリバルの値を読め」と指示する必要があります。スイッチがいります。でも、GPIOがもう余っていません。

現状のスイッチでやりくりする方法は、
  • normal mode: round(周波数まるめ)スイッチを押すと、周波数まるめとミリバル読み込み(roundスイッチ兼用)
  • sweep mode: sweep modeになると同時にミリバル読み込み開始(スイープ切り換えスイッチ兼用)

そもそも、AD9833の波形を作るためのESP32をなぜミリバルの値を読むためにも使わなければならないのか、あらためて頭を整理してみました。
周波数特性を測るには周波数とその時の出力が必要で、出力波形を解析/変換して周波数をカウントするのが大変だから、AD9833への指示周波数をこれに使うためです。

スイッチをひとつ増やすためにこの仕様を変えるのは得策ではありませんので、上記のやりくり策で進めます。

12.2 回路図

  • 整流回路                 :全波整流
  • オペアンプ(4回路):LT1364
  • ダイオード              :1N4148シリコンダイオード





Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down