Hallo zusammen,
ich stehe im Moment gerade irgendwie auf dem Schlauch und brauche ein
wenig Hilfe.
Es ist die Geschwindigkeit und die Beschleunigung einer sich drehenden
Scheibe mit dem Durchmesser 0,25m zu berechnen. Hierzu ist an der
Scheibe am äußeren Rand ein Magnet befestigt und an einem festen Punkt
ein Hall-Sensor der auf den Input Capture Eingang eines ATmega8
geschaltet ist.
Pro Umdrehung erhalte ich also einen Impuls und ein Interrupt ausgelöst.
Bei der Geschwindigkeit bin ich eigentlich klar gekommen und habe ein
bisschen Vorweg in Excel gerechnet, um dem Prozessor Rechenzeit zu
erpsaren:
Nun habe ich mir in Excel eine Tabelle gebastelt, die zunächst einmal
den Umfang der Scheibe berechnet mit 0,25*PI.
Ebenso habe ich die Geschwindigkeit von km/h durch 3,6 geteilt um m/s zu
erhalten.
Teile ich die Geschwindigkeit durch den Umfang, erhalte ich die Frequenz
in Hz. 1 durch die Frequenz ergibt mir dann die Zeit in Sekunden die für
eine Umdrehung bei aktueller Geschwindigkeit vergeht. Diese Zeit kann
ich mit entsprechendem Prozessortakt und Prescaler in einen Timer Wert
umrechnen. Die Zeit ist also proportional zur Geschwindigkeit, da der
Umfang fix ist.
Bsp.:
5km/h --> 1,388 m/s
1,388/(0,25*PI) =1,768Hz
1/1,768Hz = 0,565s pro Umdrehung
Bei einem Takt von 8 Mhz und einem Prescaler von 64 erhalte ich
0,565*8*10^6/64=70686 Timer-Takte
Nun kann ich in meinem Input Capture die Differenz zwischen zwei
Ereignissen messen und diesen Timer Wert nehmen, der für eine bestimmte
Geschwindigkeit steht.
Nun, aber wie messe ich die Beschleunigung? Hier stehe ich auf dem
Schlauch. Die Beschleunigung ist ja dv/dt. Da ich aber meine
Geschwindigkeit in Zeit ausgedrückt habe, entspricht dv=v2-v1 dt=t2-t1.
Der Quotient ergibt also immer 1. Hier ist im Moment meine Blockade.
Vielleicht hilft mir jemand, dies zu lösen.
Danke.
Gruß
Daniel
Hallo,
dt=t2-t1
ist doch die Zeit, die zwischen zwei Messungen liegt, also musst Du noch
zu jeder Messung einen Zeitstempel mitführen.
Ich hoffe jetzt wird es klarer.
Hallo,
nein, igrendwie noch nicht.
Den Zeitstempel erhalte ich ja aus meinem Input Capture, welches ja bei
jeder Umdrehung 1x auslöst. Also ist die Zeit von Impuls zu Impuls die
Differenz beider Timer-Werte, die am Input Capture anliegen.
Gleichzeitig ist ja aber diese Diffrenz auch der Wert für die
Geschwindigkeit ausgedrückt in einer Zeit, da die Wegstrecke stets
konstant ist (Umfang).
Servus,
dein zeitstempel kannst du durch einen Timer generieren.
Also TimerX zählt in Bspw. Mikrosekunden und dein Interrupt greift sich
die vergangene Zeit ab, schon hast du deinen Zeitstempel.
Gruß abc
Hallo,
du hast doch V gemessen - mit Hilfe von dt. Die Beschleunigung ist
einfach die Differenz von V zum vorherigen Wert, geteilt durch die
letzte Umlaufzeit. Du brauchst also nur den jeweils vorherigen V-Wert
speichern und vom aktuellen V abziehen.
Gruss Reinhard
Daniel schrieb:> Da ich aber meine> Geschwindigkeit in Zeit ausgedrückt habe, entspricht dv=v2-v1 dt=t2-t1.> Der Quotient ergibt also immer 1. Hier ist im Moment meine Blockade.> Vielleicht hilft mir jemand, dies zu lösen.
Nur, wenn die Scheibe mit konstanter Drehzahl rotiert. Aber ist die
Beschleunigung dann wirklich 1? Es wirkt ja auch noch die
Zentripetalbeschleunigung.
Ich glaube ich habe meinen Denkfehler gefunden, Bsp.:
Der Timer zählt, beginnt bei 0, erstes Ereignis kommt bei 10, zweites
bei 20, drittes bei 35
Die erste Geschwindigkeit ist v1=10-0=10; die zweite Geschwindigkeit ist
v2=20-10=10, die dritte Geschwindigkeit ist v3=35-20=15
Die Zeiten:
t1=20-10=10
t2=35-20=15
a1=v2-v1/t1)=10-10/(10)=0
a2=v3-v2/t2=15-10/15=1/3
Das müsste doch so stimmen oder (sinngemäß, quantitativ natürlich nur
ein Zahlenbeispiel)?
Daniel schrieb:> Der Timer zählt, beginnt bei 0, erstes Ereignis kommt bei 10, zweites> bei 20, drittes bei 35> Die erste Geschwindigkeit ist v1=10-0=10; die zweite Geschwindigkeit ist> v2=20-10=10, die dritte Geschwindigkeit ist v3=35-20=15
DAs kann nicxht sein, wenn der Weg gleich ist (eine Umdrehung) und die
Zeit ist länger, dann ist dei Geschwindigkeit niedriger. Die Zeit t
steht im Nenner!
v3=35-20=15 ist falsch richtig ist a / (35 -20) mit a = Umfang.
Entsprechend muss deine Beschleunigung negativ werden da die
Geschwindigkeit sinkt.
Das stimmt in der Tat, aber ich könnte es umdrehen:
v1-v2 bzw. v_alt-v_neu
Ich bin der Meinung, dass a (Umfang) nicht nötig ist bzw. man muss nur
davon wissen und ausgehen, dass er konstant ist:
Angenommen ein Auto beschleunigt von 10m/s auf 20m/s in 10 Sekunden. Ich
rechne: (20-10)/10 = 1 Die Beschleunigung ist eins.
Ich kann aber auch sagen das Auto braucht um die Strecke 0-100m (Zahl
irrelevant) in einem Fall 10s und beschleunigt dann und benötigt für die
Strecke 100-200m (Diffrenz 100m = konst) nur 5s.
Die Beschleunigung kann ich hier ohne die Wegkenntnis (Umfang) alleine
durch die benötigten Zeiten errechnen durch: (10-5)/5. Vorraussetzung
ist aber, dass der Weg konstant bleibt (wie es bei dem Umfang ja ist).
Das müsste doch so stimmen oder? Weil das ist im Prinzip mein Ziel, es
alleine durch die Zeiten aus dem Zeitstempel vom ICP Interrupt
auszurechnen. Da sich die Zeit reziprok zur Geschwindigkeit verhält,
müsste es dann richtig lauten v_alt-v_neu (ausgedrückt als Zeiten von
einem Ereignis zum nächsten) geteilt durch v_neu.
Daniel schrieb:> Da sich die Zeit reziprok zur Geschwindigkeit verhältDaniel schrieb:> Der Timer zählt, beginnt bei 0, erstes Ereignis kommt bei 10, zweites> bei 20, drittes bei 35> Die erste Geschwindigkeit ist v1=10-0=10;
Was fällt dir bei den beiden Aussagen von dir auf?
Das war etwas blöd formuliert, also es ist reziprok d.h. wird v größger
wird t kleiner, aber zu anfangs hatte ich es als nicht reziprok
angenommen (v größer --> t größer und das ist natürlich Blödsinn).
Könnte mich noch jemand unterstützen, ob meine Logik richtig ist?
Ich habe einen Zeitstempel durch das Input Capture. Bei jeder Umdrehung
wird dies durch den Kontakt ausgelöst.
In Programm messe ich dann die Zeit von Auslösung_neu zu Auslösung_alt
als Differenz. Dies ist mein delta_t.
Da die Zeit ja im Verhältnis zur Geschwindigkeit steht (der Weg=Umfang
der Scheibe=const.), gibt mir die Zeit auch die Geschwindigkeit wieder,
d.h. je geringer die Zeit, desto höher die Geschwindigkeit.
Nun glaube ich, dass ich die Beschleunigung ganz einfach aus den
Timer-Werten des Zeitstempels bestimmen kann wie folgt:
Das Programm liefert 3 Zeitstempel zu den Zeiten t1, t2, t3.
Die Geschwindigkeit ermittle ich zu v1=t2-t1 und v2=t3-t2
Nun ist meine Beschleunigung zwischen t2 und t3:
a_23=(v1-v2)/(t3-t2), wobei t3-t2=v2 und damit
a_23=(v1-v2)/v2
Richtig oder habe ich noch einen Denkfehler?
Hallo,
ich habe doch oben schon mal erklärt, dass es viel einfacher ist. Wenn
du halt nicht lesen willst, musst du es eben komplizierter lösen.
Gruss Reinhard
Reinhard Kern schrieb:> Hallo,>> du hast doch V gemessen - mit Hilfe von dt. Die Beschleunigung ist> einfach die Differenz von V zum vorherigen Wert, geteilt durch die> letzte Umlaufzeit. Du brauchst also nur den jeweils vorherigen V-Wert> speichern und vom aktuellen V abziehen.>> Gruss Reinhard
Hallo Reinhard,
nochmals danke für die Antwort, aber genau das mache ich doch im
Prinzip:
a_23=(v1-v2)/(t3-t2), wobei t3-t2=v2 und damit
a_23=(v1-v2)/v2
Ich subtrahiere die beiden v's (ausgedrückt in einer Zeit) und teile
durch die Umlaufzeit, die ja exakt der letzten v-Messung ausgedrückt in
einer Zeit entspricht...
Oder sehe ich da etwas falsch?
Das v in m/s ist und t in s ist mir klar.
Wenn aber Kandidat A auf 100m 10s benötigt und Kandidat B auf 100m 8s,
so kann ich sagen Kandidat B läuft schneller als Kandidat A, obwohl ich
nur t von den Kandidaten kenne. Bei einer konstanten Strecke (1 Umlauf
der Scheibe = Umfang) gibt mir doch die Zeit v wieder. Je kürzer die
Umlaufzeit, desto schneller v.
Was hat deine letzte Schlußfolgerung mit der Beschleunigung zu tun?
Daraus folgt auf keinen Fall t3 - t2 = v2
Daniel schrieb:> Bei einer konstanten Strecke (1 Umlauf> der Scheibe = Umfang) gibt mir doch die Zeit v wieder. Je kürzer die> Umlaufzeit, desto schneller v.
Daraus folgt höchstens, daß v umgekehrt proportional zur Zeit ist.
Und spätestens hier sollte dir klar geworden sein, dass du nicht die
Beschleunigung suchst, denn du hast festgestellt, dass auf der Scheibe
unterschiedliche Geschwindigkeiten und damit auch unterschiedliche
Geschwindigkeitssteigerungen/Zeit (Beschleunigungen) existieren.
Die Strecke ist eben nicht konstant über jeden Punkt der Scheibe.
(Mal ganz davon abgesehen, dass bis auf einen infenitesimalen Punkt eine
konstant rotierende Scheibe an jedem Punkt stetig beschleunigt)
Du willst Drehzalsteigerungen / Zeit errechnen?
Du willst Drehimpulssteigerung / Zeit errechnen?
Du willst die Beschleunignungsänderung / Zeit an einem fest definierten
Punkt/Abstand vom Scheibenmittelpunkt errechnen?
Daniel schrieb:> wobei t3-t2=v2 und damitDaniel schrieb:> Die Geschwindigkeit ermittle ich zu v1=t2-t1 und v2=t3-t2
Herrgott im Himmel, du hast keine Tomaten auf den Augen sondern
fliegende Untertassen!
Du sagst selber daß die Zeit reziprok zur Geschwindigkeit ist rechnest
aber dass sie proportional ist.
Denk doch mal nach.
v = s/t oder auch wenn du sagst s = konstant dann halt v = k/t
GETEILT DURCH t !!!!!
Du brauchst also eine Uhr im Kontroller, die dir unabhängig von der
Drehzahl der Scheibe einen Zeitstempel erzeugt. Beschleunigung errechnet
sich ja nicht aus dem System in sich, sondern aus dem Bezugssystem,
indem sich der beschleunigte Körper bewegt.
Wenn du also Zeitstempel pro Umdrehung mit einer gleichmässig laufenden
Uhr (Timer) erzeugst, hast du z.B.
1. Umdrehung hat 2 Sekunden gebraucht
2. Umdrehung in einer Sekunde fertig
3. Umdrehung nur noch eine halbe Sekunde , usw.
Mathematiker schrieb:> Mal ganz einfach>> Beschleunigung = Valt-Vneu>> Valt = Umfang / (Zeit1 - Zeit2)> Vneu = Umfang / (Zeit2 - Zeit3)
Mal ganz einfach: nein.
1. Beschleunigung != Differenz zwischen Geschwindigkeiten.
2. v = s / t gilt nur in gleichmäßig bewegten Systemen
Hein schrieb:> 2. v = s / t gilt nur in gleichmäßig bewegten Systemen
Das gilt genauso für ein Punkt auf einer Scheibe. Nur der
Geschwindigkeitsvektor änderst ständig seine Richtung da die Bewegung
nicht geradlinig ist.
Es ist nur einfacher mit Winkelgeschwindigkeit zu rechnen, aber da der
TO noch nicht mal mit der einfachen Formel zurechtkommt, macht es wenig
Sinn ihm jetzt Winkelgeschwindigkeit und Winkelbeschleunigung
verklickern zu wollen.
Hein schrieb:> Mal ganz einfach: nein.>> 1. Beschleunigung != Differenz zwischen Geschwindigkeiten.> 2. v = s / t gilt nur in gleichmäßig bewegten Systemen
Der TO will kein Physikpraktikum machen sondern so wie ich das
verstanden habe nur näherungsweise die Geschwindigkeit seiner Scheibe
(ja ich weiß daß es eigentlich eine Winkelgeschwindigkeit ist)
ermitteln, später dann die Beschleunigung. Unter der Annahme, daß die
Änderung innerhalb einer Umdrehung niedrig genug ist kann er sehr wohl
häherungsweise seine mittlere Geschwindigkeit pro Umdrehung mit v =
Pi*d/(t2-t1) rechnen.
Daniel schrieb:> Die erste Geschwindigkeit ist v1=10-0=10; die zweite Geschwindigkeit ist> v2=20-10=10, die dritte Geschwindigkeit ist v3=35-20=15>> Die Zeiten:> t1=20-10=10> t2=35-20=15>> a1=v2-v1/t1)=10-10/(10)=0> a2=v3-v2/t2=15-10/15=1/3>
warum hast dreimal die Differenz der Geshwindigkeit genommen aber nicht
dreimal die Differenz der Zeiten ? zeichne dir die Diagramme dazu auf,
Weg-Zeit, Geschwindigkeit-Zeit und Beschleunigung-Zeit. ich habs mal
eben schnell gemacht...
ach ja und die direkte Umrechnung zwischen Translation und Rotation ist:
Weg x = r * phi zurück gelegter Winkel in rad
Geschwindigkeit v = r * omega Winkelgeschwindigkeit in rad
Beschleunigung a = r * alpha Winkelbeschleunigung in rad
wie mein Vorredner schon sagte, der Betrag bleibt gleich nur die
Richtung ändert sich
siehe Bild rechts oben
http://de.wikipedia.org/wiki/Winkelgeschwindigkeit