SSブログ

MC9S08SH4 のギャング出力でバックコンバータ (6) [HCS08]このエントリーを含むはてなブックマーク#

BuckConverter4.png

今回は、ちょっと予定変更。 定電圧バックコンバータでステップ応答を確認します。

ハードウェアの変更点

実験の前にカット・アンド・トライで変更したハードウェアのおさらいから。

LCフィルタのコンデンサは、100µFにしようか470µFにしようか考えていましたが、470µFだとあまりにも大きいので間をとって220µFにしました。

実験では、Ni-MH電池を電源にしていたのですが、どうも電源インピーダンスが十分に低くなっていないようで、出力にノイズがのります。 そこで、電源の方に470µFの電解コンデンサを付けてやりました。

出力波形の観測には、2SA1015を使ったエミッタ・フォロワを付けました。 100Ωのエミッタ抵抗を使用しています。

ステップ応答向けプログラム改定

ステップ応答を調べる目的は、限界感度を確定させるためです。 そのため、P制御器のゲイン"kp"を変化させながらステップ応答を観測するという手順になります。 この手順で実験を行うとき、前回作成したプログラムでは、以下の問題が考えられます。

  • 目標電圧"target"が固定されている

    本来のステップ応答は、入力が0からある値まで遷移時間ゼロで立ち上がった場合の出力を意味します。 このバックコンバータの場合、入力は、目標電圧変数"target"です。 デバッガから"target"を変更させてステップ応答を見ても良いのですが、たいへん手間がかかりそうです。 そこで、今回のプログラムでは、256フレームごとに"target"を変化させてステップ応答を実現しました。

  • ゲイン"KP"が定数に固定されている

    前回のプログラムでは、ゲインによって受け入れる誤差"err"の上下限を決定する方式をとっていました。 そのため、ゲインは上下限値と共にプログラム中にハードコーディングしてあったのですが、さすがに使いにくくなってきました。 今回は、ゲイン変数"kp"を導入して、デューティー変数"duty"に上下限を設定する方式としました。

  • ゲインが整数値である

    前回のプログラムでは、かなり計算量が多くなることを予想して、整数の乗算だけで済むようにゲインを整数として計算を行いました。 限界感度を求めるには、さすがにこれでは荒すぎます。 そこで、今回のプログラムでは、ゲイン"kp"を小数部4ビットの固定小数点数として計算を行って、ゲインを細かく変化させられるようにしました。

ステップ入力生成

ステップ入力は、変数"target"を変更するだけで実現可能です。

    // Update TARGET if required.
    if (frame_count == 0) {
      target = 114 - target;
    }

変数"frame_count"は、新たに導入した8ビットのカウンタで、デューティーを変更するタイミング(フレーム)でインクリメントされます。 1フレームは、PWM波形8周期分なので、 25.6µ秒 × 8 = 204.8µ秒 です。 このカウンタが0になるたびに"target"を更新するので、出力には、周期 204.8µ秒 × 256 × 2 = 104.9m秒 の矩形波が現れることが期待されます。

”target"変数は、初期値として"77"が入っているので、37と77の間を往復します。 0と77の間を往復させなかったのは、デューティが飽和して発振が観測できなかったからです。

エラー・アンプ・プログラム

誤差増幅には、算術演算が欠かせませんが、できるだけ難しい演算を行わせないように工夫しました。 以下は、電圧出力が目標よりも低い場合の処理です。

    if (vadc[1] << target) {
      // More DUTY expected.
      err = target - vadc[1];
      diff = err * kp >> 4;
      if (diff > MAX_DUTY-TYP_DUTY) {
        duty_nxt = MAX_DUTY;    // maximum duty
      } else {
        duty_nxt = TYP_DUTY + diff;
      }

変数"kp"は、小数部4ビットの固定小数点数です。 "err * kp"で誤差に比例定数をかけて、"err * kp >> 4"で整数に変換します。 "err"も"kp"も符号なし8ビットの"byte"型変数として定義していますが、"err * kp"の演算結果は、なぜか16ビットの数値になってしまっています。 そのため、4ビット右シフトして12ビットの整数値を得ることができます。

もし、確実に"err * kp"を16ビットで演算したい場合には、"(word)err * kp"として、16ビットの演算であることを明示すると良いでしょう。 どちらの記述でもコンパイル後は同じコードが得られます。

符号なし16ビットの"word"型変数"diff"に目標値からの差分が得られたので、これに"TYP_DUTY"を加えてデューティー値とします。 ただし、デューティー値には上限"MAX_DUTY"が定めてあるので、"diff"の値が大きすぎる場合には、デューティー値を"MAX_DUTY"で制限するようにしています。

実験の結果

ゲイン"kp"を変えながら、出力の波形を観測しました。 まず、"kp=24"(1.5倍)の結果です。

WS000351.png

矩形波出力を期待していたのに、ずいぶん歪んだ波形が出てきました。 これは、PCのライン入力がDC信号をカットしてしまっているからです。 60ms付近にあるのがステップ応答の波形です。 安定して立ち上がっていることがわかります。


WS000352.png

一方、これは、"kp=128"(8倍)の結果です。 ステップ応答入力により出力が発振していることがわかります。 この波形を見ると、発振波形の振幅が一定しているように見えますが、これは、デューティー値に上下限を与えたためです。 理論的には、振幅は際限なく無限大まで拡大するはずです。


WS000353.png

これは、"kp=78"(4.9倍)の結果です。 振幅が少しずつ小さくなっています。 これが、安定の限界で"kp=79"にすると振幅が小さくならなくなり、安定した発振状態になります。 このため、"kp=79"が求めるゲインであることがわかります。

"kp=79"の時の発振波形から周期を計算して、3.20m秒を得ました。 これが、限界感度法で得られるもう一つのパラメータです。 次は、いよいよPI制御器に取り掛かります。

プロジェクト・アーカイブ

プロジェクトを公開します。 興味がありましたら、ご覧になったうえでダメ出しをしていただければ幸いです。 このリンクを"SH11.zip"という名前で保存するとZIPファイルが再現できます。

参考文献

Scilab/Scicosで学ぶシミュレーションの基礎―自然・社会現象から、経済・金融、システム制御まで

Scilab/Scicosで学ぶシミュレーションの基礎―自然・社会現象から、経済・金融、システム制御まで

  • 作者: 橋本 洋志
  • 出版社/メーカー: オーム社
  • 発売日: 2008/01
  • メディア: 単行本
Scilabで学ぶシステム制御の基礎

Scilabで学ぶシステム制御の基礎

  • 作者: 橋本 洋志
  • 出版社/メーカー: オーム社
  • 発売日: 2007/04
  • メディア: 単行本

nice!(0)  コメント(4)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 4

kiyoshi takagi

おひさ~~

そうかあ、こうやってDC-DCコンバーターつくりもいいなあ。

HCS08をもっているけど、何もしていない。

この08はADCもあるのか・・・

kiyoshi@オリジナルHC08設計者


by kiyoshi takagi (2009-12-17 14:19) 

noritan

いらっしゃいませ.
このマイコン,大電流出力ポートを持ってはいるのだけど,PWMで駆動できないんです.仕方ないからソフトウェアでPWMやってるんです.でも,周波数が高くできずにコイルがでかくなって,おまけにHCS08の計算速度もそんなに早くないから周波数特性も望めない.

続きは,ドライバ外付けで考えます.8ビットで何とかしちゃるぞ.
by noritan (2009-12-17 16:13) 

kiyoshi takagi

そいやさ、STマイクロのST7はHC05だがHC08のコンパチ品
だよねー。

臭いんだあ。

米国でオリジナルHC08開発したのは17年前か。。。爺だなあ。
by kiyoshi takagi (2009-12-17 16:32) 

noritan

ST7,ちょいと調べました.
1) Xレジスタが8ビットなので,HC08のアップコンパチではありません.
2) 命令セットをざっと見たところ,HC05に存在する命令はすべて実装されているようです.
と,いうわけで,HC05のアップ・コンパチの可能性濃厚です.
ST8Mも楽しそうですよ.
by noritan (2009-12-17 19:50) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。