Tacho: Durchschnittsgeschwidigkeit

Gast #789755
Lesenswert?

Hi NG,

Ich bin grade dabei mir einen Tacho für mein Motorrad zu basteln und bin 
über ein kleines Problem gestolpert:

Wie berechne und speichere ich sinnvoll eine 
Durchschnittsgeschwinidgkeit?
Bei allen Ansätzen bisher laufe ich irgendwann in Überläufe.

Eine Sache ist relativ einfach zu lösen: Ein Durchschnitt über ein 
wanderndes Zeitfenster fester Größe.

Was ich brauche ist ein kummulativer Durchschnitt der (praktisch) 
unendlich lange läuft und alle Werte gleich gewichtet.

Wäre für Ideen echt dankbar.
Ivo
Gast #789794
Lesenswert?

>Eine Sache ist relativ einfach zu lösen: Ein Durchschnitt
>über ein wanderndes Zeitfenster fester Größe.

Das geht am besten mit einem ringförmig organisierten Speicher. Z.B. 
willst du 8 Werte mitteln, dann schreibe deinen neuen Wert an eine 
Stelle, und inkrementiere die Schreibposition "im Kreis herum". Dabei 
wird dann immer der älteste überschrieben. Der gleitende Mittelwert ist 
einfach der Mittelwert der 8 Speicherstellen.
Persönliche Seite #789804
Lesenswert?

> Was ich brauche ist ein kummulativer Durchschnitt der (praktisch)
> unendlich lange läuft und alle Werte gleich gewichtet.

Wenn ich dich nicht komplett falsch verstehe, dann ist das doch die 
Gesamtdurchschnittsgeschwindigkeit, also der Quotient von Gesamtstrecke 
und Gesamtzeit. Diese beiden Werte aufnehmen und bei Bedarf die 
Geschwindigkeit ausrechnen.
Gast #789807
Lesenswert?

Hallo,

wenn ich das richtig verdstanden habe, dann willst du doch eine 
Durchschnittsgeschwindigkeit für z.b. eine fahrt.

Dann musst du nur speichern:
Zurückgelegte strecke
und
Verstrichene Zeit

dann einfach mit v = s / t berechnen.

Da sollten eigentlich keine Überläufe auftreten, wenn du 32 bit integer 
verwendest.

Egon
#789816
Lesenswert?

@  Egon (Gast)


>Dann musst du nur speichern:
>Zurückgelegte strecke
>und
>Verstrichene Zeit

>dann einfach mit v = s / t berechnen.

Fast. Man muss aber, wenn die Geschwindigkeit für sagen wir mal 10s auf 
<1 km/h sinkt die Fahrzeit stoppen, damit man nur die reine Fahrzeit 
erfasst. Macht mein Fahrradcomputer auch so.

MfG
Falk
Gast #789824
Lesenswert?

Danke für die schnellen Antworten

Ich nutze einen Atmega168 und würde 32 bit ints gerne vermeiden.

Im Prinzip suche ich einen Algorithmus der aus einer Serie von Werten 
den Durchschnitt berechnet ohne dass alle Werte auf einmal oder die 
Gesamtzahl der Werte zur Verfügung stehen.

Ivo
#789830
Lesenswert?

Auch 8bitter können mit 32Bit Integer umgehen.

Eine Algorithmus der ohne aufsummieren der Werte auskommt, gibt es 
meiner Meinung nach nicht, da ja alle Werte die bisher aufgetreten sind, 
irgendwo "zwischengespeichert" werden:

Längere Fahrzeit -> mehr Werte -> mehr Information -> mehr Bits
Gast #789866
Lesenswert?

Schwierig dabei ist: Bei kurzen Zeiten/Strecken braucht man hohe 
Auflösungen, damit sinnvolle Werte herauskommen, bei langen Zeiten läuft 
einem dann ggf. die Variable über.

In meiner derartigen Schaltung zähle ich allerdings direkt die 
Tachopulse (vier Stück pro Radumdrehung IIRC) - dann kommt man mit einem 
32Bit Integer bis >>10.000km :)

(ja, das ist die brutalo-Methode - aber der AVR hat da doch sonst nichts 
zu tun, da kann er auch mal ein bisschen mit 32Bit-Integern rechnen - 
bzw. für die verbrauchte Spritmenge sogar mit 64Bit - immer noch 
einfacher, als ein "selbstgebautes Fließkommaformat" zu nehmen, indem 
man z.B. in einem zusätzlichen Flag speichert, ob die Zahl jetzt 
einzelne Tachopulse (bis 10km) oder ganze Kilometer (ab 10km) zählt)

MfG, Heiko
#850005
Lesenswert?

naja durch die Tutorials hab ich mich schon durchgegraben, und sooooooo 
ein blutiger anfänger bin ich auch nicht (ich hab immerhin schon ein 
Stimmgerät selber gebaut... (siehe anhang... ...ohh bin ich da stolz 
drauf ;) )Ich meinte damit eher, dass ich nicht weis, wie man dem 
controller übermitteln kann, wie schnell sich nun ein Rad dreht?! was 
gibt es da für sensoren? wie macht man sowas?!
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren