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
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.
@ 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
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
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?
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
@ Luca Bertoncello (lucabert)
>Sind die zu lang?
Nein.
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.