コンテンツにスキップ
地震や土砂災害、海上輸送の影響で一部地域に配送遅延が出ている可能性があります。心当たりのある地域にお住まいの方は、こちらから詳細をご確認ください。
2024年3月30日(土)午前10時から2時間程度、メンテナンスによるシステム停止を予定しています。ご協力のほど何卒よろしくお願いします。
大雪や地震、土砂災害、海上輸送の影響で一部地域に配送遅延が出ている可能性があります。心当たりのある地域にお住まいの方は、こちらから詳細をご確認ください。
2024年3月30日(土)午前10時から2時間程度、メンテナンスによるシステム停止を予定しています。ご協力のほど何卒よろしくお願いします。
SKU 3494

12bit (4096P/R) 磁気式エンコーダAS5601 Breakout Board

送料区分: 200

商品コード: Y2KB-003

発売日: 2017-09-28

在庫数: 64

短いURL: ssci.to/3494

¥1,600
¥1,600 - ¥1,600
Current price ¥1,600

12 bit 分解能の磁気式アブソリュートエンコーダ AS5601(ams AG製)を2.54 mmピッチに変換したモジュールです。

5 V、3.3 V、GNDの電源ピンとI2C、A/B相インクリメンタル出力のピンが出ています。電源電圧は5 Vもしくは3.3 Vです。ネオジム磁石を同梱。

AS5600との違いはAS5600の出力方式がアナログ/PWM出力であるのに対し、AS5601はA/B相のインクリメンタル出力である点です。

特徴

  • 4096 P/R の高分解能(インクリメンタル出力は最大2048 ppr)
  • 磁気式のため非接触で角度計測が可能であり、信頼性と耐久性に優れている
  • インターフェイス:I2C、インクリメンタル出力、PUSHピン
  • I2C:設定レジスタにアクセスでき、角度の読み取りや動作設定が可能
  • インクリメンタル出力:8 ppr~2048 pprの分解能設定が可能なA/B相の直交出力
  • サンプリング時間:150 μs
  • AS5601とネオジム磁石の中心が1 mm程度ずれても値の読み取りが可能

仕様

  • 基板サイズ:横20 mm × 縦13.5 mm
  • 基板マウント用穴:15 mmピッチ、M3 × 2穴
  • 電源電圧に5 Vを供給する場合は3.3 Vピンをオープンに、3.3 Vを供給する場合は5 Vピンにも3.3 Vを供給してください
  • PUSHピンは接続されていないためアクセスできません

内容物

  • AS5601 Breakout Board 本体
  • エンコーダ用ネオジム磁石

取り付け方法

  1. 同梱のネオジム磁石を回転体の軸中心に取り付けます
  2. ICの中心とネオジム磁石の中心が合うよう基板を固定部に取り付けます

file

Arduinoによるプログラム例

  • I2Cによる角度の取得

配線図

ソースファイル

ミニマムコード

  #include <stdint.h>
  #include <Wire.h>
  #define AS5600_AS5601_DEV_ADDRESS      0x36
  #define AS5600_AS5601_REG_RAW_ANGLE    0x0C

  void setup() {
    // I2C init
    Wire.begin();
    Wire.setClock(400000);

    // Read RAW_ANGLE value from encoder
    Wire.beginTransmission(AS5600_AS5601_DEV_ADDRESS);
    Wire.write(AS5600_AS5601_REG_RAW_ANGLE);
    Wire.endTransmission(false);
    Wire.requestFrom(AS5600_AS5601_DEV_ADDRESS, 2);
    uint16_t RawAngle = 0;
    RawAngle  = ((uint16_t)Wire.read() << 8) & 0x0F00;
    RawAngle |= (uint16_t)Wire.read();
    // Raw angle value (0 ~ 4095) is stored in RawAngle
  }

  void loop() {
  }
  • インクリメンタル出力ピンを用いた角度の取得

配線図

ソースファイル

ミニマムコード

  #include <stdint.h>
  #include <Wire.h>
  #define AS5600_AS5601_DEV_ADDRESS       0x36
  #define AS5601_REG_ABN                  0x09

  volatile int32_t EncoderCount;

  void Encoder_GPIO_init(void) {
    DDRD  &= ~((1 << PD2) | (1 << PD3));  // Set PD2 and PD3 as input
    EICRA = 0b00000101; // Trigger event of INT0 and INT1 : Any Logic Change
    EIMSK = 0b00000011; // Enable interrupt INT0 and INT1
    sei();              //Enable Global Interrupt
  }

  // Encoder "A" pin logic change interrupt callback function
  ISR(INT0_vect) {
    updateEncoderCount();
  }

  // Encoder "B" pin logic change interrupt callback function
  ISR(INT1_vect) {
    updateEncoderCount();
  }

  void updateEncoderCount(void) {
    const static int8_t EncoderIndexTable[] =
      {0, -1, 1, 0,  1, 0, 0, -1,  -1, 0, 0, 1,  0, 1, -1, 0};
    static uint8_t EncoderPinState_Now, EncoderPinState_Prev = 0;

    EncoderPinState_Now = (PIND >> 2) & 0x03; // Bit1 : PD3 (Encoder B), Bit0 : PD2 (Encoder A)
    EncoderCount += EncoderIndexTable[EncoderPinState_Prev << 2 | EncoderPinState_Now];
    EncoderPinState_Prev = EncoderPinState_Now;
  }

  void Encoder_I2C_init(void) {
    // Set AS5601 resolution 2048ppr
    Wire.beginTransmission(AS5600_AS5601_DEV_ADDRESS);
    Wire.write(AS5601_REG_ABN);
    Wire.write(0b00001000);   // ABN(3:0)
    Wire.endTransmission();
    delay(1);
  }

  void setup() {
    // I2C init
    Wire.begin();
    Wire.setClock(400000);

    // Peripheral init
    Encoder_I2C_init();
    Encoder_GPIO_init();
  }

  void loop() {
    // Angle value (0 ~ 2047) is stored in EncoderCount
  }

資料

file

  • 寸法図

file

_Y2Kbさんからの受託販売商品です。_輸送上の問題は当社が責任を負います。技術的なご質問には、当社ではお答えできません。上記技術資料のページなどをご参照の上、ご自身で解決していただく必要があります。

商品コード: Y2KB-003