AS5311 Messsensor mit ESP32 Chip auslesen

Artikel vom 16.09.2019 um 19:37


Durch meine Eigenbau-Bewegungsmelder habe ich mich in das Thema ESP32 programmieren und betreiben reingefuchst. Nachdem ich drei Bewegungsmelder gebaut habe, kam mir dann die Idee den ESP32 Chip für meine digitale Messanzeige an meiner BF20 Fräsmaschine zu betreiben. Der Vorteil lag dabei klar auf der Hand. Meine Messanzeige an der BF20 habe ich mit der Anleitung von „YurisToys“ nachgebaut. Dabei habe ich ein Texas Instruments Board mit den Messwerten des AS5311-Sensors gefüttert und dieser hat die Messdaten dann mit einem Bluetooth-Board an die „TouchDro“ App von einem Androidgerät gesendet. Die Vorteile des ESP32-Chips für mich waren, dass der ESP32 Chip deutlich günstiger und einfacher zu beschaffen ist und dieser von Haus aus bereits Bluetooth und W-LAN fähig ist. Daher entfällt beim Verwenden des ESP32 das HC-05 Bluetooth Board. Außerdem kann ich den Chip dann selbst programmieren. Des Weiteren plane ich eine Zusatzfunktion. Ich möchte gerne ein 7-Segement Display je Achse zusätzlich zum TouchDro haben, damit ich auch ohne Handy die aktuellen Messwerte sehen kann. Nun muss ich zuerst einmal die Sensordaten auslesen und mir auswerten lassen. Ich habe mich die inkrementalen Ausgänge (A, B) des Sensors entschieden. Mit diesem kann ich eine maximale Auflösung von, 2mm/(1024 Schritte pro 2mm) = 1,953125 μm erhalten, was für meine Anwendungen ausreichend ist. Ich verwende ein Prozessorkern des ESP32 Dual-Prozessors um kontinuierlich die digitalen Ausgänge des AS5311 zu überprüfen. Wird zuerst A, dann B logisch Wahr so wird der Sensor nach rechts über den Magnetstreifen geführt. Folgt das Signal von B dem digitalen Signal von A, dann wird der Sensor nach links bewegt. Der zweite Kern des Chips wird dazu verwendet, um die Sensorwerte von X-, Y-, und Z-Achse an die jeweiligen Ausgabemedien zu senden. Zuerst habe ich mir die Sensordaten in der Arduino IDE Konsole ausgeben lassen. Die Schritte müssen dann lediglich in mm umgerechnet werden und schon erhält man den aktuellen Messwert (bei mir alle 10μs übermittelt). Schon hier können die X-, Y- und Z-Achse parallel ausgelesen und verfahren werden. Die Auslesegeschwindigkeit ist schnell genug und es werden auch (soweit ich das messen konnte) keine Schritte übersprungen. Anbei ein Video zu dem Testaufbau:
Nun wollte ich mir die Koordinaten noch in die „TouchDro“ - App von YurisToys übertragen lassen. Dazu habe ich in den Source-Code überfolgen und festgestellt, dass die Messdaten vom Texas Instruments-Board in Klartext in folgendem Format übermittelt werden: „X52363;Y9383;Z232;“. Dies würde dann folgenden Koordinaten entsprechen: X= 2mm/(1024 Schritte)*52363 Schritte= 102.271mm Y= 2mm/(1024 Schritte)*9383 Schritte= 18.326mm Z= 2mm/(1024 Schritte)*232 Schritte= 0.453mm Damit diese Werte in der TouchDro-App auch richtig interpretiert werden, muss bei den CPI (Schritte pro Inch) ein Wert von 13004,8 eingestellt werden. Diese Daten können über den internen Bluetooth-Chip versendet werden. Das Ergebnis sah dann wie folgt aus:
Nun will ich zusätzlich auch noch die Koordinaten auf einer 8-bit 7 Segment-Anzeige anzeigen lassen, damit ich auch ohne TouchDro die Messwerte immer sehen kann. Außerdem wird zusätzlich noch ein „Nullsteller“ eingebaut werden, damit man auch ohne App die Messewerte stellen kann. Dazu habe ich mir Leiterplatten erstellt und diese in China fertigen lassen. Ich habe mir zusätzlich auch die Option auf dem PCB gelassen, dass nachher noch ein LCD-Display integrieren kann. Sobald das PCB und die 7-Segement-Anzeige bei mir angekommen sind, werde ich den Artikel aktualisieren. Mein Plan ist, dass die Koordinatenanzeige dann in etwa so aussehen soll:

Verfassen Sie einen Kommentar zu diesem Artikel:


Möchten Sie bei der ersten Antwort auf Ihren Kommentar per E-Mail benachrichtigt werden?

Ich stimme zu, dass mein Name, meine E-Mailadresse und meine IP-Adresse im Zusammenhang mit diesem Kommentar gespeichert werden dürfen (Pflichtfeld).