Adapterboard für AS5046 Winkelsensor und Ansteuerungsbeispiele
Ein Adapterboard mit Schaltplan und Layout zum Download für den Winkelsensor AS5046 von austriamicrosystems. Dazu noch ein kleines Ansteuerungsbeispiel.
Allgemeines
Hinweis: Der Autor übernimmt keinerlei Haftung für Schäden jeglicher Art, die durch die
Durchführung der hier beschriebenen Aktionen entstehen könnten.
Der AS5046
austriamicrosystems ist ein kleiner Sensor mit Hilfe dessen man leicht absolute
Winkelmessungen durchführen kann. Er verfügt ein I2C-Interface, was
seinen Einsatz sehr einfach macht.
Zum Experimentieren ist das SSOP16 Gehäuse leider nicht besonders gut
geeignet, weswegen ich hier Schaltplan und Layout der von mir designten
Adapter-Platine zum Download anbiete.
Schaltplan und Platinenlayout
Hinweis: Die Platine ist für 3,3 Volt Betriebsspannung entworfen,
bei
Betrieb an 5 Volt muss die im Datenblatt angegebene Beschaltung
verwendet werden! Bitte auch sicherstellen, dass der I2C-Bus mit 3,3 Volt
Pegeln arbeitet!
(Nicht wundern, dass es nicht ganz dem Foto entspricht, aber im
geätzten Layout war ein kleiner Fehler drin.)
as5046.brd
as5046.sch
Ansteuerung
Das Auslesen von Winkeln ist sehr einfach, ich beschränke mich auf
die Dokumentation dieser Funktion. Der AS5046 ist auch programmierbar,
dies werde ich jedoch nicht beschreiben - die Platine ist hierfür
auch nicht ausgelegt, da der PROG-Pin mit Masse verbunden ist.
Zum Auslesen müssen 4 Byte Daten vom Sensor gelesen werden, folgender
Ausschnitt aus einem C-Programm gibt den Winkel sowie weitere
Statusinformationen aus:
signed int angle;
angle=data[0] << 4;
angle+= (data[1] >> 4) & 0xc;
angle+= (data[3] >> 6) & 0x3;
signed char magnitude=data[2];
/* der Uebersicht halber in 3 printfs */
printf("Angle: %6.2f, Mag: 0x%x",
(angle/4096.)*360,
(magnitude)
);
printf(", OCF: %d, COF: %d, LIN: %d, M_I: %d, M_D: %d, Parity: %d",
(data[1] >> 5)&0x1,
(data[1] >> 4)&0x1,
(data[1] >> 3)&0x1,
(data[1] >> 2)&0x1,
(data[1] >> 1)&0x1,
(data[1] >> 0)&0x1
);
printf("\n");
|