Hallo,
ich arbeite momentan daran einen DZB für meinen Roller zu entwickeln.
Ich will aber nicht eine max. Drehzahl festlegen, sondern eine
Geschwindigkeit. Dies realisiere ich über einen Reed-Kontakt von einem
Fahrrad-Tacho. Jetzt meine Frage: Wie messe ich die aktuelle
Geschwindigkeit genauer? Eine Möglichkeit wäre die Zeit zwischen zwei
Interrupts (des Reed-Kontaks) zu messen und somit die Geschwindigkeit zu
errechnen. Die andere Möglichkeit wäre, in dem Interrupt die Anzahl der
Umdrehungen eine Sekunde lang zu zählen und so die Geschwindigkeit
auszurechnen. Welche Variante ist nun genauer/besser oder gibt es noch
eine bessere/genauere?
Danke im Voraus
burgerohnealles
Jonathan K. schrieb:> Welche Variante ist nun genauer/besser oder gibt es noch> eine bessere/genauere?
es kommt auf die Geschwindigkeit an. Wenn es sehr langsam ist, dann ist
es besser die Zeit zu messen, wenn es sehr schnell ist dann besser die
anzahl der Impulse je zeit.
Hoppla ! schrieb:> Ist das nicht einfach berechenbar ? Mach mal.
Also ich denke Variante 1 ist besser, da bei der zweiten Variante evtl.
eine halbe Umdrehung nicht gemessen wird .. aber was meint ihr?
Jonathan K. schrieb:> Also ich denke Variante 1 ist besser, da bei der zweiten Variante evtl.> eine halbe Umdrehung nicht gemessen wird .. aber was meint ihr?
und was ist wenn die "Auflösung" bei der 1. Variante nicht ausreicht. Du
also z.b. 0 also Zeit ermittelst?
Peter II schrieb:> Jonathan K. schrieb:>> Also ich denke Variante 1 ist besser, da bei der zweiten Variante evtl.>> eine halbe Umdrehung nicht gemessen wird .. aber was meint ihr?>> und was ist wenn die "Auflösung" bei der 1. Variante nicht ausreicht. Du> also z.b. 0 also Zeit ermittelst?
Hab nochmal nachgerechnet, der kleinste Intervall zwischen zwei
Interrupts ist größer als 40ms, sollte also ausreichen.
lutz h. schrieb:> Von 0 auf 100 in 3,6 Sekunden.
So schnell beschleunigt kein mir bekannter Roller ^^
Nach euren Antworten ist denk ich mal die erste Variante besser, weil
der kleinste Intervall zwischen zwei Interrupts größer als 40ms ist ->
das reicht aus; und bei langsamen Geschwindigkeiten ist diese Variante
sowieso besser (s. Antwort v. Peter II). Außerdem wird dann die
Geschwindigkeit öfters als ein Mal pro Sekunde aktualisiert (außer man
fährt extrem Langsam; also < 2km/h).
Beim Bremsen, von 30 auf 0 in 1 Sekunde ist sicher möglich. Deshalb
könnte die Messung noch genauer werden, wenn zusätzlich ein
Beschleunigungssensor mit einbaut wird.
Jonathan K. schrieb:> Nach euren Antworten ist denk ich mal die erste Variante besser, weil> der kleinste Intervall zwischen zwei Interrupts größer als 40ms ist ->
Sowas bestimmt man, indem man sich überlegt bzw. ausrechnet, wie sich
das errechnete Ergebnis verändert, wenn man einen 'Messfehler' von 1
Einheit am Input hat.
d.h. rein rechnerisch hast du zb in 1 Sekunde 90 Impulse. Jetzt beginnt
aber das Messintervall nicht damit, dass da genau der erste Impuls
kommt, bzw. es endet auch nicht damit. d.h. du kannst in 1 Sekunde auch
schon mal 89 Impulse feststellen bzw. 91.
Wie gross ist daher die Abweichung der daraus errechneten
Geschwindigkeit von der tatsächlichen.
Bzw. genau anders rum: wenn du die Zeit zwischen 2 Pulsen misst, dann
hast du auch dann einen Fehler in der Zeitermittlung (durch den Timer).
Denn der Timer startet ja nicht exakt bei 0, wenn der erste Impuls kommt
und er macht auch nicht exakt 1 Timertick, wenn der zweite IMpuls kommt.
Wieder hast du einen Messfehler von +-1, diesmal aber in der
Zeitermittlung durch den Timer.
Welche Abweichung hast du dann von der theoretischen Geschwindigkeit?
Und ja: die beiden Methoden sind komplementär. Bei der einen Methode
(welcher?) wird der Fehler bei steigender Geschwindigkeit größer, bei
der anderen wird er kleiner. Dafür hat die eine Methode ein besseres
Verhalten bei kleinen Geschwindigkeiten als die andere. Man kann sich
das graphisch in einem Diagramm aufmalen (auf der einen Achse die
Geschwindigkeit, auf der anderen Achse der 'Fehler') und stellt fest,
dass die beiden Geraden einen Schnittpunkt haben. Auf der linken Seite
des SChnittpunktes (bei kleinen Geschwindigkeiten) ist die eine Methode
besser, auf der anderen Seite (bei höheren Geschwindigkeiten) ist die
andere besser. Wo genau dieser Schnittpunkt liegt, hängt von den
Messparametern ab. Aber: man kriegt daraus eine Grenzgeschwindigkeit
raus, ab der man die Methode wechseln sollte. Ob für dich dieser
'Umschaltpunkt' in der Geschwindigkeit überhaupt relevant ist, oder
nicht, kann man erst sagen, wenn man die zu diesem Punkt gehörende
Geschwindigkeit kennt und dann mal damit vergleicht, was dein Roller
überhaupt fahren kann.
lutz h. schrieb:> Beim Bremsen, von 30 auf 0 in 1 Sekunde ist sicher möglich. Deshalb> könnte die Messung noch genauer werden, wenn zusätzlich ein> Beschleunigungssensor mit einbaut wird.
Das könnte man natürlich noch mit einbauen. Werde den DZB einfach mal
testen, wenn es zu ungenau ist, bau ich auch noch einen
Beschleunigungssensor ein.
Karl Heinz Buchegger schrieb:> Sowas bestimmt man, indem man sich überlegt bzw. ausrechnet, wie sich> das errechnete Ergebnis verändert, wenn man einen 'Messfehler' von 1> Einheit am Input hat.
Ok ..
V=45km/h (12.5m/s)
U=80cm (Reifenumfang)
Somit habe ich pro Sekunde 12.5/0.8=15.625 Umdrehungen. Wenn jetzt z.B.
14 gemessen wird, kommt 14*0.8=11.2 m/s bzw. 40.32 km/h. Selbst wenn
korrekt 15 gezählt wird, kommt 43.2 km/h raus. Das ist mir zu ungenau.
Wenn ich die Zeit zwischen zwei Impulsen messe und einen Fehler von nur
1ms habe (und ich messe in us):
t=1/f
=1/15.625
=0.064
f=1/t
=1/0.065
=15.3846 (ungefähr)
Das macht dann ca. 44.3 km/h. Da ich meistens um die 45km/h fahre ist
(für mich) die Methode die Zeit zw. zwei Impulsen zu messen, die
bessere/genauere.
Wenn die Messung eines Reed-Impulses bei höheren Geschwindigkeiten zu
ungenau wird, also die vergangene Zeit seit der letzten Messung zu klein
ist, kannst du auch die Zeit zwischen mehreren Impulsen messen.
LG, Sebastian
Man könnte auch beide Methoden verwenden und je nach Geschwindigkeit den
Mittelwert gewichten:
- bei geringen Geschwindigkeiten zählt man z.B. mit einer Lichtschranke
die Löcher in der Bremsscheibe
- bei höheren Geschwindigkeiten die Dauer einer Radumdrehung
Ein ATMegea sollte genügend Rechenpower für Beides gleichzeitig haben
...
Jonathan K. schrieb:> Somit habe ich pro Sekunde 12.5/0.8=15.625 Umdrehungen
Willst Du das Ergebnis erst nach einer Sekunde haben?
Du könntest z.B. die Anzahl der Reed-Kontakte erhöhen (3-4).
Btw, was ist ein DZB?
Habe bei einem Testgerät (Zweirad) eine gute Lösung gesehen: Hallsensor
auf die Bremsscheibe. War sehr einfach umgesetzt und hat super
funktioniert. Durch die Speichenzahl relativ hohe Auflösung.
Lichtschranke funktioniert sicher auch, halte ich aber für
problematischer. Entweder getrennter Aufbau (Sender / Empfänger) oder
Reflex, anfällig für Schmutz, Streulicht...
Unabhängig vom verwendeten Sensor auch mit 2 phasenversetzten Sensoren
aufbaubar: Quadraturencoder.
Die Ideen beide Varianten gleichzeitig zu benutzen finde ich gut, werde
dies demnächst mal ausprobieren. Mit einem Hallsensor könnte ich's auch
mal versuchen..
Pete K. schrieb:> Btw, was ist ein DZB?
Ein DZB ist ein Drehzahlbegrenzer. Er kann zum Drosseln von
Rollern/Mofas verwendet werden (falls es dich irritiert, ja
normalerweise wird ab einer bestimmten Drehzahl gedrosselt, ich mache
das ab einer bestimmten Geschwindigkeit).