Umdrehungszeitmesser

Gast #47984
Hallo!

Ich möchte mittels einer Lichtschranke die Umdrehungsgeschw. eines
Rades herausfinden. Nun zwei Fragen:
1. Ich habe einmal ein Bauteil gesehen mit welchem man eine modulierte
IR-Lichtschranke mit minimaler externer Beschaltung realisieren kann.
Kennt jemand einen Solchen Baustein und evtl noch einen Schaltplan?
2. Hat das schon mal einer Softwaremässig realisiert? Ich denke, dass
ich die Lichtschranke an einen externen Interrupt anschliesse und die
Zeit zwischen zwei Interrupts messe (mittels 16-bit Timer). Nun die
Frage: Wie muss ich das mit dem Timer genau anstellen, bzw. einstellen?

Ich benutze den ATmega8

Grüsse und danke
Stefan
Gast #47985
Wieso Interrupt? Du kannst doch auch den Impuls der Lichschranke auf
einen Freuqenz-Voltage decoder leiten, dieser gibt dir dann
proportional zur frequnz eine Spannung aus, die du wiederum mit deinem
AD-Wandler auswerten kannst.

Gruß
Chris
Gast #47986
naja, das ist wohl nicht der Hit...
Digitales Signal mit einem teuren Baustein in ein analoges Signal
verwandeln und das dann wieder digitalisieren??
Abgesehen vom Aufwand entstehen bei jeder Wandlung Fehler.
Zur Lösung: das Signal an den ICP-Eingang, Timer durchlaufen lassen mit
höchster Frequenz (oder auch Vorteiler bei langsamen Signalen).
In der ICP-ISR bildest du einfach die Differenz des alten ICP zum
aktuellen, anschliessend noch den neuen Stand Variable alter_ICP
speichern. Nur mit 16bit-unsigned-Variablen arbeiten, dann brauchst du
dich nicht mal um den Timer-Überlauf kümmern, das Ergebnis stimmt auch
bei zwischenzeitlichem Überlauf. Falsch wirds erst, wenn der Timer
zwischen 2 ICP-Ereignissen 2 oder mehrmals überläuft. Ist das möglich,
kann man das auch per Software lösen.
Gast #47987
Hi

oder man setzt im ICP-INT den Timer wieder auf 0 zurück. Dann kann man
mit dem OV-INT auch feststellen ob die Frequenz ein Minimum
unterschritten hat. So mach ich das zumindest immer und hab gute
Erfahrungen damit gemacht. Bei deiner Methode muß man das Auftreten
eines Stillstandes irgendwie anders erkennen.

Zur Lichtschranke:
Eine Senddiode mit 36kHz modulieren (Einfach mit 36kHz ein/ausschalten)
Als Empfänger dann einen TSOP1736.

Matthias
Gast #47988
ist im Prinzip richtig, aber es können sich Fehlerquellen einschleichen,
wenn auch andere Ints laufen. Rücksetzen auf 0 kommt verspätet, den
systematischen Fehler kann man ausgleichen, nicht jedoch, wenn der MC
gerade andere Ints bearbeitet. Diese Fehlerquellen entfallen bei meiner
Methode, ausserdem kann der Timer1-OV als fester Zeitgeber für andere
Programmteile genutzt werden.
Aber: es führen wie immer mehrere Wege nach Rom :-)
Gast #47989
Hi

Stmmt. Ich erfasse mit dieser Methode hauptsächlich langsame Frequenzen
(Timer läuft im /8 Modus) Bei der schnellsten zu erwartenden Frequenz
von etwa 500Hz hab ich bei 1MHz Abtastung immer noch einen ICR-Wert von
2000. Wenn da mal 30 oder 40 Takte verlorengehen macht das so in etwa
garnichts. Man muß eben abwägen was wichtiger ist: Genaue Erfassung der
Frequenz oder schnelle Erfassung wenn kein Signal mehr anliegt. Bei mir
ist zweiteres wichtiger.

Matthias
Gast #47990
OK, da ich alle anderen Interrupts ausschalten kann nehme ich wohl die
Methode dass ich bei jedem Interrupt den Timer auf 0 zurücksetze und
dann beim nächsten interrupt den Zählerstand abspeichern und wieder auf
null zurücksetzen, so sollte es dann laufen. Was passiert wenn der
Timer überläuft? Gibt es da einen Interrupt oder kann man das sonst
irgendwie schön abfangen?

Danke für eure Hilfe
Gast #47993
@matthias:
gerade noch mal in alten Programmen nachgeschaut, in der ICP-ISR wird
ein Register gelöscht, in der T1_ov-ISR wird es incrementiert und auf
>1 getestet. Wenn ja -> Signalausfall.
Ausserdem wurde eine OCR-PWM benutzt, Pin_set on T1_OV, Pin_clr on
T1_OCR.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.