Das Thema ist vielleicht nicht ganz korrekt, da es sich nciht um einen Taster, sondern um folgendes handelt, meiner Meinung nach aber auf das selbe hinausläuft:
Also ich habe uas einer alten Maus eine Welle etc. ausgebaut, die die Bewegung der Kugel aus eine y- und x-Achse umleited. Da es sich um eine late maus handelt, ist es noch mechanisch. Das heißt ein Rad mit schleifern und jeder Menge Leitflächen.
Das ganze soll nun an den motor (Servo) angschlossen werden und dann der Geschwindigkeitsermittlung dienen.
Über einen AVR wird das ganze gesteuert.
Ich habe nun ein Beipiel programmiert, um die Anzahl der Kontakt-Flächen, keine Ahnung wie man das nennt (Ich hoffe ihr könnt es euch vorstellen), zu ermittlen. Dabei drehe ich das ganze einmal rum und gebe die Counts aus.
Leider variert diese Zahl zwischen 77 und 139, ein wenig viel für eine Umdrehung. Ich vermute, dass es daran liegt, dass die Schleifer nicht richtig entprellt sind, also sie sinds ja garnicht.
Und wenn ich das Ganze langsam drhe, zählt er mal 1 dazu, mal 4...
Eine entprellung mit einem Kondesator hats nicht geprcht, und reseted den AVR von Zeit zu Zeit auch immer mal.
Wie willst du denn beim "Entprellen" zwischen den gewünschten Flanken, bzw. Impulsen die du zählen willst und denen die durch die unsauberen Schleifkontakte entstehen unterscheiden?
Bei einem Taster sieht die Sache etwas anders aus, weil man da nur wissen will ob der Taster gedrückt wird oder nicht.
Das wird nicht leicht werden bei variierender Drehzahl. Du musst dir zu der Drehzahl je ein Zielfenster definieren in dem du dir einmalig deine Flanke zulässt. Kostet extrem Rechenaufwand (Prozessorleistung) und zum andern ist es viel Arbeit. Geh doch besser das Problem an der Ursache an, nicht am Ende. Dann ist es sicherer und es funktioniert nacher auch richtig. Das mit Kondensatoren ist vieleicht zum Testen eine Lösung aber nicht für den fertigen Aufbau und bringt daher gar nichts oder nur sehr wenig in bestimmten Drehzahlbereichen.
Eigentlich ist es weitgehend egal, wie schnell der Taster betätigt wird. Das Prellen ist wahrscheinlich wesenrtlich schneller. Wenn eine Software-Lösung gebraucht wird, würde ich folgendes machen: einen Zähler initialisieren, der sehr schnell läuft. Im Überlauf eine Variable inkrementieren. Wenn eine Tastenbetätigung detektiert wurde, die Variable auf Null setzen und bei der nächsten Tastenaktion die Variable auf einen Mindestwert prüfen. Den Mindestwert gilt es zu ermitteln. Alle Aktionen unterhalb dieses Mindestwertes ist Prellen.
Also wenn das so aufwendig ist, dann steige ich besser auf optische Sensoren um. Der Vorteil hier war eben nur, dass ich die 'Hardware' schon habe und schonmal keine Lichtempfindlichkeit herscht.
Also ich hab gestern Abend noch gelesen, dass es bei Countern eine Funktion Noice gibt:
Vielleicht könnte man auch mit nem externen Interrupt arbeiten. In der Interruptroutine könnte man einen Timer starten, dessen Interrupt den µC dazu veranlasst einen Eingang mehrfach innerhalb von sagen wir mal 5 bis 10ms abzufragen und je nach Häufigkeit der gemessenen Pegel weiter rauf/runter zählt oder eben nicht.
Also es muss nicht zwangsläufig eine Softwarelösung sein, allerdings habe ich nicht ganz verstanden, was E-Fan machen möchte.
Willst du nachdem der Interrupt ausglöst wurde noch mehrmals den Eingang abfragen, ob er sagen wir 2 von 3 mal high ist...
Naja, das würde vielleicht gehen, allerdings wäre mir da eine Hardwarelösung um einiges lieber.
Wenn es außer den Kontakten, die zu zählen sind, noch eine Reihe von Kontakten gibt, die um ein Viertel des Rasters (90°) versetzt sind, dann kann man die zum Entprellen nehmen.
Egal wieviele Impuls kommen, gezählt wird nur einer, bis der Impuls aus der versetzten Reihe kommt und dann erst wieder wenn der versetzte Kontakt nicht mehr geschlossen ist.
So machen die Mäuse das und bestimmen dabei auch die Drehrichtung.
Manfred
Das die Mäuse daraus die Drehrichtung bestimmen ist mir bekannt, aber die Idee ist gut, man könnte ein UND-GATTER benutzen. Das Prüfen mit Hilfe des AVR ist zwar möglich, aber wird vermutlich sehr viel Leistung schlucken, schließlich muss bei jedem interupt geprüft und dann auch noch erhöht werden.
Frage ist nur, ob ein UND-Gatter nciht dieselben probleme haben könnte...
Das Prinzip beruht darauf, dass ein Schalter beim Schließen prellt danach nicht mehr. Wenn erständig flattert hat es keinen sinn.
Die externe Schaltung ist nicht ein Und Gatter, sondern ein Flip-Flop mit Daten- und Takt-Eingang. Erster Kontaktfächenschalter geht an Daten, versetzter an Takt.
Manfred
Lesezeichen