このチュートリアルでは、ロータリーエンコーダーをATmega8マイクロコントローラーとインターフェースさせます。ATmega8は、組み込みアプリケーション向けに設計されたatmelのマイクロコントローラーシリーズです。 ロータリーエンコーダ は、モーターまたは軸の移動位置と角度移動を知るために使用されます。これは通常3端子デバイスで、電源ピンとグランドピンの数は5つです。ロータリーエンコーダモジュールを以下に示します。
ロータリーエンコーダのピンは次のとおりです。
- 接地。
- + 5Vにプラス接続
- 出力信号Aピン
- 出力信号Bピン
- クロックピンまたはコモンピン。
エンコーダは、システムが理解できるようにシャフト位置の変化を表すパルスを提供します。ロータリエンコーダの電源が入り、シャフトが移動したとします。
上記の表に示されているように、シャフトが時計回りに移動していると考えてください。これにより、A端子に立ち下がりエッジがあり、次にB端子に立ち下がりエッジがあります。
シャフトが反時計回りに移動していると考えてください。これにより、B端子に立ち下がりエッジがあり、次にA端子に立ち下がりエッジがあります。
このエッジは、360/20 = 18度で1回発生します(これは20位置のエンコーダーの場合で、タイプごとに異なり、カウントが高いほど精度が高くなります)。
上記の両方の条件で、回転の方向と程度を取得できます。したがって、シャフトの位置を取得するために必要なパラメータを取得します。
コンポーネント
ハードウェア: ATMEGA8、接続ピン、AVR-ISPプログラマー、220Ω抵抗、LED(8個)、1KΩ抵抗、220Ω抵抗(2個)、100nFコンデンサ(2個)、ブレッドボード。
ソフトウェア: Atmel studio 6.1、progispまたはflashmagic。
回路図と動作説明
ここにあるコンデンサは、エンコーダの接点バウンス効果を中和するためのものです。これらのコンデンサがないと、位置の読み取りに深刻な問題が発生します。
シャフトを動かすと、2つの出力ピン出力の間に時間差が生じます。ATMEGA8は、反時計回りの時計回りの回転について、この時間差を認識します。
回転が時計回りの場合、バイナリカウントは1ずつ増加し、このカウントは図に示すようにLEDポートに表示されます。
回転が反時計回りの場合、バイナリカウントは1ずつ減らされ、バイナリカウントはLEDバイトで表示されます。
ここでは、atmega8のヒューズビットを設定していないことを覚えておいてください。したがって、コントローラーは1Mhzのデフォルトの内部クリスタルで動作します。
ATmega8マイクロコントローラーとのインターフェースロータリーエンコーダーの動作は、以下のコードで説明されています。