Forum: Mikrocontroller und Digitale Elektronik Auslesen eines 8 bit Hall-Sensors über Aruino Mega


von M. E. (m-e_63)


Lesenswert?

Hallo an alle,

für meine Abschlussarbeit muss ich einen digitalen Zwilling für eine 
Fräsmaschine entwickeln. Die Bewegung der Maschine wird über vier 
Schrittmotoren realisiert.

ein Schrittmotor für z-Achse

ein Schrittmotor für x-Achse

zwei Schrittmotore für y-Achse

Ziel ist, die Drehwinkel jedes Motors zu erfassen und die Daten in einem 
digitalen Zwischenspeicher (Cloud) zu speichern. Die Winkelposition wird 
über einen Magnetic Encoder iC, welcher auf Hall-Effekt beruht, 
überwacht. Der Sensor erstellt ein Sinus Signal, welche mit der 
untenstehenden Frequenz abgetastet.  Der Sensor ist so konfiguriert, 
dass ein Signal mit 256 Flanken (steigend und fallend) für eine 
Umdrehung von 360° am Ausgang zurückgibt (Winkelauflösung 1,4°).

Nach dem Datenblatt hat der Sensor eine Oszillator-Frequenz von 256 KHz. 
Wenn ich richtig gerechnet habe, ist die Periode für eine Flanke ca. 4 
µs.

Es gibt 4 Sensoren, die sehr oft gleichzeitig ausgelesen werden müssen.
Keine Flanke darf verloren werden. Der Mikrocontroller, den ich 
verwende, ist Arduino Mega 2560.

Meine Idee ist die Steigende Flanken über GPIO mit dem Interrupt 
auszulesen. Wir wissen schon, dass die Interrupts in Arduino Prioritäten 
haben.

 Ich fürchte mich, wenn die Flanke gleichzeitig kommen, dann wird z.B. 
ein Interrupt ausgelöst, danach verliere ich andere Flanken.

Ich weiß, dass mit dieser Idee etwas nicht stimmt ist. Kann einer von 
euch eine Lösung vorschlagen?

Ich möchte lieber mit dem Arduino weitermachen, aber eine 
Mikrokontroller STM32 bzw. ein Entwicklungsboard NUCLEO-F303RE ist auch 
vorhanden.

Ich werde auf eure Rückmeldungen freuen. Bei jeder Frage bitte nicht 
verzögern.

Mit freundlichen Grüßen

von ... (Gast)


Lesenswert?

Die AVRs haben Counter, der STM sehr sicher auch.
Die Beschreibung von deinem Encoder verstehe ich grammatikalisch nicht. 
Typenbezeichnung? Warum kein digitaler Encoder?

Aber eigentlich ist es deine Abschlussarbeit, und dazu gehört auch 
Theorie, Recherche und Konzeption. Die Umsetzung ist idR das dünnste 
Brett.

von Vorname N. (mcu32)


Lesenswert?

Klingt eher nach einer Aufgabe für Capture and Compare.
Allgemein solltest du ein Polling mit entsprechender hoher Taktung in 
Erwägung ziehen.
Interrupts von multiplen Quellen, die sich im schlimmsten Fall 
gegenseitig überbieten sind i.d.R. keine gute Idee.
Ausser dein Controller hat verschiedene Kerne mit verschiedenen 
Interruptvektoren, aber wäre dann das klassische mit Kanonen auf Spatzen 
schießen :)

: Bearbeitet durch User
von Schorsch X. (bastelschorsch)


Lesenswert?

Milad E. schrieb:
> Ziel ist, die Drehwinkel jedes Motors zu erfassen und die Daten in einem
> digitalen Zwischenspeicher (Cloud) zu speichern.

Und was will man an diesem Speicherort damit tun ?

Verrate doch einfach mal, welcher Sensor dafür angedacht ist.

von M. E. (m-e_63)


Lesenswert?

... schrieb:
> Die AVRs haben Counter, der STM sehr sicher auch.
> Die Beschreibung von deinem Encoder verstehe ich grammatikalisch nicht.
> Typenbezeichnung? Warum kein digitaler Encoder?

Es tut mir leid, falls die Beschreibung nicht korrekt ist. Ich habe 
versucht, es verständlich zu schreiben, aber das war mir schwierig, 
ganzes Datenblatt des Sensors in einige Zeile zusammenzufassen. Die 
Sensoren sind schon am Gerät eingesetzt. Hier ist ein Link zum Sensor, 
falls du Interesse hast. https://www.ichaus.de/product/iC-MA

von M. E. (m-e_63)


Lesenswert?

Schorsch X. schrieb:
> Milad E. schrieb:
>> Ziel ist, die Drehwinkel jedes Motors zu erfassen und die Daten in einem
>> digitalen Zwischenspeicher (Cloud) zu speichern.
>
> Und was will man an diesem Speicherort damit tun ?
>
> Verrate doch einfach mal, welcher Sensor dafür angedacht ist.

Die Daten werden aus der Cloud über eine Schnittstelle aufgerufen und 
dann in eine CAD-Software weitergeleitet, um die Bewegungen des Gerätes 
virtuell in Echtzeit zu überwachen.

Hier ist ein Link zum Sensor: https://www.ichaus.de/product/iC-MA

von M. E. (m-e_63)


Lesenswert?

... schrieb:
> Die AVRs haben Counter, der STM sehr sicher auch.
> Die Beschreibung von deinem Encoder verstehe ich grammatikalisch nicht.
> Typenbezeichnung? Warum kein digitaler Encoder?
>
> Aber eigentlich ist es deine Abschlussarbeit, und dazu gehört auch
> Theorie, Recherche und Konzeption. Die Umsetzung ist idR das dünnste
> Brett.

https://www.ichaus.de/product/iC-MA

Ich habe vergessen etwas zu erwähnen. Falls du den Link besuchst, kannst 
du das Datenblatt des Sensors finden. Nach dem Datenblatt hat der Sensor 
28 Betriebsmodi. Was hier konfiguriert wurde, ist Incr. CLK-DIR 8.

von M. E. (m-e_63)


Lesenswert?

Schorsch X. schrieb:
> Milad E. schrieb:
>> Ziel ist, die Drehwinkel jedes Motors zu erfassen und die Daten in einem
>> digitalen Zwischenspeicher (Cloud) zu speichern.
>
> Und was will man an diesem Speicherort damit tun ?
>
> Verrate doch einfach mal, welcher Sensor dafür angedacht ist.

https://www.ichaus.de/product/iC-MA

Ich habe vergessen etwas zu erwähnen. Falls du den Link besuchst, kannst 
du das Datenblatt des Sensors finden. Nach dem Datenblatt hat der Sensor 
28 Betriebsmodi. Was hier konfiguriert wurde, ist Incr. CLK-DIR 8.

von MWS (Gast)


Lesenswert?

Milad E. schrieb:
> Der Mikrocontroller, den ich verwende, ist Arduino Mega 2560.

Meinst Du nicht, dass Dein Wissen für ein Projekt dieses Maßstabs ein 
wenig zu wenig ist?

Es gibt keinen Arduino Mega 2560 Mikrocontroller, es gibt einen 
Microchip ATMega2560 und es gibt Arduino Controllerboards mit diesem 
Baustein und auf C++ basierendem Softwareaufsatz, der es Bastlern 
leichter macht zu einem Ergebnis zu kommen.

Die möglichst "gleichzeitige" Abfrage von Aufnehmern auf 3 Achsen, 
zusammen mit einer Internetanbindung ist anspruchsvoll.

Wenn man Deine Fragestellung so hört, dann könnte man zur Meinung 
kommen, dass Deine "Auftraggeber" voraussetzen, dass Du scheitern wirst, 
sie jedoch den Umfang des Scheiterns, bzw. den Teilerfolg daraus sehen 
wollen. Ähnlich Startreks Kobayashi-Maru-Test.

Der bezeichnete 8-Bit Angular Hall Encoder kann auch 
Quadratur-Enkodierung, wenn Du 'nen Controller nimmst, der bereits 
Quadratur-Dekoder besitzt, dann geht das ganze deutlich entspannter. 
Einige der XMega AVRs bringen 3 Quadratur-Dekoder mit, die über ein 
Event-System einen guten Teil der Arbeit im Hintergrund ausführen 
können.

Außer Du brauchst tatsächlich 4 Dekoder, weil:

Milad E. schrieb:
> zwei Schrittmotore für y-Achse

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.