AS5311 Messsensor mit ESP32 Chip auslesen

Artikel vom 12.02.2020 um 23:54


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:
https://www.youtube-nocookie.com/embed/OVo0Gn5OUf0?rel=0
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:
https://www.youtube-nocookie.com/embed/9-af8HS0XqI?rel=0
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:

Ein kleines Update zu dem Projekt

Die 7-Segment-Anzeige ist nun angekommen und ich habe mein Programm so verändert, dass die aktuelle Position des Lesekopfs (AS5311) auch dort noch angezeigt wird. Da ich nun weiß, dass alle Achsen und alle GPIO-Pins funktionieren, lasse ich mir nun meine Leiterplatte herstellen und baue meine Gehäuse.
https://www.youtube-nocookie.com/embed/CpXx3VM21KU?rel=0
Nun ist die Leiterplatte aus China angekommen und ich konnte die Verkabelung testen. Alle drei Achsen und alle Nullsteller funktionieren einwandfrei.
https://www.youtube-nocookie.com/embed/H3wIuVZZggI?rel=0
Ich habe nun endlich alle Boards verkabelt und die Sensoren an die USB-Kabel verlötet. Nun konnte ich zum ersten mal alle drei Achsen gleichzeitig Testen. Bei den Nullstellern habe ich nun eine Haltezeit von ca. 1.5 Sekunden eingestellt. Somit will ich verhindern, dass man versehentlich die Anzeige nullt. Hier auch noch zwei Bilder vom "Making-Of".. AS5311 boards mit USB-Kabeln verlötet und zur Sicherheit mit Heißkleber gesichert: Die Verwüstung auf dem Esszimmertisch während dem Zusammenbau der Leiterplatte: Die Messwerte springen hier an manchen Achsen, da der Abstand zwischen den Magnetstreifen und dem AS5311 nicht korrekt ist, da ich die Magnetbänder einfach an die Sensoren gelegt habe. Eigentlich sollte ein Maximalabstand von ca. 0.2mm eingehalten werden. Entfernt man die Sensoren, dann fangen die Sensoren an zu "flackern".
https://www.youtube-nocookie.com/embed/kEjdygJrZmQ?rel=0
Beim Gehäuse für die Leiterplatte und den Leseköpfen habe ich mich für einen 3D-Druck entschieden, da ich so zum Einen kein Gehäsue exta dafür kaufen musste und zum Anderen bereits für alle meine Bauteile Verschraubungslöcher und Ausbrüche vorsehen konnte. Die 3D-Daten (step und stl) können unter folgendem Link am Ende des Artikels heruntergeladen werden. Anbei noch einige Bilder des 3D-Drucks für den Lesekopf: Und natürlich auch für die Leiterplatten: Das Projekt "selbst gebauter Dro" ist nun fertig. Der Dro kann natürlich gerne nachgebaut werden. Jedoch werde ich nicht die ESP-Programmierung veröffentlichen. Der Vorprogrammierte ESP kann jedoch über mich bezogen werden. Anbei noch die Stückliste und die Links zu den einzelnen Produkten.

Stückliste für einen 3-Achsen-Dro

  • 3x AS5311-TS_EK_AB
  • 3x Magnetstreifen je nach Achsenlänge
  • 1x ThorstDro PCB inkl. Micro USB Breakout boards + programmierter ESP32
  • 3-4x USB-Kabel
  • 3x Taster Schließer
  • 3D-Drucker für ein Gehäuse oder ein Gehäuse suchen und bearbeiten
  • Jumper- oder normale Kabel

CAD-Daten zum 3D-Drucken des

ThorstDro_3D_data.zip herunterladen Viel Spaß und Erfolg beim Nachbau!

Kommentar von Johannes W. vor 4 Jahren:

Ein gelungener Beitrag!
Wäre es möglich den Quellcode (Arduino) zu veröffentlichen?

5/5 Sternen!

Kommentar von Thorsten vor 4 Jahren:

✔️ (verifizierter Kommentar vom Seiteninhaber)

Hallo Johannes,

ich möchte meinen kompletten Quellcode nicht veröffentlichen, da ich dort sehr viel Hirnschmalz und vor allem Zeit rein gesteckt habe. Was würde dir denn der Arduinocode ohne meine Leiterplatte bringen? Erstellst du dir das PCB-Board selbst?

Kennst du dich denn mit dem programmieren am Arduino aus? Evtl. kann ich dir die binary-Datei zur Verfügung stellen. Damit kannst du dir dann deinen ESP32 selbst flashen.

Beste Grüße
Thorsten

Kommentar von Andrey G. vor 3 Jahren:

Guten Abend.

Ein sehr interessantes interessantes Projekt aus den verfügbaren Materialien, Sie können die esp32-Firmware für meine wm210v-Maschinensteuerung nicht teilen

Kommentar von Alexandr vor 3 Jahren:

Hallo, mir hat Ihr Projekt gefallen, kann ich bei Ihnen Firmware für ESP32 und Gerberboards für ESP32 kaufen? Ich bin ein einfacher Technikfreak, ich habe nicht viel Geld, also versuche ich, alles selbst zu machen. Aber der Verstand reicht nicht zum Programmieren)).
Ich wollte auch fragen, ob Sie ein Foto der Platine mit AS5311 auf der Rückseite haben. Ich möchte die Tafel neu zeichnen und meine eigenen Taschentücher bestellen. Chips bestellte Proben. Plötzlich praktisch, ich werde Gerbera teilen

Ist es in dieser Implementierung wirklich möglich, bis zu 1 Mikron genau zu messen?

Kommentar von Heiko H. vor 2 Jahren:

sehr schönes Projekt.
Worin liegt der Unterschied zwischen dem 5mm breiten Band und dem 10mm?
was würde eine programmierter ESP32 kosten?
Vielen Dank. Heiko

Kommentar von Robert V. vor 2 Jahren:

Hallo, ich entwickle gerade selbst ein DRO mit einem Arduino nano und dem AS5311 für eine Achse. Soweit funktioniert auch bereits alles, allerdings habe ich ein Problem mit dem Magnetstreifen. Daher wollte ich dich fragen, ob Du diesbezüglich vielleicht Erfahrung hast. Es geht darum, dass sowohl der mitgelieferte Teststreifen wie auch mein zusätzlich gekaufter 1-Meter-Streifen (1mm Pole-Pitch) ohne Problem funktionieren, solange dieser direkten Kontakt auf die Sensorfläche hat. Sobald ich aber den mitgelieferten Schutzstreifen (das ist ein selbstklebendes 0,12mm dickes Edelstahlband) dazwischen habe, liefert der Sensor keine Daten mehr. Dieses mitgelieferte Schutzband soll die Oberfläche des eigentlichen Magnetbandes vor jeglichen Umwelteinflüssen schützen, aber leider funktioniert dies so nicht. Bei Fertigprodukten ist meisten auch ersichtlich, dass der Magnetstreifen mit einem Edelstahlband geschützt ist.
Lieben Gruß
Robert

Verfassen Sie einen Kommentar zu diesem Artikel:


Um einen Kommentar verfassen zu können, müssen sie der Speicherung von Cookies zustimmen.
Ich stimme zu, dass Cookies gespeichert werden.