womit erfassen? PC Mikrocontroller??
eine bestimmte Programmiersprache?
Etwas in der Art habe ich mal so gemacht. Taste löst Interrupt aus. Nach der Entprellzeit kann erst der nächste Int. ausgelöst werden.
Hallo Leute,
Das Thema an sich ist ein Dauerbrenner, ich weiß, und steinigt mich wenn es doch einen Thread mit der Lösung für mein Problem gibt, ich habe nach dem durchwühlen zahlreicher annähernd passenden Threads die Geduld verloren
Also, Problem ist ganz einfach: Ich möchte über Reedkontakt und Magnet eine Drehzahl erfassen. Der Reedkontakt prellt, das ist das Hauptproblem.
Ich arbeite mit dem Befehl Pulsein und war dabei hängengeblieben ihn mit dem befehl Debounce zu verknüpfen, also erst den Reedkontakt entprellen und dann dann eine Flanke auf den Pulsein Eingang zu geben... es hat nicht geklappt und ich habe nun keine Idee mehr wie es geht.
Dazu noch eine wichtige Info: Auf einer Skala von 1-10 liegen meine Programmierkenntnisse bei 2, also sollte es ein für euch durchaus leicht lösbares Problem sein
Vielen Dank im Voraus
Paul
womit erfassen? PC Mikrocontroller??
eine bestimmte Programmiersprache?
Etwas in der Art habe ich mal so gemacht. Taste löst Interrupt aus. Nach der Entprellzeit kann erst der nächste Int. ausgelöst werden.
@Powell
Über welche Drehzahlen und Laufzeiten der zu überwachenden Welle reden wir denn ?
Gruß
Ratber
Wie steg14 schon schrieb : Nach dem ersten Schalten das Reedkontaktes ne weile nicht mehr auf das Signal reagieren bis das Prellen vorbei ist. Ein problem hast Du wenn der Schalter noch prellt und schon der nächste Schaltimpuls kommt. Kannst auch mal mit Kondensatoren spielen die die Impulse glätten.
MfG
Achso, ich vergaß:
MC ist ein ATMega 8, Programmiert in Bascom
Die Welle Dreht 700min-1
Das Entprellen löse ich anders:
in einem 10ms Timer-Interrupt frage ich alle Tastereingänge ab; für jeden Taster, der betätigt ist, incrementiere ich einen Zähler, bei den nicht-betätigten Tastern setze ich den Zähler auf 0.
Jeder Zähler wird überprüft, ob er z.B. bei 5 (=50ms) angekommen ist; dann wird ein Bit / Flag gesetzt, das den zugehörigen Taster als EIN signalisiert. Ist ein Zähler auf 0, wird dieses Bit / Flag natürlich gelöscht.
Somit muß ein Taster 5 * 10ms = 50ms ununterbrochen betätigt sein, damit er als EIN 'anerkannt' wird. Gibt es wegen des Prellens eine Unterbrechung, beginnt der Zähler wieder von vorne.
Durch dieses Bit / Flag kann ich in der Hauptroutine verzweigen und es nach Abarbeitung löschen oder auch nicht.
MfG Karl-Heinz
HobbyElektronik hier klicken ....
Gut das würde noch gehen.Zitat von Powell
Bei 700 upm sind das rund 86 ms pro Umdrehung.
Asymetrisches Schalten (On/Off Zeit) berücksichtigt kommst du bei angenommenen 25% Ed auf rund 21ms On-Zeit.
Reedkontakte haben üblicherweise 0.5-2ms Prellzeit also ist da noch genug reserve.
Bei der Lebensdauer sieht es dann etwas anders aus.
Reedkontakte haben üblicherweise je nach Modell 10-100 Mio. Schaltspiele.
Bei 700 upm sind das also rund 238-2380 Betriebsstunden.(ca. 10-100 Tage)
Selbst wenn wir die Lebensdauer verdoppeln ist spätestens bei 4760 Betriebsstunden (ca. 200 Tage) Ende.
Alle Rechnungen natürlich nur grob über den Daumen.
Wie oft deine Gerät nun läuft und wann die Betriebsstunden erreicht sind weißt nur du alleine.
Es ist also zu überlegen ob man nicht einfach einen Hallsensor nimmt.
Der ist Mechanisch stabiler (Kein Glas),kennt keine Resonanz,bringt ein sauberes Signal (Prellen,was ist das ?) und läst auch viel kleinere Schaltzeiten zu.
Gruß
Ratber
Schon mal Danke für eure Beiträge
@Kalledom: Wie gesagt, Programmierkenntnisse 2/10, ich kann deinen Lösungsweg zwar nachvollziehen, aber in Code umsetzen ist für mich nicht so leicht Ich bin immer dankbar über Quellcode, dadurch lernt man es am schnellsten
@Ratber: Das ganze sollte eine Testschaltung für eine Achsdrehzahlerfassung für ein Kart werden (ist momentan bissl kalt zum fahren ). Die Testschaltung wird an einem Akkuschrauber aufgebaut, dessen Bohrfutter die drehende Achse simuliert und eben 700min-1 macht
Aber danke für den Lebensdauer-Tipp, es wäre dann wohl wirklich besser und auch einfacher mit einem Hallsensor zu arbeiten... ich werde es mal versuchen.
Wenn Du ohnehin schon einen Magneten benutzt und das Signal mit einem Microcontroller auswerten willst, warum benutzt Du dann keinen Magnetfeldsensor wie z.B. den TLE 4905L ?
Da sollte auch das prellen dann kein Problem mehr sein.
Beispiel für Taster-Entprellung per Software: http://www.domnick-elektronik.de/picasm.htm#IsrT2, allerdings in Assembler und für den PIC.
Neuerdings decrementiere ich den Zähler nicht bei offenem Kontakt, sondern setze ihn sofort auf 0.
MfG Karl-Heinz
HobbyElektronik hier klicken ....
Lesezeichen