Hallo Ich habe eine Frage Ich möchte von einer Seiltrommel die sich von 0 bis max. 200 U/min Dreht die Anzahl der Umdrehungen (nicht die Drehzahl/min) auf einem lcd ausgeben und wenn sich die Trommel in die andere Richtung dreht sollen die Umdrehungen wieder heruntergezählt werden. (Seil abspulen raufzählen, Seil aufspulen runterzählen, Seil völlig aufgewickelt Zähler wieder bei 0) Ich habe dazu zwei Reedschalter einen für die Richtung einen für die Umdrehungen. Eigendlich ganz einfach. Meine Frage ist nur wie ich das Ganze am besten an einen Atmega8 anschließe. Meine Überlegung. Die zwei Reeds an Int0 und Int1,für jeden eine eigene ISR Die erste ISR setzt eine Variable für die Drehrichtung auf 1 Die zweite ISR zählt eine Variable je nach Drehrichtung rauf oder runter und gibt diese am lcd aus und sezt die Drehrichtung wieder auf 0. Oder kann ich bei so langsamen Ereignissen die Interrupts weglassen und das Ganze in eine Schleife setzen und mit if then wie einen Taster abfragen? mfg andreas
Eigentlich braucht man dazu nur eine ISR. Wenn Eingang A einen Interrupt auslöst, wird Eingang B abgefragt. Wenn Eingang B dann hi ist dreht sich die Trommel z.B. rechts herum und man inkrementiert einen Zähler. Wenn Eingang B lo ist, dreht sich die Trommel in die andere Richtung und der Zähler wird wieder dekrementiert. Die Herausforderung sehe ich aber eher darin, das wenn das Seil nicht gleichmäßig aufgewickelt wird, das dann die Umdrehungen beim Aufwickeln nicht mehr mit denen beim Abwickeln übereinstimmern, weil das Seil sich anders aufwickelt und über einer anderen Windung liegt. Frank
Hallo Das mit dem ungleichmäßigen Aufwickeln ist mir bewusst stellt aber in dem Fall kein Problem dar. Aber wie stelle ich mit einer ISR die Drehrichtung fest. Ich bekomme vom Reed ja nur eine kurze Flanke oder "merkt" sich der Int die fallend Flanke. Wenn ich langsam drehe ist der eine Eingang schon wieder low bis der zweite ausgelöst wird. mfg andreas
In dem Falle würde es helfen, die Magneten so zu versetzen, daß die Reedkontakte versetzt so ausgelöst werden, daß sich die Signale zu 50% überlappen. Frank
Hallo ich habe es mal mit folgendem Code im MyAVR Board versucht. Hab noch zwei externe Pullups hizugefügt, funktioniert im Versuchsaufbau eigendlich. mfg andreas Reed1 Alias Pind.2 Config Reed1 = Input Reed1 = 1 Reed2 Alias Pind.3 Config Reed2 = Input Reed2 = 1 On Int0 On_int0 On Int1 On_int1 Config Int0 = Falling ' Config Int1 = Falling Enable Int0 Enable Int1 Enable Interrupts Do Loop On_int0: Waitms 10 Richtung = 1 Return On_int1: Waitms 10 If Richtung = 0 Then Incr Umdrehungen Else Decr Umdrehungen End If Print "Umdrehungen" ; " " ; Umdrehungen Richtung = 0 Return
Als alternative zu deiner Lösung sieh dir doch mal den Sensor an : TLE4942 http://www.infineon.com/dgdl/Data_Sheet_TLE4942-1_TLE4942-1C_V3_1.pdf?folderId=db3a304412b407950112b408e8c90004&fileId=db3a304412b407950112b408fcaa0039
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.