自分で設計して起こした基板のDCDCコンバータが、どうも安定しない。出力を固定値に合わせようとしてPWM幅を制御すると、ある一定の幅の間で振幅減少が現れる。
この現象は、以前も発生したことがある。DCDCコンバータの入力、出力遅延によるものと想定される。そこで、基板の入出力の遅延特性を確認しておこうと考えた。PWM幅が変化してから出力に変化が現れるまでの遅延時間が精度高く想定できれば適切な制御ロジックを組め、安定的に動作させられるはず。
そこで、プログラムで、PWMの幅を増やし(減らし)てから、その影響が出力に現れ始めてから完了するまでの時間を条件によりどのように変化するか測定してみた。
入力はNexPowerのNT145AX単体から、負荷は430Ωの抵抗と、シンプルな構成。
PWMデューティ比を0~30%の間で変化させているので、出力は0~40V程度まで変化する。負荷抵抗が大きいので流れる電流は100mA程度と少ないので、これがうまく測定できたらもう少し電流を流したときの特性も測定してみようと思う。
PIC16F1823用のプログラムはこんな感じ。
実は、このプログラムは、自作簡易ICEで基板の動作を確認するために、ADコンバータチャネルを柔軟に変更できるよう拡張したのだが、うっかりADチャネルの設定部を誤って記述し、バグ取りに丸々1日かかってしまった。肝は、
advalue[AD_PORT#]
とすべきところを
advalue[ad_ch[AD_PORT_No]]
としてしまったこと。気付いてみれば、何のことはないのだが、思い込みというのはやっかいなもので、ほとほとまいった。
現象は、2つのパラメータに明らかに別の値を入れているのに、表示させると同じ値が表示されてしまうと言うもの。原因は、配列の添え字が定義した配列範囲を超えて他のパラメータのメモリにアクセスしてしまったというありがちなもの。
今回は、とりあえず、前座でバグが取れたまでのご報告。