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