« 飛んだ! どこへ行ったぁ~ ここにあったぁ~ | トップページ | 液漏れは突然に トイレから息子の悲鳴…「流れへん!」 »

2022年9月11日 (日)

ロータリーエンコーダーのチャタリング波形

2022年8月24日:パルスジェネレータを作ってみた:箱に入れた
このスケッチ、
   ・ダウンロード - p_gen16c1.txt
では、ロータリーエンコーダの計数をINT0割り込みではなく
タイマー割り込みを使った周期的処理でチャタリングを
除去してA相の↓エッジを検出するようにしました。

そして、CRによるフィルタが不要になったので、エンコーダ接点に
入れたコンデンサを取り外してしまいました。

※タイマー処理によるチャタリング除去の考え方は
ここを参照。
  ・2020年9月15日:今度はチャタリング除去、その考え方
  ・2020年9月16日:ロータリーエンコーダーの2相パルスをタイマー割り込みで

コンデンサ無しだと、どんなチャタリングが出るのか、
オシロで観察しました。
デジタルオシロの無限残光モードが役立ちます。
こんなパルスが入ってきます。

Aa000

Aa001

0.5ms(2kHz)ごとにそのH/Lを記録して、HあるいはLが
4回以上連続してたらその信号は安定。
途中で変化があればチャタリングと判断します。
ですので、高速2相パルスは検出できません。
「クリック有り」ロータリーエンコーダ向けの
処理です。

ch3の波形が、A相信号のチャタリングを除去後、
A相↓エッジを検出して、計数処理をしているタイミングです。
その後に、新カウント値による液晶表示が始まっています。
周期や周波数データの液晶表示に10ms近くかかるので
loop()内でのA/B相処理は間に合いません。
割り込みでしか追いつかないのです。

けっこうなチャタリングが見えています。
全部のon/offでこれが発生するのではなく、たまにひどいのが出る
という感覚です。
そして、その場所(回転位置)は一定ではありません。
どこで出るかわからんなぁ~です。


|

« 飛んだ! どこへ行ったぁ~ ここにあったぁ~ | トップページ | 液漏れは突然に トイレから息子の悲鳴…「流れへん!」 »

Arduino」カテゴリの記事

電子部品」カテゴリの記事

割り込み処理」カテゴリの記事

コメント

コメントを書く



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




« 飛んだ! どこへ行ったぁ~ ここにあったぁ~ | トップページ | 液漏れは突然に トイレから息子の悲鳴…「流れへん!」 »