磁気エンコーダ用のArduinoによるソースコードは以下のサイトを参考にさせていただいております。
https://qiita.com/GANTZ/items/63a66161a5a7eeaf6a62
AS5600は12bitの分解能で、360°÷4096≒0.0879°の微小な角度の違いまで読み取ることができます。
4つのホール素子を円状に並べた磁気式エンコーダであり、径方向に着磁した円柱型の磁石を回転させることでその磁力のバランスをホール素子で検出・演算し角度を求めます。
よって、ソースコードで4096(360°)に達した時点で1回転としてカウントしていきたいです。調べてみたものの、解決ができていません。どうぞ宜しくお願い致します。
使用しているソースコード:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(250000);
}
void loop() {
Wire.beginTransmission(0x36);
Wire.write(0x0C);
Wire.endTransmission(false);
Wire.requestFrom(0x36, 2);
while (Wire.available()) {
byte angle_h = Wire.read();
byte angle_l = Wire.read();
unsigned int angle = (0x0F & angle_h) << 8 | angle_l;
Serial.print(angle);
//Serial.print(angle,HEX);
Serial.print(" ");
}
delay(1);
Wire.beginTransmission(0x36);
Wire.write(0x0B);
Wire.endTransmission(false);
Wire.requestFrom(0x36, 1);
while (Wire.available()) {
byte state = Wire.read();
Serial.println(state, BIN);
}
}
0 コメント