PICでアクティブ消音制御
PIC でアクティブ消音制御というとほとんど絶望的に聞こえますが,できます.
ミドルクラスの PIC としてメジャーな PIC16F877 を用いて,アクティブ消音制御を行いました.
サンプリング周期 0.75msec で,24 次のコントローラを実装しました.
ただし,実装するまでにはそれなりの苦労を伴いました.
ここではコントローラの演算量低減のため,コントローラの係数を有効桁 10 の 2 進数で表現し,浮動小数演算のかわりに整数演算を行っています.
コントローラを近似したことにより,PC での制御結果に比べて若干制御性能は落ちますが,それなりの性能が得られています:
PC (RT-Linux 3.2) による制御結果
PIC (PIC16F877) による制御結果.ただし,騒音の信号 w は PC から発生させる
PIC 単独で動作.騒音も PIC で生成する.騒音スイッチを手動で on/off.
参考: 作業ディレクトリ
(平成19年度オープンハウスに使用)
手順の説明が READMEにあります.
PIC でアクティブ消音を実現するまで:
- 材料
- ANC基板の作成
- プログラムライタ,デバッガ,C コンパイラ
- コントローラを求め,その状態空間実現を適当な正準形に変換する
- PC で消音制御実験を行い,理想状況下での観測主力 y と制御入力 u およ
び状態変数 x を記録する
- 補償器を近似して,PIC 用 C コードを生成する.
- PIC 用 C コードのシミュレーションを行い,実験結果と比較する.(スケーリング,有効桁を調整)
- PIC 用 C コードをコンパイル,書き込む.(容量オーバーで書き込めない場合は,有効桁を下げる,プログラムを関数化して分割配置する等して対処)
- PIC で消音制御実験
Yasuhide Kobayashi
Last modified: Wed Jan 30 19:52:32 JST 2008