チャタリングに関する盲信 ― 2007年06月25日 01時40分51秒
チャタリングとはメカ的なスイッチを電気的な入力として処理に使用する場合に、過渡的にON/OFFが安定しない現象のことを言います。
CPUでその信号を捕らえようとするとある特定の瞬間の状態だけで判断すると安定する前の不安定な状態を入力として信用してしまい、結果的に適正な処理を行うことができません。
このため、ある一定期間その状態をサンプリングして安定した状態でのみ、その入力状態を信用するという処理を施します。 これを「チャタリング除去」と呼びます。
ところがこの安定しない状態が本当に不安定なのか正常な高速変化なのかはその入力源の「仕様」に依存します。
つまり、10ms間隔でパルスとして変化することが仕様であるにもかかわらずに、10ms間隔でサンプリングして5回同じ状態が続かないと安定したこととはみなさない、などということは間違ったチャタリング除去処理になります。
ところが、メーカの開発ではそれをルール化して「ノウハウ」とのたまって、必ずチャタリング除去の処理を施してからポートの入力処理を行わなければならない、などという迷信とも言えることを義務付けているところがあります。 サンプリング周波数や入力機器の特性を無視して、です。
CPUでの処理にはある限界があります。これは物理的な制限の場合もありますし、組込み特有の「コピーして派生」していることによる制限の場合もあります。CPUが10ms間隔でしかポートのサンプリングが出来ないのであれば5回同じ状態云々の処理は削除すべきです。これでもサンプリング間隔は足りない。サンプリングすべき入力特性の最低でも2倍の周波数は必要なわけですから。
ところが、このような「お仕着せの」チャタリング除去の処理を行わない、ということはメーカの開発では許されないことが多い。これはなぜかというと、お題目だけが一人歩きをしてしまって、本質を理解できていないからです。
実は、サンプリング除去というのはチャタリングの周波数よりも長めの間隔でポートの状態を見る、ということでもある程度その機能は実現されています。この場合のチャタリング周波数とは本来あるべき変化の周波数とは別のことです。不正な状態を示す過渡的な周波数です。
チャタリング除去の手法はそれぞれ状況に応じてチューニングすべきなのに、一つの方式だけを信じてそれ以外を認めない。このように間違ったメーカの開発は今でもいたるところで行われているようです。
コメント
トラックバック
このエントリのトラックバックURL: http://kumikomi.asablo.jp/blog/2007/06/25/1602542/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。