AVRのPWM機能とRCローパスフィルタを用いたDA変換器の設計
ATmega168のPWM波形をローパスフィルタで高周波成分を取り除くことで簡易的なDA変換を実現する。 PWM波形の各種パラメータを下図のように定義する。 出力されるアナログ値はTD/Tpwm*5Vとなる。 TDは矢印で示す割り込みで変化させ、任意のアナログ波形を生成する。 最大5kHzの波形を生成したい、サンプリング周波数10kHz以上を目指す。
PWM波形の設計パラメータの定義
設計パラメータの決定
クロック周波数は20MHz。PWM波形のデューティ比の分解能は256(8bit)。
Tpwmはできるだけ小さくしたいので256/20M=12.8usとする。(fpwm=78.1kHz)
Tintはサンプリング周期10kHzを実現するためには、1/(10k)=100us必要である。Tint<100usを満たしTintの間に生成されるパルスの数Nを多く取り、N=7とする。このとき、Tint=7*Tpwm=89.6usとなる。(fint=11.2kHz)
ローパスフィルタのカットオフ周波数はfint < fcutoff < fpwmを満たすように、
fcutoff = 20kHzとする。
RCローパスフィルタ
を用いるとし、C=0.1uFとすると、R=178Ωとなる。手に入る抵抗値からR=180Ωとすると、
fcutoff = 19.7kHzとなる。
以上まとめると、以下のようになる。
・生成したいPWM波形の各パラメータ
Tpwm=12.8us
fpwm=78.1kHz
Tint=89.6us
fint=11.2kHz
N=7
・ローパスフィルタのパラメータ
R=180Ω
C=0.1uF
fcutoff=19.7kHz
今後はこの設計値をもとに製作し、サンプリング周波数5kHzのDA変換が
実現できるかどうか検証する。