www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenz messen


Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan_H (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Meiserl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Meiserl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Steffen,

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

jo
Axel

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs mal mit ca 100nF von Vcc zum entsprechenden Portpin.

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht net dann passiert nichts mehr und der Taster ferliert jede Funktion 
!!

?

jo

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan S (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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>

Autor: Stefan S (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.