[][mobile][Homepage][BBS][Blog][YouTube][asablo]

過去の記事の検索が簡単にできるよ (・∀・) 例 ランチャー9
カスタム検索

OSCCALをランダムに設定する実験2013/12/04 23:31:32


OSCCALをランダムに設定

前回、OSCCALを利用してスペクトラム拡散をする記事を紹介したが、これを応用してPWMのモータ制御の雑音が減らせられないかを実験してみた。

DCモータの回転数制御は、PWMが良く使われるが、PWMの固有周波数によって、モータからピーという音が聞こえる場合がある。これをOSCCALをランダムに拡散させれば、固有の音が分散される事を期待する。



まずは、簡単にプログラムを作成。PWMLEDのプログラムを改造して使用。
普通のPWM制御の波形。速度を変更すると、ある周期でモータからピーっと音が出てくる。



ソフトPWMの部分に乱数でOSCCALを変更するようにした。OSCCALは下2ビットを使用していないので0~63を2ビットシフトして設定。



モータからの音は、静かとは言えないが、固有の周波数の音が耳に聞こえる事は無くなった。PIC12F629で簡単にスペクトラム拡散によるPWMノイズの軽減を期待したが、このデバイスでは難しそうだ。(EMI対策としては有効と思う)
ただ、こういう制御をすることで音の雑音が拡散されるのは理解できた。

ポットでお湯を沸かしている様な雑音と、四六時中ピーとなっているのとでは、有感雑音は歴然だろう。ファンコントローラには応用できそうだ。最適なデバイスや方法をもう少し実験してみたいと思っている。

OSCCALをランダムに設定する方法として、色々実験したので備忘録として書き留めると、

タイマー割り込みでOSCCALをランダムに書き換える
  →XC8コンパイラではRAND()関数が割り込みで展開できずビルドエラー
OSCCAL = (unsigned char)(rand()% 256);にしても、2ビットは無視されるので結果は一緒。
XC8でrand()を使うと、メモリーの使用量が一気に40%以上になる。
乱数発生は、もっと別の方法を考えたほうが良さそうだ。
12F683別のPICを使用してハードPWMで動かしたほうがいいかもしれない。このPICはOSCTUNEがあるが、32段階で±12%程。どれだけの効果があるか確かめてみたい。






Google
www Blog HP BBS


air_variableサイトをまとめて検索 
カスタム検索
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]