Das Modul besitzt als Herzstück den AS5600, einen Drehpositionssensor für Magneten mit 12-Bit Auflösung und kann zumindest theoretisch bis zu 4096 Positionen pro Drehung ermitteln. Der Hauptvorteil dieses Moduls ist die berührungslose Drehwinkel-Messung einer magnetischen Quelle und keine vorgegebene Drehwinkelbegrenzung. Optional kann ein maximaler Winkel von 18° bis 360° programmiert werden (wurde von mir nicht ausprobiert).
Pin | Beschreibung |
---|---|
VCC | Spannungsversorgung 3,3V |
OUT | PWM / Analoger Ausgang |
GND | Masse/0V |
DIR | Drehrichtung (LOW = Wert steigt im Uhrzeigersinn; HIGH = Wert sinkt im Uhrzeigersinn) |
SCL | I²C Serial clock |
SDA | I²C Serial data |
GPO | Modus: (Interner Pullup-Widerstand; LOW = Programmiermodus B) |
Hinweis: Bei diesem Modul ist bereits ein Entkopplungskondensator zwichen VCC und GND, sowie empfohlene externe Pull-Up-Widerstände für SDA und SCL vorhanden.
AS5600 | Arduino Uno |
---|---|
GND | GND |
VCC | 3V3 |
SCL | A5 |
SDA | A4 |
DIR | 4 |
Für das folgende Experiment wird die Library
https://github.com/RobTillaart/AS5600
benutzt, die die Handhabung mit dem AS5600 vereinfacht. Ich habe dazu einen der Beispiel-Codes der
Library etwas angepasst und simplifiziert:
Evtl. muss die I²C-Addresse angepasst werden; diese kann mit dem I²C Scanner
ermittelt werden.
#define I2C_ADDRESS 0x36
#define DIR_PIN 4
#include "AS5600.h"
AS5600L as5600(I2C_ADDRESS);
void setup()
{
Serial.begin(9600);
Wire.begin();
as5600.begin(DIR_PIN); // default, just be explicit.
as5600.setDirection(AS5600_CLOCK_WISE);
while(!as5600.isConnected()) {
delay(100);
}
}
void loop()
{
Serial.println(as5600.readAngle());
delay(100);
}
Als Resultat werden alle 100ms der Winkel eine anliegenden magnetischen Quelle ausgelesen und auf die serielle Konsole geschrieben und könne so im seriellen Plotter visualisiert werden:
zurück