マイコンカー製作で重要な要素の一つが、走行距離や回転数を正確に取得するためのロータリーエンコーダの扱いである。特にArduino(RMC-RA4M1)環境でTypeSエンコーダを使用する場合、配線方法や割り込み処理、カウント方法に戸惑うケースが多い。本記事では基本構造から実装例まで整理する。
ロータリーエンコーダTypeSの基本構造
ロータリーエンコーダは回転量をパルス信号として出力するセンサーである。
例えばA相・B相の2信号を利用して回転方向と回転量を判定する構造になっている。
Arduino(RMC-RA4M1)での接続概要
基本的にはエンコーダのA相・B相をArduinoのデジタル入力ピンに接続する構成となる。
例えばA相を割り込み対応ピン、B相を通常入力ピンに接続することで正確なカウントが可能になる。
配線の基本構成(イメージ)
配線はシンプルで、電源・GND・A相・B相の4本が基本となる。
例えば以下のような構成になる:
・VCC → 5Vまたは3.3V
・GND → GND
・A相 → 割り込みピン(例:D2)
・B相 → デジタル入力(例:D3)
エンコーダ読み取りの基本プログラム構造
Arduinoでは割り込み処理を使うことで高速なパルス検出が可能になる。
例えばA相の立ち上がりで割り込みを発生させ、B相の状態を読むことで回転方向を判定する。
サンプルコード(基本形)
以下は基本的なカウント処理の例である。
volatile long encoderCount = 0;
void setup(){ pinMode(2, INPUT); pinMode(3, INPUT); attachInterrupt(digitalPinToInterrupt(2), countEncoder, RISING); }
void loop(){}
void countEncoder(){ if(digitalRead(3)==HIGH){ encoderCount++; } else { encoderCount–; } }
カウント精度を上げるポイント
ノイズ対策や割り込み処理の安定化が精度に大きく影響する。
例えばプルアップ抵抗の利用や、ソフトウェアデバウンス処理を追加することで誤検出を減らせる。
マイコンカーでの実践的な使い方
ロータリーエンコーダは車輪の回転数から走行距離を計算するために使用される。
例えば一定のカウント数を距離換算し、直進制御や旋回制御にフィードバックとして利用する。
まとめ
ロータリーエンコーダTypeSはA相・B相のパルスを利用して回転を検出する仕組みであり、Arduinoでは割り込み処理を使うことで正確な計測が可能になる。
配線と基本プログラムを理解することで、マイコンカーの走行制御精度を大きく向上させることができる。


コメント