« ドラム・インターフェイス~その3 | トップページ | friends »

2010年7月16日 (金)

ドラム・インターフェイス~その3.5

MEDIO write:

 昨日は疲れてたので寝てしまい。

 プロトタイプでの実験で見つかった不具合点を何とかする為、ちょっと考え事をします。

 

 人間の意思を回路に伝える部品の中で、機械的な構造を持つ...スイッチやロータリーエンコーダ等は、それらが世に出た時から持っている「根本的問題」があります。

 デジタル信号として処理する時、それらの(機械的な)接点が定常に落ち着かない状態...チャタリングは、処理系が人の感覚を超えた速度になった時、大きな問題となります。人が1回だけOnにしたはずなのに、入力された回路(やマイコンから)から見ると何度もOn-Offを繰り返している様に見えるのですから、例えば...カウンタであれば答えが5倍とか10倍になる事もある訳です。

 

 もちろんそれを消す為の努力は、スイッチメーカ(チャタリング自体が発生し辛い接点・構造の開発)やスイッチを使用するユーザ(チャタリングを『見えなく』する為の回路やソフトウェア・アルゴリズムの開発)が古今東西行っています。

 しかしながら本質的な解決には至っていません。チャタリングは「見えなく」なっても消えてはいないのです。

 

 ハード的なアプローチとして良く見るものは、RCフィルタ回路とシュミットトリガーの組み合わせです。

 構造が単純で、かつ動作も安定していますが、入力段に積分回路が入る関係上応答が遅れるという欠点もあります。

 

 と前置きが長いですが、外付け回路が面倒(スペース的にも大変)なので、今回はソフトで対応してみます。 

 

 ソフト的なアプローチとして良く見られるものは、

1.連続値を判定するもの(ループにて状態が定常になったことを確認する)

2.サンプリングにて判定するもの(一定時間...チャタリングが発生する時間より長い間隔で状態を監視する)

などがあります。

参考:ChaNさんの「ELM」 内、 「接点入力と処理のコツ~チャタリング対策」

 

 前者は高速な入力を必要とする場合(入力に対して応答の遅れがほぼ一定で、ある程度速い変化にも対応する)に、後者は組み込み系でよく使われる方法(確実にするためにサンプリング間隔を長くすると応答も遅れ、取りこぼしも発生する)です。

 それぞれに得意・不得意があります。

 

 先人方と同じ様な実装をしてもつまらないので、今回はちょっとひねってみます。

 ドラム・インターフェースとして、ある程度の変化速度に追従、かつ一定の遅れで応答、なおかつ確実...(--;

 

 という事で(? 先に挙げた「ハード的なアプローチ」の「RCフィルタ回路とシュミットトリガー」をソフトで実装してみようかと思います。 

 

 アルゴリズムは、電子回路の動作をそのまま使います。

 1.入力に対して時定数を持たせた応答 :RCフィルタ部分

 2.応答値に対し、L→H、H→Lで閾値を別に判断 :シュミットトリガー

 

 実際の処理としては、タイマ割り込みの中で、

 1.応答値=(入力値×1/4)+(前回の応答値×3/4)

 2.アルゴリズムそのまま。2つの閾値で判断文処理

 

 応答値の範囲を8bit...0~256とし、閾値をそれぞれ15と240にした場合、入力変化後11回のサンプリングで応答が変化します。4msでの割り込みであれば44msで定常になる予定...。

| |

« ドラム・インターフェイス~その3 | トップページ | friends »

パソコン・インターネット」カテゴリの記事

趣味」カテゴリの記事

電子回路」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: ドラム・インターフェイス~その3.5:

« ドラム・インターフェイス~その3 | トップページ | friends »