CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

フィードバック制御

出力電圧をADCで読取りDUTYを変える制御を組み込んでみました。

目標値VOUTに対して出力電圧が高い場合はpwm値をデクリメントしてDUTYを下げ低いときはpwm値をインクリメントしてDUTYを上げるという単純な処理です。pwm値は有効な制御ができる2~600の間に収まるようにリミッタ入れました。

PID制御とか高級なことをしているわけではなく言ってみればON/OFFのみのコタツ制御のようなもですが、接続される負荷が決まっていて時間変動も少ないと思われるのでこんなものでいいでしょう

ADC値と比較されるVOUT設定値を動かしたときの出力電圧はこのようになりました。VOUT=100~500くらいでリニアな関係になっています。負荷をかけても内部でDUTYが変化して追従しています

             出力電圧 vs. VOUT設定値

出力が5V以下、30V以上になるとpwm値のコントロール範囲から外れるので制御が利かなくなりますが希望の24Vがリニアな範囲内に入っているのでOKです。上方のマージンを持たせるためもう少し2次巻数を増やしてもいいかもしれません。リニア制御範囲では出力電圧=0.0541×VOUT値+0.39と近似できるので24V出力にするにはVOUT=436となります

 

スイッチングレギュレータ専用ICはアナログ回路でこのような制御を実現していてアナログのフィードバック系が自動的に平衡状態に引き込まれる(アナログコンピュータが演算しているともいえる)のに対して、ソフトウェアでそれがうまくいくかという危惧がありましたが、プログラム動作が適当な遅れ要素になって一応動いているようです。過渡特性やリプルがどうなっているかは見ておいた方がよさそう