mikrocontroller.net

Forum: Offtopic Fahrrad Computer berrechnen


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja lacht mich ruhig aus :-)

Ich versuche hier krampfhaft die Geschwindigkeit
(km/h) zu errechnen.

Gegeben ist der Radumfang mit 2214mm und die Zeit die vergangen ist fuer
eine Radumdrehung (10800 Einheiten, entspricht 1 sekunde)

Das ganze wird mit einem Atmega8 gemacht.
Ich suche einen weg der Recht genau ist, und denoch ohne float division 
auskommt.

Autor: anderer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich rechne sowas immer in Angström/Woche. Gibt größere Zahlen und macht 
mehr her.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviele Nachkommastellen brauchst du denn?

Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ganze müsste sich auf folgende Rechnung reduzieren:
kmh = (0,002214 x 10800 x 3600) / Zeitwert

Um die Division wirst du wohl nicht rum kommen. Wenn man 
nachkommastellen haben will wird man wohl auch um float nur schwer rum 
kommen.

Autor: Eddy Current (chrisi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also rechnen wir mal:

Annahme: Maximal messbare Geschwindigkeit: 100km/h (= 27.8m/s)
Zeit für eine Umdrehung:

t = 2.214m/(27.8m/s) = 79.7ms

Um diese Geschwindigkeit mit 1% Genauigkeit zu messen (Grüsse an 
µA-Thread), muss der Kontakt demnach ca. alle 79.7ms/100 = 797µs 
abgetastet werden. Bei 100km/h läuft Dein Zähler somit auf einen Wert 
von 100.

Bei Minimalgeschwindigkeit, sagen wir mal 1km/h dauert die Umdrehung des 
Rades 100 mal solange. Folglich läuft Dein Zähler dann bis 10000. Du 
brauchst also einen 16-Bit-Zähler.

Wenn wir exakt mit 797µs abtasten, errechnet sich die Geschwindigkeit 
wie folgt:

v[km/h] = 10000 / Z

Mit Festkommaarithmetik gerechnet:

v[km/h*10] = 100000 / Z

Bei der Anzeige muss dann die Kommastelle wieder eingefügt werden. Ein 
Rechnung mit Floatzahlen erübrigt sich, ein long int reicht locker.

Wenn Du statt mit den krummen 797µs lieber mit geraden 800µs abtastest, 
muss lediglich Deine Konstante korrigiert werden von 100000 auf 99630. 
Witzigerweise ist dieser Wert sogar exakt und nicht gerundet.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marius S. schrieb:
> Um die Division wirst du wohl nicht rum kommen. Wenn man
> nachkommastellen haben will wird man wohl auch um float nur schwer rum
> kommen.
Wo hast du denn das her?
--> Festkommarithmetik.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke fuer die Antworten.

Ich koennte ja bei diesem Beispiel:
kmh = (0,002214 x 10800 x 3600) / Zeitwert

auch

kmh = (2214 x 10800 x 3600)  Zeitwert  1000 rechnen, oder?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so, und ich habe den sensor am Rad ueber ein Interrupt laufen.

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, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Yahoo-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.