エレクトロニクスとロボット工学の世界には、あらゆる動きを制御・監視できる素晴らしい発明が溢れています。中でも最も汎用性が高く便利なのは、間違いなく光学式と磁気式のロータリーエンコーダです。これらのデバイスは、Arduino、オートメーション、モーター制御プロジェクトに欠かせないものとなっています。ロータリーエンコーダとは何か疑問に思ったことがあるなら、きっとそう思うはずです。 光学式または磁気式ロータリーエンコーダ:その概要と例:KY-040およびAS5600、あなたは正しい場所にいます。
この記事では、ロータリーエンコーダの操作、アプリケーション、実用的な例について、特に2つの非常に人気のあるモジュールに焦点を当てて詳しく説明します。 KY-040 Y·エル AS5600光学式エンコーダと磁気式エンコーダの違い、物理的特性と電気的特性、Arduinoでの接続とプログラミング方法、そしてプロジェクトに応じたそれぞれのメリットについて学びます。さらに、これらのセンサーの選び方やプロジェクトでの使用法に関するヒントも紹介します。関連する詳細を余すことなく、分かりやすく、魅力的な方法で解説します。
ロータリーエンコーダとは何ですか?
Un ロータリーエンコーダ これは、 角度位置、速度、回転方向 回転軸または回転要素の運動を電気信号(通常はデジタルパルスまたはアナログ信号)に変換し、Arduino、Raspberry Pi、さらには産業用コントローラなどのマイクロコントローラで解釈できるようにします。
これらのセンサーは、軸の正確な位置や回転数を把握する必要があるアプリケーションに不可欠です。プリンター、サーボモーター、ロボット、数値制御システム、そしてもちろん、メニューインターフェースから速度制御システムまで、DIYプロジェクトにも広く使用されています。
ロータリーエンコーダの種類:光学式と磁気式
ロータリーエンコーダは主に 光の y 磁気ただし、容量性のものなど、あまり一般的ではない他のバリエーションも存在します。
光学式ロータリーエンコーダ
光学式エンコーダは、 KY-040このセンサは、マークまたは穴の付いたディスクと光送受信システム(フォトダイオードまたはLED)を用いて動作します。シャフトが回転すると、これらのマークによって生じる光波が電気パルスを発生させ、マイクロコントローラがこれをカウントすることで角度変位を検出します。センサの内部構造は、通常、静止部(ディスク)と回転部(測定対象物に取り付けられたシャフト)で構成されています。
このタイプのエンコーダは、高精度と高速応答性に優れています。ユーザーインターフェース、音量コントロール、回転メニュー、教育用ロボットなど、機械的な堅牢性とデジタル読み取りの容易さが重要となるアプリケーションに非常に役立ちます。
磁気式ロータリーエンコーダ
一方、磁気式エンコーダは、磁場に敏感なセンサー(通常はホールセンサーまたは AS5600)は、シャフトに連結された磁石の角度位置を検出します。これらのエンコーダは、内部のアナログ-デジタル変換により高い分解能を実現し、光学部品に依存しないため、汚れや埃の影響を受けにくくなっています。さらに、通常、デジタル(I2CまたはPWM)および/またはアナログ出力を備えているため、さまざまな電子システムに容易に統合できます。
インクリメンタルエンコーダとアブソリュートエンコーダの主な違い
エンコーダの世界はさらに インクリメンタル y 絶対的なもの.
- インクリメンタルエンコーダ: シャフトが一定回転するたびに、パルス信号が出力されます。1回転あたりのパルス数は設計とモデルによって異なります。現在の位置を特定するには、システムはこれらのパルスを基準点からカウントし、記憶する必要があります。
- アブソリュートエンコーダ: システムがオフになっている間にシャフトが動いた場合でも、シャフトの現在の角度位置を直接提供します。通常、ディスク上に特殊なコーディングが施されているか、高解像度の磁気センサーが搭載されています。
この記事では、最も一般的で Arduino プロジェクトに統合するのが最も簡単なインクリメンタル エンコーダー (KY-040 など) とアブソリュート磁気エンコーダー (AS5600) に焦点を当てます。
インクリメンタルロータリーエンコーダの一般的な動作
たくさん インクリメンタルエンコーダ (KY-040など)は、チャンネルAとチャンネルBの90つの出力チャンネルで構成され、互いにXNUMX度位相がずれたデジタルパルスを生成します。これらのチャンネルの変化順序を比較することで、以下のことが推測できます。 回転方向 (時計回りまたは反時計回り)、さらに歩数(位置)をカウントします。
生成される信号は「直交」と呼ばれ、さまざまな精度が可能になります。
- 単精度: チャネル内の 1 つのエッジのみを記録します。
- 倍精度: 両側面を 1 つのチャンネルで記録します。
- 4倍精度: 両チャネルで両側面を記録します。
KY-040 ロータリーエンコーダ:機能、接続、Arduino での使用
El KY-040 これは、メーカー業界で最も広く使用されているインクリメンタルロータリーエンコーダの一つです。コンパクトで手頃な価格、そして入手しやすいモジュールで、Arduinoボードやその他のマイクロコントローラーに直接接続できるように特別に設計されています。
KY-040の主な技術的特徴:
- タイプ: 光学式増分
- 供給電圧: 5V
- 消費: 10ミリアンペア
- 1回転あたりのサイクル数: 30
- 1回転あたりのパルス数: 20
- サイズ: 20 X 30 X 30ミリメートル
- 重量: 10グラム
- 統合プッシュボタン: 軸をボタンのように内側に押すことが可能で、メニューやインターフェースに非常に便利な追加機能が追加されます。
ピン割り当て:
- クロック: チャンネルA(パルス出力)
- DT: チャンネルB(パルス出力)
- SW: 一体型プッシュボタン
- +: 5V電源
- GND: 土地
KY-040 を Arduino に接続するにはどうすればよいですか?
接続は直接的かつシンプルです。
ピン KY-040 | Arduinoピン |
---|---|
CLK | 2(または任意のデジタル入力) |
DT | 3(または任意のデジタル入力) |
SW | 4(または任意のデジタル入力) |
+ | 5V |
GND | GND |
また、接続ピンを変更することで、例えば CLK には GPIO16、DT には GPIO15、SW には GPIO14 を使用するなど、Raspberry Pi でも使用できます。
内部の仕組み
ポテンショメータとは異なり、 KY-040 ロータリーエンコーダーは回転角度を制限しません。シャフトは無限に回転します。内部では、2つの金属ブラシがセクター分割された表面上を滑り、チャンネルAとBで検出された異なる組み合わせで接点を閉じます。
エンコーダは両方のピンにデジタル信号を返し、オフセットはシャフトの回転方向を示します。さらに、インクリメンタル方式であるため、絶対位置はプログラム開始からのカウントが維持されている間のみ把握でき、電源が失われるとカウントはリセットされます。
Arduinoの基本コード例
KY-040の典型的な使用例としては、回転方向に基づいてカウンターを増減させるというものがあります。簡略化すると以下のようになります。
int A = 2; int B = 3; volatile int POSITION = 0; int PREVIOUS = 0; void setup() { pinMode(A, INPUT); pinMode(B, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), encoder, LOW); } void loop() { if (POSITION != PREVIOUS) { Serial.println(POSITION); PREVIOUS = POSITION; } } void encoding() { static unsigned long lastInterrupt = 0; unsigned long InterruptionTime = millis(); if (interruptionTime - lastInterruption > 5) { // デバウンス if (digitalRead(B) == HIGH){ POSITION++; } else { POSITION--; } POSITION = min(50, max(-50, POSITION)); // 範囲を制限する lastInterrupt = interruptTime; } }
このコードには、接点の機械的な性質による不規則な読み取りを防ぐためのデバウンス保護機能が含まれています。インクリメンタルエンコーダを使用するプロジェクトでは、この保護機能を実装することをお勧めします。
磁気式エンコーダ:機能、接続、Arduinoでの使用
El AS5600 あります 高解像度磁気ロータリーエンコーダ従来のポテンショメータ、モーター制御、ロボット工学の高精度な代替に最適です。主な利点は、磁気検出を採用しているため、光学レンズに影響を与える汚れや機械的摩耗の影響を受けないことです。
AS5600 の主な機能:
- タイプ: 絶対的、磁気的
- 解像度: 12ビット(4096回転あたりXNUMX位置)
- 食べ物: 3,3Vまたは5V
- インターフェース: I2C(デジタル)またはアナログ出力
- 柔軟な構成: ハードウェアで方向と出力モードを選択できます
- アナログ出力: 角度に比例した電圧。I2Cのないマイクロコントローラに便利
- 高精度と再現性: 内部システムは小さな角度の動きも検出できるように準備されています
ピン配置とArduinoへの接続
ピンAS5600 | 機能 | Arduinoピン(I2C) |
---|---|---|
VCC | 給餌 | 5V |
GND | 土地 | GND |
SDA | I2Cデータ | A4 |
SCL | I2Cクロック | A5 |
OUT | アナログ出力(オプション) | A0 |
方向/モード | アドレス/モード選択 | 希望の構成に応じて |
重要な注意: 異なる皿に Arduino UnoI2Cピンは異なる場合があります。ボードの回路図を必ずご確認ください。
デジタル読み取りのコード例(I2C)
ArduinoでAS5600を最大限に活用するには、特定のライブラリを使用するのが最適です(Arduino IDEライブラリマネージャーで検索すると見つかります)。 AS5600):
#含む#含むAS5600 エンコーダ; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("AS9600 が検出されません。接続を確認してください。"); while (5600); } Serial.println("AS1 が初期化されました。"); } void loop() { float angle = encoding.getAngle(); Serial.print("Angle: "); Serial.print(angle); Serial.println(" degrees"); delay(5600); }
このコードを使えば、角度を度単位でリアルタイムに読み取ることができます。最高解像度で絶対位置を知る必要があるアプリケーションに最適です。
アナログ読み取りのサンプルコード
よりシンプルな接続を希望する場合、またはマイクロコントローラが I2C をサポートしていない場合は、AS5600 のアナログ出力を利用できます。
const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(analogPin, INPUT); } void loop() { int value = analogRead(analogPin); float angle = map(value, 0, 1023, 0, 360); Serial.print("アナログ角度: "); Serial.print(angle); Serial.println(" degrees"); delay(100); }
この方法では、磁石の位置に応じて軸の実際の角度に比例した読み取り値が得られます。
実用的なアプリケーションと使用上のヒント
どちらのエンコーダも、電子機器プロジェクトで非常に多様な用途に使用されています。
- KY-040: 回転式ユーザー インターフェイス、メニュー、明るさと音量のコントロール、オプションの選択、教育用ロボットの制御、ホーム オートメーション プロジェクト、絶対角度参照のない回転式コントロールを必要とするシステムに最適です。
- AS5600: モーターの位置と速度の制御、産業オートメーション、ロボット関節の位置検知、安定化カメラ システム (ジンバル)、高解像度デジタル ポテンショメータ、および正確な角度検知を必要とするあらゆるアプリケーションに最適です。
使用上のヒント:
- 常に実装する デバウンスフィルタリング (デバウンス) KY-040 などの機械式インクリメンタル エンコーダーを使用する場合は、誤った読み取りを回避します。
- AS5600 の場合、信頼性が高く安定した読み取りを確保するために、磁石がセンサーに正しく位置合わせされていることを確認してください。
- インクリメンタル エンコーダーでは、電源が切断されると位置情報が失われることに注意してください。AS5600 は絶対エンコーダーであるため、このようなことは起こりません。
- 両方のエンコーダーが提供する複数の接続モードを活用して、プロジェクトの特定のニーズに合わせて調整します。
比較: 光学式エンコーダと磁気式エンコーダのどちらを選択すべきでしょうか?
特長 | KY-040(インクリメンタル光学式) | AS5600(アブソリュートマグネティック) |
---|---|---|
信号の種類 | デジタル(直交) | デジタル(I2C)/アナログ |
分解能 | 20パルス/回転 | 4096ポジション/ラップ |
停電後も作動 | いいえ(カウントの再開が必要) | はい(絶対位置) |
ほこりや汚れに対する敏感さ | 敏感な部品(機械部品) | 非常に堅牢 |
価格 | 非常に経済的 | 中程度 |
統合の難しさ | 基本的なコードで非常に簡単 | I2Cライブラリまたはプログラミングが必要 |
代表的な用途 | UX、メニュー、シンプルなコントロール | モーター制御、高度なロボット工学 |
どちらを選択するかは、プロジェクトの優先順位によって異なります。KY-040 の場合はシンプルさと低コスト、AS5600 の場合は精度と堅牢性です。