Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit KFZ bestimmen


von Philipp Karbach (Gast)


Lesenswert?

Hallo,
in meinem PKW gibt es ein zerhacktes Rechtecksignal. Dieses Soll bei 
einem (bei mir nicht vorhandenen) Bordcomputer für 
Geschwindigkeitsberechnungen genutzt werden. Ich möchte dieses Signal 
nun mit einem ATmega auslesen. Erstmal nur theoretisch, da ich noch 
nichtmal weiß um welche Pegel es sich handelt aber ich weiß, dass pro 
Radumdrehung 16 Rechteckimpulse ankommen. Sollte ich jetzt nun am INT0 
bei jedem auslösen einen zähler hochsetzen und wenn ich bei 16 bin die 
Zeit zwischen Impuls1 und Impuls16 nehmen? Damit könnte man ja die 
Geschwindigkeit berechnen, reine Physik. Aber wie würde man diese 16 
Impulse zählen, besser noch, die Zeit dazwischen am besten messen? 
Vielen Dank!

von Klaus R. (klaus2)


Lesenswert?

...ließ dir mal alles zu "timern" durch im tutorial. 16 impulse würde 
ich nicht warten, evtl 5 oder sowas, dann mittelwertbildung und mit dem 
reifenumfang verrechnen.

Klaus.

von Philipp Karbach (Gast)


Lesenswert?

hab jetzt noch was rausgefunden, der Pegel ist 12V, rechteck, 
f=7Hz-1200Hz je nach Geschwindigkeit.

von Ricardo (Gast)


Lesenswert?

Hallo,

um den Pegel zu wandeln, kannst Du einen Schmitt-Trigger nehmen (5V - 
damit Du die Impulse mit dem uC erfassen kannst). Um die Frequenz zu 
messen, kannst Du ein Capture-Compare-Register verwenden, oder wenn Du 
die Möglichkeit hast, könnstest Du auch das Signal an einen 
extern-Interrupt Pin des uCs anschliessen, dann zählst Du nur die 
fallenden (oder steigenden) Flanken in einer Sekunde .... und zasss so 
hast Du Deine Frequenz.

Gruß

Ricardo

von Moritz E. (devmo)


Lesenswert?

Um es genauer zu machen, messe die Periodendauer eines Rechtecks, und 
erhalte so den Kehrwert der Frequenz. Wenn du Ereignisse zählst und 
deren Frequenz angeben willst solltest du ja schon so 100 Ereignisse 
abwarten und dann durch die Zeit teilen, sonst wirds ungenau.

von Philipp Karbach (Gast)


Lesenswert?

das sind schonmal gute tipps, danke :)

von Ralph (Gast)


Lesenswert?

Verwende den Capture Eingang des timers um die Flanken zu zählen.
Dann verwedne einen 2. Timer um alle zb 20 ms einen Interrupt zu 
generieren.
In diesem Interrupt liest du die Anzahl der eingegangen Flanken ein, und 
kannst damit die Geschwindigkeit berechnen.
Danach noch etwas Filtern, zb gleitender Mitterlwert und du hast eine 
brauchbare Geschwindigkeit.
Über die Zeiteinstellung für den interrupt und die Filtertiefe kannst du 
einstellen wie schnell und stabil die Geschwindigkeit der Realität folgt

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.