Magnetsensor AS5600

Magnetsensor AS5600

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).

Verwendete Bauteile

Anschlüsse

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

Auslesen des Winkels

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:

Ausgabe auf dem seriellen Plotter
Abb.: Ausgabe auf dem seriellen Plotter der Arduino-IDE
zurück