Forum: Mikrocontroller und Digitale Elektronik Allgoryhmus um Störungen an Inkrementalgeber zu eleminieren


von Kevin X. (odwquad)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe in einem Projekt den AS5311 Sensor vom AMS im Einsatz (Im 
Anhang das Datenblatt). Nun lese ich via Interrupt an meinem Atmega 328P 
die A Flanke aus und vergleiche diese mit der B Flanke.
Dadurch erhalte ich ein inkrementales Signal welches ich aufaddiere und 
dann zu einer Länge umrechne.
Sprich ich möchte mit dem Sensor und einen Magnetstreifen eine Länge 
feststellen.

Wenn ich das Gerät nach vorne fahre bekomme ich folgende Werte 
(Beispiel):
1
1
2
0
3
1
4
1
5
1
6
0
7
0
8
1
9
1
10
1
11
1
12
0
13
1
14
0
15
1
16
1
17
1
Eigentlich müssten es in der Theorie nur einsen sein, da er vor fährt 
und hoch zählt.
Daher eigentlich müssten es insgesamt 17 inkremente sein und nicht nur 
12 inkremente.

Jetzt habe ich raus gefunden, dass dies an vibrationen und der gleichen 
liegt. Der Sensor ist einfach viel zu genau. Wenn ich das Gerät z.B. nur 
auf den Tisch lege und auf den Tisch haue dann zählt er auch Inkremente, 
obwohl sich real keine Länge ändert (im mm Bereich)...

Hat jemand eine Idee wie ich diese Nullen sauber raus filter.
Weil ich möchte natürlich nicht nur hoch sondern auch runter zählen 
können, falls der Magnetstreifen sich dann in die andere Richtung 
bewegt.

Sorry kompliziert zu erklären, ich hoffe es ist verständlich, was ich 
will^^

von MaWin (Gast)


Lesenswert?

Kevin X. schrieb:
> Hat jemand eine Idee wie ich diese Nullen sauber raus filter.

Gar nicht.
Wer Inkrementalgeber ordentlich auswertet und nicht dummerweise glaubt 
Flanken erkennen zu müssen, der hat keine Probleme.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

Wer es natürlich partout falsch machen muss, wird der Probleme nie Herr.

von Oberlehrer (Gast)


Lesenswert?

Also erstmal solltest Du Fragen grammatikalisch und orthografisch 
richtig formulieren, dass sie gefunden werden können.

Dann wäre die Betätigung der Suchfunktion im Forum empfehlenswert, denn 
diese liefert eine komplette Seite mit Lösungsvorschlägen, siehe 
"Entprellen".

von Hmmm (Gast)


Lesenswert?

Dazu gibt's einen Artikel, wo Du auch Deine Variante als Problemfall 
wiederfindest:

https://www.mikrocontroller.net/articles/Drehgeber#Flankenerkennung_von_A_und_Pegelauswertung_von_B

von Oberlehrer (Gast)


Lesenswert?

Oh, da kam jemand dazwischen, wie Ich sehe. Noch ein Tipp:

Ein -> Algorithmus, um den "Rythmus" in dem Signal zu beseitigen, wäre, 
ihn einfach aufzuintegrieren und über eine längere Perdiode zu 
betrachten. Dann kriegt man das Gezittere weg.

von Traubensaft .. (increasingcurrant)


Lesenswert?

Wie wäre es eine Schnittstelle zu bedienen, die dein Controller von Haus 
aus mitbringt? Das im AS5311 enthaltene SSI ist im Prinzip nichts 
anderes als ein SPI, welches man (im Gegensatz zum Encoder-Signal) ohne 
workarounds auf deinem Atmel Chip bedienen kann.

von MaWin (Gast)


Lesenswert?

Oberlehrer schrieb:
> Ein -> Algorithmus, um den "Rythmus" in dem Signal zu beseitigen, wäre,
> ihn einfach aufzuintegrieren und über eine längere Perdiode zu
> betrachten. Dann kriegt man das Gezittere weg.

Irgendwann kommt immer ein vollständiger Depp, der fachlich eine 
absolute Null ist, aber Alles tut um den Fragenden eins reinzuwürgen

Oberlehrer schrieb:
> Also erstmal solltest Du Fragen grammatikalisch und orthografisch
> richtig formulieren

Heute nennt sich der Depp Oberlehrer.

von Feldkurat K. (feldkurat)


Lesenswert?

Oberlehrer schrieb:
> Dann kriegt man das Gezittere weg.

Für's Erste würde es genügen, wenn man Dein Gezeter weg bekäme.
SCNR

von Kevin X. (odwquad)


Lesenswert?

Hmmm schrieb:
> Dazu gibt's einen Artikel, wo Du auch Deine Variante als Problemfall
> wiederfindest:
>
> 
https://www.mikrocontroller.net/articles/Drehgeber#Flankenerkennung_von_A_und_Pegelauswertung_von_B

Vielen Dank euch für die schnelle Hilfe.
Dieser Beitrag hat auf jeden Fall geholfen. Der hier beschriebene Code 
funktioniert einwandfrei mit meinem Arduino :-)


Und sorry, wenn ich diesen Beitrag nicht selbst gefunden habe. Ich habe 
selbstverständlich vorher ausgibig gegoogelt. Aber offensichtlich die 
falschen Begriffe gewählt...

Auf jeden Fall funktioniert es nun einwandfrei.

von MedTechGuy (Gast)


Lesenswert?

Hallo in die Runde,
finde den Beitrag zum AS5311 gut, das Bauteil scheint ja auch noch ein 
Problem zu haben, wenn man mehrfach gleichzeitig die Serielle und die 
A/B Schnittstelle ausliest, kommt es zu einem incremetellen Fehler.
Ich versuche gerade das klar heraus zu bekommen.
Aber seit einigen Wochen ist der Baustein AS5311 wie vom Erdboden 
verschwunden. Hat jemand hier noch ein paar von den Dingern, die ich 
gegen gutes Geld für Testzwecke kaufen könnte?

von Kevin X. (odwquad)


Lesenswert?

MedTechGuy schrieb:
> Hallo in die Runde,
> finde den Beitrag zum AS5311 gut, das Bauteil scheint ja auch noch ein
> Problem zu haben, wenn man mehrfach gleichzeitig die Serielle und die
> A/B Schnittstelle ausliest, kommt es zu einem incremetellen Fehler.
> Ich versuche gerade das klar heraus zu bekommen.
> Aber seit einigen Wochen ist der Baustein AS5311 wie vom Erdboden
> verschwunden. Hat jemand hier noch ein paar von den Dingern, die ich
> gegen gutes Geld für Testzwecke kaufen könnte?

Ja der AMS Sensor ist ausgestorben. Dank Apple kann AMS kaum noch 
Sensoren liefern und hat extreme Lieferengpässe.
Wir sind auf den Sensor von ICHaus umgestiegen. Die haben ähnliche 
Sensoren zu ähnlichen Preisen. Ob man da Privat ran kommt weiß ich aber 
nicht.
Aber AMS kann frühstens Ende 2019 wieder liefern (das weiß ich von 
unserem Distrubutor in der Firma).

Also falls du vor hast irgendwas damit langfristig zu machen, suche dir 
einen anderen Hersteller. Wenn du generell nur eins oder zwei braucht, 
findest du sicher jemand der dir welche verkaufen könnte.

von honk (Gast)


Lesenswert?

MaWin schrieb:
> Oberlehrer schrieb:
>> Ein -> Algorithmus, um den "Rythmus" in dem Signal zu beseitigen, wäre,
>> ihn einfach aufzuintegrieren und über eine längere Perdiode zu
>> betrachten. Dann kriegt man das Gezittere weg.
>
> Irgendwann kommt immer ein vollständiger Depp, der fachlich eine
> absolute Null ist, aber Alles tut um den Fragenden eins reinzuwürgen
>
> Oberlehrer schrieb:
>> Also erstmal solltest Du Fragen grammatikalisch und orthografisch
>> richtig formulieren
>
> Heute nennt sich der Depp Oberlehrer.

Er hat doch absolut Recht. "Allgorythmus"... wenn ich das schon lese. 
Das ist ja schon fast wie ein Stich ins Auge. Fragen mit solchen 
Wortkonstrukten sollten prinzipiell nicht beantwortet werden. Wenn man 
sich unsicher ist, kann man auch im Duden nachsehen, bevor man einen 
Beitrag auf die Öffentlichkeit loslässt. Setzen, sechs!

von m.n. (Gast)


Lesenswert?

Sich hier über Rechtschreibung auszulassen ist hoffnungslos.

Was sachlich daneben ist, ist die Meinung, daß die Signale A,B und Z 
eines elektronischen Gebers gestört wären und entprellt werden müßten.

Bei einer ordentlichen Verarbeitung per Interrupt oder per 
Quadraturdekoder kann man alle Flanken erfassen. Per Entprellen kann man 
nicht so schnell verarbeiten und verliert ggf. Positionen.
Altes Thema, mit immer wiederholten alten Vorurteilen von Leuten, die in 
der Vergangenheit stehen geblieben sind.

von Michael B. (laberkopp)


Lesenswert?

m.n. schrieb:
> Was sachlich daneben ist, ist die Meinung, daß die Signale A,B und Z
> eines elektronischen Gebers gestört wären und entprellt werden müßten.

Aha, wie schrieb ein m.n. in 
Beitrag "4-fach Flankenauswertung per Interrupt mit ATmega48/88"

"In der Regel werden Rechtecksignale von magnetischen oder optischen
Gebern angelegt, die nicht prellen. Falls dies nicht garantiert werden
kann, können die Eingangssignale per externen 2 x D-FF synchronisiert
werden."

Übrigens: Der TO hat das Problem gelöst - mit der richtigen Auswertung.

Während bei m.n. die Drehgeber immer noch zucken, denn auch optische und 
hallbasierte Drehgeber lassen sich stören durch elektrische 
Einstreuungen und mechanische Vibrationen (die schneller sind als die 
erwartete Bewegung).

m.n. schrieb:
> mit immer wiederholten alten Vorurteilen von Leuten, die in
> der Vergangenheit stehen geblieben sind.

Heisst wohl m.n.
Andere Leute lernen in ihrem Leben dazu, und wissen inzwischen, warum 
Flankeninterrupts immer eine blöde Idee sind.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Laberkopp schrieb:
> Übrigens: Der TO hat das Problem gelöst - mit der richtigen Auswertung.

Der TO hat ein unbekanntes, untaugliches Programm durch ein anderes 
ersetzt und sieht die alten Fehler nicht mehr.
Ist das jetzt eine Lösung oder typisch Arduino?

von georg (Gast)


Lesenswert?

Michael B. schrieb:
> Aha, wie schrieb ein m.n. in
> Beitrag "4-fach Flankenauswertung per Interrupt mit ATmega48/88"
>
> "In der Regel werden Rechtecksignale von magnetischen oder optischen
> Gebern angelegt, die nicht prellen

Das ist nur ein Teil des Problems. Auch ein prellfreier Schalter zuckt 
zumidest um +-1 hin und her, wenn die Stellung gerade dem Umschaltpunkt 
entspricht und eine beliebig kleine Störung anliegt.

Das kann man mit einer Hysterese bekämpfen oder es macht auch garnichts: 
ein Zähler zählt dann zwar dauernd um 1 auf und wieder ab, aber er zählt 
nicht falsch.

Georg

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.