ロータリーエンコーダーの2相パルス、クリック有りの場合は
2020年9月12日:ロータリーエンコーダーの2相パルスをピン変化割り込みで取り込む
と
2020年9月16日:ロータリーエンコーダーの2相パルスをタイマー割り込みで
は、クリック無しでグルグル回しのロータリーエンコーダーを
想定しています。
ですんで、A相とB相の↑↓各エッジ、4つを使ってカウントし、
いわゆる4逓倍の処理を考えました。
1回転24パルスのロータリーエンコーダーだと1回転96パルスになります。
この、小型エンコーダー(コパルRE12D-300) だと、
1回転300パルスが1200パルスに。
ちょっと得した気分。
で、「クリック有りのロータリーエンコーダー」だったらどうした
ものかというお話しをちょっと。
観測波形を見ますと、静止時はA相・B相ともHレベルを保持。
左右どちらかの1クリックで2相パルスが出現という仕掛けに
なっています。
1クリックでA相とB相両方にLパルスが生じます。
その「後先」で±1が決まります。
ですので、判断はどこか1つのエッジだけを使えば良いわけです。
例えばこんな具合。
下側波形の立ち下がりを使うことにして、このパルスを検出した時、
反対相のH/LによってCWかCCWを決めます。
ただし、クリックのメカ的な機構によりけっこう早い応答が必要。
パルスの抜けを防ぐにはエッジ検出は割り込みでの処理が必須でしょう。
この場合、割り込みが必要なのは片側の相だけ。
反対相はH/Lを入力するだけになりますんで、割り込みは不要。
また、エッジを検出しないほうの相が変化しても、カウント処理には
関係ありません。
※4逓倍処理なら、片相が変化するだけで±1します。
しかし、エッジ検出が1つの場合だと、相が進まずに
その片相だけがH/Lを繰り返すとミスカウントしてし
まいます。
クリック有りのロータリーエンコーダーはメカ的に
信号の相が進むようになっていますので、片相だけ
の変化は心配しなくてかまいません。
※クリック無しのだと簡単にはいかない
ArduinoのINT0とINT1の割り込み駆動は両エッジだけでなく、
↑エッジ、↓エッジが設定できますので、↑↓どのエッジで
駆動されたのかの判断は不要です。
クリック有りタイプのロータリーエンコーダーだと2つ接続
できるということになります。
| 固定リンク
「Arduino」カテゴリの記事
- Arduino UNO R3で±19.9V表示電圧計(2023.10.14)
- 「御詠歌プレーヤー」の製作 (MP3-TF-16Pモジュールの使用例)(2023.08.10)
- Arduino UNO R3のソケット・・思えば違和感がぁ(2023.07.07)
- 初めて買ったArduino UNO・・・今は(2023.05.25)
- 液晶表示コントローラ HD44780で迎撃(2023.05.16)
コメント