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^^
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.
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".
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.
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.
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.
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.
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?
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.
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!
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.
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.
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?
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