みなさん、こんにちわ!
6月に入って、少し暑くなってきて、汗ばむ季節に入りましたが、汗を流して元気よく電子工作をやりましょう!
この前ロータリーエンコーダの記事を書きました。
目次
光電式回転エンコーダー 100 パルス AB 相 5 24 v 結合 NPN 出力 (100 pulse)
その後、しばらく遊んでいましたが、正直なところ、精度がイマイチな気がします。回す時もカクカクする感触があります。
これはこれで、使う場面もあるでしょうし、廉価で入手しやすいから、特に問題はありませんが
もし、より精度が求められるような応用でしたら、他に良いロータリーエンコーダがないかなと思って
アマゾンで調べたら(はい、すみません、アマゾンに依存し過ぎです、今年はなんとかします!笑)
光電ロータリーエンコーダというのが知りました!
早速購入!アマゾンありがとう!
もう調達のインフラですね。笑
型番:LPD3806-100BW-G5-24C
光電ロータリーエンコーダーをArduinoでサクッと動作検証!
今日は、誰でもすぐに検証できるやり方をお伝えします!
まずは、実物はこちらです!
配線
配線はとても簡単です。
今回は、直接にArduinoと接続します!
緑 AはArduino Digital3番に接続します。
白 BはArduino Digital2番に接続します。
黒 0Vは ArduinoのGNDに接続します。
赤 5Vは Arduinoの5Vに接続します。
これでOKです!
プログラム
プログラムはこちらです。
/* 光電ロータリーエンコーダを動かしてみる! */ volatile unsigned int temp, counter = 0; void setup() { Serial.begin (9600); pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); //interuptをセットアップする // attachInterrupt(0, ai0, RISING); // attachInterrupt(1, ai1, RISING); } void loop() { // カウンターの値を出力する if ( counter != temp ) { Serial.println (counter); temp = counter; } } void ai0() { if (digitalRead(3) == LOW) { counter++; } else { counter--; } } void ai1() { if (digitalRead(2) == LOW) { counter--; } else { counter++; } }
解説はまた、これから、内容をアップデートするときには加筆します。
動かす
コンパイルして、Arduinoに書き込むんだ後、シリアルモニターを開いてください。
ロータリーエンコーダを回してみると、シリアルモニターで数値の変化を確認できるはずです。
私は、最初に、前のプロジェクトの設定が残して、全然表示がなくて、あれ?と思いましたが
その後、通信スピードを9600に直したら、できました!
エンコーダを左右に回しながらシリアルプロッタで見るのも楽しいです。
まとめ
どうでしょうか?思ったより、簡単でしょう!笑
金属の本体、結構好きです!金属フェッチです!笑
次は、ロータリーエンコーダでサーボやステップモーターを制御する回路を作ってみたいですね!
では、また!
[amazonjs asin=”B0774P59LD” locale=”JP” title=”光電式回転エンコーダー 100 パルス AB 相 5 24 v 結合 NPN 出力 (100 pulse)”]
[amazonjs asin=”B0044X2E5S” locale=”JP” title=”【永久保証付き】Arduino Uno”]