DDS方式の2相パルス発生回路、周波数スキャン機能を付ける
あれこれ悩みながらこしらえてきたDDS方式の2パルス発生回路。
ざっと完成形に持ち込めました。
割り込み処理の時間はギリギリで動いていますが、
メインループはヒマ。
ということで、周波数スキャン(sweep)機能を付加しました。
設定するのは、
Lo側周波数 1~9999Hz f1
Hi側周波数 1~9999Hz f2
Rise時間 0.0~600.0秒 t1
Fall時間 0.0~600.0秒 t2
Hi待ち時間 0.0~600.0秒 w1
Lo待ち時間 0.0~600.0秒 w2
スイープは
(1) f1周波数で2相パルス出力
(2) t1時間をかけてf2までパルス周波数を上昇
(3) f2周波数をw1時間保持
(4) f2周波数からf1まで周波数を下降
(5) f1周波数をw2時間保持
(6) (1)に戻る
を繰り返します。
「100Hz~400Hz」をスイープすると、こんな波形が出てきます。
変化点を拡大
一番下の波形は「F-Vコンバータ」 で見た、
A相パルスの周波数変化。
まだ「main loopはヒマ」だからと、LOG SWEEPの処理も
書き加えてみました。
A相周波数がこんな具合に変化します。
Arduino UNO R3のATmega328P(16MHzクロック)、
8bitマイコンなのに、意外と浮動小数点処理を頑張って
くれます。
10msごとに経過時間から周波数を計算しています。
※関連
・2024年9月24日:秋月のI2C接続液晶 AQM1602XAを基板に直付け
・2024年9月27日:1クロックでも速くしたい DDS方式の2相パルス発生器
・2024年9月30日:1クロックでも速くしたい 割込を「ISR_NAKED」で
※回路図
元のでは無しにしていたSW4にsweepの操作を割り当てています。
最近のコメント