Forum: Mikrocontroller und Digitale Elektronik Probleme mit den Signalen von optischen Encoders


von Luca B. (lucabert)


Angehängte Dateien:

Lesenswert?

Hallo, Leute!

Endlich habe ich von einem Freund ein Oszilloskop bekommen, und einige 
Messungen durchgefürht.

Ich beziehe mich auf dem Thread 
Beitrag "ATMega8: INT0 und INT1 funktionieren sehr komisch"

Damals habe ich mich gewundert, warum der µC die Interrupts INT0 und 
INT1 so komisch verwaltet hat (unregelmäßig gelesen).

Mehrere Leute haben mir gesagt, daß ich unbedingt eine Hysterese 
implementieren soll, denn ansonsten die Signale des LM339s wackeln.

Wenn ich mich aber die Signale vom Encoders (siehe Anhänge 
oszi_encoder1.jpg und oszi_encoder2.jpg, Kanal 2 [Blau]) und die 
Ausgänge des LM339s (Kanal 1 [Rot]) würde ich wirklich sagen, daß keine 
Hysterese nötig ist.

Ich frage mich aber, ob vielleicht diese wackeln des höhes und tiefes 
Signales vom LM339 (bestimmt wegen des langen Kabels) das Problem sein 
kann.

Was meint ihr? Habt ihr Vorschläge, um mein Problem zu lösen?

Besten Dank
Luca Bertoncello

von Uwe .. (uwegw)


Lesenswert?

Solange sich der Encoder nur schnell genug dreht, scheint eine Hysterese 
nicht zwingend notwendig. Aber überleg mal was passiert, wenn der 
Encoder steht und durch Vibrationen o.ä. minimal bewegt wird...

Und generell sollte man Encoder (genau wie Taster) nicht per Interrupt 
abfragen, onsdern per Polling im Timer-Interrupt.

von Falk B. (falk)


Lesenswert?

@  Luca Bertoncello (lucabert)

>Beitrag "ATMega8: INT0 und INT1 funktionieren sehr komisch"

>Damals habe ich mich gewundert, warum der µC die Interrupts INT0 und
>INT1 so komisch verwaltet hat (unregelmäßig gelesen).

>Was meint ihr? Habt ihr Vorschläge, um mein Problem zu lösen?

Ersten wertet man einen Drehgeber NICHT mit Pin Change Interrupts 
aus. Warum das so ist, steht im Artikel.

Zweitens kannst du dir die Schaltung mit den Komparatoren sparen, der 
AVR hat schon Schmitt-Trigger Eingänge, die haben Hysterese.

Dann läuft das auch alles tuti paletti.

MfG
Falk

von Luca B. (lucabert)


Lesenswert?

Uwe ... schrieb:
> Solange sich der Encoder nur schnell genug dreht, scheint eine Hysterese
> nicht zwingend notwendig. Aber überleg mal was passiert, wenn der
> Encoder steht und durch Vibrationen o.ä. minimal bewegt wird...
>
> Und generell sollte man Encoder (genau wie Taster) nicht per Interrupt
> abfragen, onsdern per Polling im Timer-Interrupt.

Also, das war wirklich den entscheidenden Tipp! Dieser Artikel hätte ich 
viel früher finden müssen. Ich hätte mich wirklich viel Ärger sparen 
können!
Jetzt lese ich die Werte der Encoders in der Interruptsfunktion des 
Timers, alle Millisekunde (da die Motoren maximal 30 Umdrehungen/Minute 
schaffen, und jede Umdrehung 200 Encodersschritte sind, ist jede 
Millisekunde sogar übertrieben, aber lieber mehr als weniger).

Und funktioniert! Egal wie schnell ich die Motoren drehen lasse, bin ich 
in der Lage sie in genau eine Umdrehung zu halten.

Nun weiter mit der PID-Funktion, so daß die Motoren endlich gleichmäßig 
sich drehen...

Nur 'ne Frage noch: was meint ihr über die Störungen, die in der 
Graphiken zu sehen sind? Meint ihr, sie können mir Ärger verursachen? 
Bestimmt kommen sie wegen der Länge des Kabels.
Habt ihr Vorschläge, wie ich sie weg kriege (wenn sie stören können)?

Danke
Luca Bertoncello

von Uwe .. (uwegw)


Lesenswert?

Ich gehe mal davon aus, dass du einen 1:10-Tastkopf verwendet hast. Dann 
bricht das Signal dort um etwa 0,3V ein. Der AVR erkennt alles ab 
0,7*VCC zuverlässig als high, also bei VCC=5V ab 3,5V. Daher sind hier 
keine Probleme zu erwarten.

Als Ursache kämen auch Spannungsschwankungen durch Lastwechsel auf der 
Versorgungsspannung in Frage.

An welche Stelle ist denn das (wie lange?) Kabel? Zwischen Encoder und 
OP, oder zwischen OP und AVR?

von Luca B. (lucabert)


Lesenswert?

Uwe ... schrieb:
> Ich gehe mal davon aus, dass du einen 1:10-Tastkopf verwendet hast. Dann
> bricht das Signal dort um etwa 0,3V ein. Der AVR erkennt alles ab
> 0,7*VCC zuverlässig als high, also bei VCC=5V ab 3,5V. Daher sind hier
> keine Probleme zu erwarten.
>
> Als Ursache kämen auch Spannungsschwankungen durch Lastwechsel auf der
> Versorgungsspannung in Frage.
>
> An welche Stelle ist denn das (wie lange?) Kabel? Zwischen Encoder und
> OP, oder zwischen OP und AVR?

Es gibt zwei Kabel (mal 2 noch, also insgesamt 4).
Ein Kabel pro Encoder bis zum LM339, circa 15cm lang, und ein anderes 
Kabel pro Encoder, circa 40cm lang, zwischen LM339 und µC.

Sind die zu lang?

Grüße
Luca Bertoncello

von Falk B. (falk)


Lesenswert?

@  Luca Bertoncello (lucabert)

>Sind die zu lang?

Nein.

von Luca B. (lucabert)


Lesenswert?

Falk Brunner schrieb:
> @  Luca Bertoncello (lucabert)
>
>>Sind die zu lang?
>
> Nein.

Ok, dann ist erledigt! Ich danke dir!

Und nun weiter mit dem Programm fluchen... :)

Grüße
Luca Bertoncello

von MaWin (Gast)


Lesenswert?

> denn ansonsten die Signale des LM339s wackeln.

Wenn man mit RICHTIGER Software die Encoder ausliest,
stört wackeln (prellen) beim Übergang nicht.

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

Wenn man es - wie du - trotz mehrfacher Belehrung immer
noch mit unzuverlässigen FALSCHEN Algorithmen probiert,
muss man natürlich die Anfälligkeit kaschieren.
Wirklich zuverlässig wird es aber nie.

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.