Forum: Mikrocontroller und Digitale Elektronik Frequenz messen


von Gabriel (Gast)


Lesenswert?

Hallo allerseits!
Ich möchte eine Frequenz messen (max 200 Hz) und auf ein Port paralell 
ausgeben. Was glaubt Ihr wie das am einfachten geht? Bin für jeden 
Hinweis dankbar.


Schöne Grüsse und vielen Dank im Voraus

von Steffen (Gast)


Lesenswert?

Ich nehme dafür den 16bit Timer. Wenn am InputCapturePin ein high-Pegel 
kommt, wird ein Statusbit auf eins gesetzt und der Timer resettet 
(TCNT1H und TCNT1L auf 0).
Beim nächsten auftreten des high-Pegels am ICP wird entsprechend dem 
Statusbit (1 = Messung gestartet -->demnach ist Messung jetzt 
beendet)die Messung ausgewertet. In ICR1H und ICR1L steht dann der 
Timerwert. Anhand des Prescalers und der verwendeten Taktfrequenz des µC 
kann dann die Frequenz berechnet werden.
Das ich nur jede zweite Amplitude ausmesse hat seinen Grund. Die 
Berechnung und Ausgabe der Freuenz auf dem LCD dauert eben ein weilchen. 
Da ich das ganze aber als Tacho für nen Pkw realisieren will, muss ich 
zusätzlich noch jeden Impuls am ICP zählen und auswerten/speichern. Das 
ist für die gefahrene Wegstreche sehr wichtig. Bei höheren Freuenzen ist 
die Dauer zwischen zwei 0->1 Pegelwechsel am ICP sehr kurz, weshalb ich 
zu dieser Methode gegriffen hab. Vielleicht gibts da ja auch ne 
günstigere Variante??? Aber so funktioniert das auch.

von Axel(ojojo) (Gast)


Lesenswert?

Hallo

Gabriel: willst du Dir auch einen Tacho bauen?

Ich denke mal, das Ihr beide mit einem externen "Frequenzzähler"-IC 
besser beraten seit, da ihr euch dann keine Gedanken um die Laufzeiten 
eurer AVR-Programme machen müsst und einfach bei Bedarf (zB alle 10ms) 
den aktuellen Wert auslesen und verarbeiten (zB am LCD anzeigen) könnt.
Wenn man natürlich auch die zurückgelegte Strecke im Auto korrekt 
erfassen möchte ist eine Ununterbrochene Zählung natürlich unumgänglich.

Ich möchte mir auch demnächst einen Tacho fürs Auto basteln. Wer kann 
mir einen billigen Frequenzmesser empfehlen? Die Frequenzen liegen im 
Bereich bis weige hundert Hz.

jo
Axel

von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Ich hatte erst einen Testaufbau mit dem LM2907 
(Frequenz-Spannung-Konverter). Aber wegen der Wegstrecke war das 
eigentlich ungeeignet. Für die Drehzahlerfassung ist der aber gar nicht 
so schlecht geeignet.

Zur Zeit plane ich nen extra µC nur für die Geschwindigkeits- und 
Wegstreckenerfassung/-speicherung ein.

Vertrauen ist Gut, Kontrolle besser: siehe Anhang

von Axel(ojojo) (Gast)


Lesenswert?

Hey Steffen !!

sowas will ich auch machen !! so ne Grafik, wie schnell ich gefahren bin

wie geht das ?

For allem WO AM KFZ NIMMT MAN DAS TACHOSIGNAL? und welches Format hat 
das? und wie kann ich meine uCs am versäuchten Bordnetzt anschließen und 
gescheite Werte bekommen ?

jo
Axel

von Stefan_H (Gast)


Lesenswert?

Hi,

Zur Frequenzmessung: Ich würde einen Timer extern takten und mit einem 
zweiten Timer Zeit messen. Ersten Timer nach einer gewissen zeit 
auslesen(z.B. 1ms) auf eine Sekunde hochmultiplizieren(z.B. *1000) dann 
hast du Frequenz in Hertz. So hab ichs mit dem 8051 immer gemacht, 
müsste mit Atmel doch auch gehn, oder? Belehrt kich eines besseren.

lg,

Stefan

von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab das Geschwindigkeitssignal vom Radio "geklaut" - sprich Radio 
raus und µC dran. So hab ich für Testzwecke meine Spannungsversorgung 
und eben das Geschwindigkeitssignal. Das gibt's aber nur bei Fahrzeugen 
mit elektronischem Geber. Wenn du also noch ne Tachowelle drin hast, 
dann wird's schwierig.
Anstatt die Geschwindigkeit auf nem LCD auzugeben sende ich diese 
seriell an ein altes Laptop. Dank NortonCommander (Term95) logge ich die 
Daten bequem mit. Dann noch ein kleines Pascal-Programm geschrieben und 
fertig war die Kurve.

von Meiserl (Gast)


Lesenswert?

Hi
Also ich würd es so lösen wie Steffan_H oder....

1.
Den frequenzeingang (200Hz) auf ext. Interrupt.
z.B.: jede fallende Flanke Variable hochzählen

2.
Timer initialisieren für genaue Zeitbasis.

und dann halt die DifferenzDaten in einem array abspeichern oder
über die serielle schnittstelle rausschieben.

Hab so erst vor ein paar tagen einen einfachen PWM-regler gebaut.
(Der Geber lieferte bei voller Drehzahl ca 9,6kHz)
also sollte es bei deinen 200Hz keine Probleme geben.

Wenn doch könntest ja extern über einen Frequenzteiler nochmals 
runterteilen.
Du solltest aber darauf achten das dein signal prellfrei ist.

von Steffen (Gast)


Lesenswert?

Das Problem ist aber eben, das die Frqeuenz gegen null geht, wenn man 
sehr langsam fährt. Da müsste man ein sehr großes Zeitfenster wählen um 
überhaupt einen Impuls zählen zu können. Zum anderen nimmt die 
Genauigkeit mit sinkender Frequenz ab.

Daher messe ich lieber genau eine Amplitude aus. Wenn der Timer 
übergelaufen ist, dann hat wohl wieder mal ne Ampel meinen Weg gekreuzt.

von Meiserl (Gast)


Lesenswert?

Hi

darf man fragen was das für ein projekt ist?

von Axel(ojojo) (Gast)


Lesenswert?

Hi Steffen,

wie hast Du das Tachosignal vom Radio abgenommen ???
vom Radio ???

jo
Axel

von Steffen (Gast)


Lesenswert?

@Meiserl
Soll mal ein Tacho/Datenlogger für'n Pkw werden.


Ich hab mein Radio ausgebaut. An den DIN-Steckern kann man (wenn 
vorhanden) das Geschwindigkeitssignal am Messerkontakt A1 abnehmen 
(SpeedControlledVolume). Am selben stecker ist auch +12V 
Betriebsspannung, Masse, Beleuchtung, Phone etc.
Wie gesagt, alles nur für erste Tests. Später sollen ja noch weitere 
Daten (Drehzahl, Öltemp, Öldruck, Wassertemp, Ladedruck...) "gesammelt" 
werden.

von Axel(ojojo) (Gast)


Lesenswert?

Hallo

gehört jetzt nur fast zum Thema

Ich wollte auf dem Weg zu einem Frequenzzähler erstmal einen einfachen 
Counter bauen, der mir über LEDs binär ausgibt, wie oft ich auch den 
angeschlossenen Taster gedrückt habe

Dafür habe ich an meinem 4433 den INT0(PD2) gewählt

Jetzt mein Problem :
Wenn ich den Taster drücke (und damit den Interrupt auslöse) dann zählt 
er wie gewünscht sauber eins hoch und zeigt das auch an meinem 
LED-"Byte" schön an
Aber !! wenn ich loslasse, zählt er noch kurz mehrfach dazu (was sich in 
häftigem Blinken bemerkbar macht)
Wie sage ich Ihm korrekt, das er nur bei einer ansteigenden Flanke 
(??oder doch Fallende ??) zählen soll
oder brauche ich einen "entprellten Taster" und was genau ist das !? :-)

Danke

jo
Axel

von Axel(ojojo) (Gast)


Lesenswert?

hey

ich hab grade mal meinen ISP abgezogen und schon geht`s wunderbar ???

Könnt ihr mir das erklären ???

Noch ne Frage:
Ich würde gerne den internen Taktgeber verwenden (1MHz)
wie geht das

und :
wie war das jetzt nochmal mit dem Entprellten Taster ???

jo
Axel

von Steffen (Gast)


Lesenswert?

Versuchs mal mit ca 100nF von Vcc zum entsprechenden Portpin.

von Axel(ojojo) (Gast)


Lesenswert?

Geht net dann passiert nichts mehr und der Taster ferliert jede Funktion 
!!

?

jo

von Ulli (Gast)


Lesenswert?

Servus,
bezüglich der Abnahme eines Geschwindigkeitssignal (Rechteck), so
ist`s idR mit einer Freq von 0-14000 Hz bei werkseitigen Gebern.
Einigige Hersteller haben aber auch sinus Geber drine (ABS,ASR etc.)
... für die, die noch Tachowelle haben, gibt`s ja auch Lösungen, damit
man eine Schaltung like "HeadUp Display" bedienen kann.
www.autoelektronik.de/navi/sensorik.html

Grüsse Ulli

von Stefan S (Gast)


Lesenswert?

Hi,
für die berufschule muss ich ein referat über einen Lm2907 halten bzw
soll kurz erklären was dessen funktionen sind usw. habe datzu auch
einige erklärungen gefunden aber die sind alle meist auf english bzw
deutsch oder einfach schlicht und ergreifend zu kompliziert

hoffe mir kann jemand ne kurze erkläreung hier rein posten oder ein
link schicken wo der LM2907 erklärt wird (DE)!

Thx schonmal dafür!

von blubb (Gast)


Lesenswert?

<troll>
>die sind alle meist auf english bzw
>deutsch oder einfach schlicht und ergreifend zu kompliziert

in welcher sprache hättest du's denn gern?

</troll>

von Stefan S (Gast)


Lesenswert?

deutsch xD und das andere soll heißen das es schlicht und ergreifend zu
kompliziert ist ! xD wenn es alles auf english beschrieben ist

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
Noch kein Account? Hier anmelden.