Beschleunigung von Kugeln auf einer schiefen Bahn messen

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Benutzeravatar
Rito
Beiträge: 167
Registriert: 20 Aug 2013, 22:44

Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Rito » 09 Jan 2016, 21:20

Hallo,

Ich würde gerne mittels ft die Beschleunigung einer Stahlkugel auf einer schiefen Bahn messen und auswerten lassen. Dazu würde ich gerne mehrere Lichtschranken in gleichem Abstand zueinander aufbauen, die von der Kugel passiert wird. Es sollte zu zählen begonnen werden, sobald die erste Lichtschranke passiert wurde. Bei jeder Lichtschranke müsste dann ein weiteres Mal die Zeit gemessen und gespeichert bzw. ausgegeben werden.

Wäre so etwas überhaupt mit einem TXT zu realisieren?

Besitzt der TXT so etwas wie eine Stoppuhr?

Vielen Dank schon mal für eure Ideen!

davidrpf
Beiträge: 252
Registriert: 14 Jul 2015, 14:27
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von davidrpf » 10 Jan 2016, 11:55

Hallo,

zunächst einmal: Ja, der TX(T) besitzt soetwas wie eine Stoppuhr. Bereits in Level 1 (RoboPro) kommt das Zeitelement vor, in Level 3 zusätzlich das Timer-Element. Dieses eignet sich sehr gut, um eine Stoppuhr zu programmieren. Wie dies funktioniert ist in der RoboPro Hilfe sehr gut erklärt.

Sobald ein Stoppuhr Unterprogramm geschrieben ist, kann man sich der tatsächlichen Aufgabestellung widmen: Um die Beschleunigung zu berechnen, benötigt man jeweils Momentangeschwindigkeiten zu den Zeitpunkten t1 unt t2. Über die Formel a = (v2-v1) / (t2-t1) lässt sich die Beschleunigung in der Einheit m/s² errechnen.
Die Momentangeschwindigkeiten kann man annäherungsweise mit einer Lichtschranken ermitteln: Dazu berechnet man die Geschwindigkeit durch das Anwenden der Formel v= s/ t. Man teilt dabei den Weg (d.h. den Durchmesser der Kugel) durch die Verdunklungszeit der Lichtschranke. Theoretisch erhält man dabei eine Durchschnittsgeschwindigkeit in einem sehr kleinen Intervall, praktisch entspricht diese aber nahezu der Momentangeschwindigkeit.

Je nachdem, wie dein Versuchsaufbau aussieht, benötigt man 2 oder 3 Lichtschranken. Falls die Kugel zum Zeitpunkt t1 sich in Ruhelage befindet, kann man für v1 0m/s als Momentangeschwindigkeit nehmen. Die erste Lichtschranke startet die Stoppuhr, d.h. t1 ist ebenfalls 0. Die zweite Lichtschranke stoppt die Uhr, an ihr kann man dann t2 ablesen. Zugleich errechnet man über die Verdunklungszeit an der zweiten Lichtschranke die Momentangeschwindigkeit v2 (wie oben beschrieben). Da v1 und t1 jeweils 0 sind, kann man die Beschleunigung über die Formel a = v2 / t2 berrechnen. Man erhält die Beschleunigung in der Einheit m/s².
Dies gilt jedoch nur für Beweugungen mit konstanter Beschleunigung, da wir von einer linearen t-v Zuordung ausgehen.

Sehr viel Theorie, ich hoffe ich konnte helfen.

mfg
David
Polarkoordinaten Plotter https://youtu.be/u6XwKxZuxqk
Autofabrik: https://youtu.be/mX9JWcca6kQ

Benutzeravatar
laserman
Beiträge: 209
Registriert: 05 Nov 2010, 16:06
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von laserman » 10 Jan 2016, 12:04

Hallo,
hier das Robopro-Programm dazu (rechte Maustaste >> Ziel speichern unter):
http://laserman1974.de/fischertechnik/temp/stoppuhr.rpp

Bild
Viele Grüße, Laserman

Benutzeravatar
Rito
Beiträge: 167
Registriert: 20 Aug 2013, 22:44

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Rito » 10 Jan 2016, 12:09

Ihr seid cool,

ich wollte mich gerade für die ausführliche Antwort bedanken und dass ich mich jetzt in die Hilfe hineingaben werde (was ich jetzt aber dennoch noch tun werde) und dann wird einem gleich das Programm dazu geliefert. Wow! :shock:

Vielen Dank

davidrpf
Beiträge: 252
Registriert: 14 Jul 2015, 14:27
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von davidrpf » 10 Jan 2016, 12:46

@ Laserman

Ich verstehe nicht, wie das Programm die Zeit in der Einheit Millisekunden berechnet. Fehlt nicht bei jedem Schleifendurchlauf nach bzw. vor dem +1 Befehl ein Warteelement von 0,001 Sekunden? So hängt die Zeitberechnung doch stark von der Rechenleistung des Controllers ab...
Polarkoordinaten Plotter https://youtu.be/u6XwKxZuxqk
Autofabrik: https://youtu.be/mX9JWcca6kQ

Benutzeravatar
laserman
Beiträge: 209
Registriert: 05 Nov 2010, 16:06
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von laserman » 10 Jan 2016, 14:29

@ davidrpf
Das ist ein sehr gutes Argument.
Also hinter jede Verzweigung noch 1 mSek. warten einfügen:
Bild
Viele Grüße, Laserman

Benutzeravatar
steffalk
ft:pedia-Herausgeber
Beiträge: 1791
Registriert: 01 Nov 2010, 16:41
Wohnort: Karlsruhe
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von steffalk » 10 Jan 2016, 15:43

Tach auch!

Ich habe zwar weder einen TX noch einen TXT, aber ich gebe zu bedenken, dass das Betriebssystem zu recht beliebigen Zeiten meinen kann, eben mal irgendwas anderes zwischendurch zu machen. Welche Messgenauigkeit man mit einer 1-ms-Pause und simplem Durchzählen erreichen kann, müsste vielleicht mal gegen eine externe, zuverlässige Zeitquelle gemessen werden. Und in der Messung der Beschleunigung sollte dann der Zeit-Messfehler berücksichtigt werden, damit man auch weiß, wie genau denn nun die gemessene bzw. berechnete Beschleunigung überhaupt stimmt.

Gruß,
Stefan

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1831
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Dirk Fox » 10 Jan 2016, 15:47

Hallo Rito,

tatsächlich wäre ich die Umsetzung der von David vorgeschlagenen Lösung etwas anders angegangen.

Zunächst: Timer in Microcontrollern sind in der Regel ungenau - je kleiner die Zeiteinheit, desto größer wirkt sich die durch parallele Tätigkeiten des Systems (Sensoreingangabfrage o.ä.) verursachte Ungenauigkeit aus. Daher sollte ein zeitliches Messintervall möglichst groß gewählt werden. Eine gute Methode, um die die akzeptable Grenze auszutesten, ist, die Messstrecke zunächst groß zu wählen und dann systematisch zu verkleinern (z.B. zu halbieren), und dann zu prüfen, ob die Ergebnisse (Geschwindigkeit) konstant bleiben. Ob eine Lichtschranke und als Strecke die Kugel ausreicht (wie von David vorgeschlagen: Eintritt/Austritt aus der Lichtschranke als Strecke), solltest Du auf diese Weise testen.

Weiter: Für die Messung brauchst Du eine "Uhr". Die kannst Du mit den Timer- oder Warte-Elementen "bauen": Einfach ein paralleles Programm, das in einer Schleife z.B. 0,01 s wartet und dann einen Zähler hochzählt. Die Zählervariable kannst Du dann in Deinem Messprogramm auslesen. Je größer der Warte-Timer, desto genauer die Messung - den Wert solltest Du daher an Deine gewünschte Messgenauigkeit anpassen (je größer, desto größer muss dann auch die Messstrecke sein - sonst ist die Kugel durch, bevor der Zähler weitergezählt hat.)

Das Programm müsste also Folgendes tun:

- Auslesen der Zeitvariable, wenn die Kugel die erste Lichtschranke passiert (t1)
- Auslesen der Zeitvariable, wenn die Kugel die zweite Lichtschranke passiert (oder, nach Davids Vorschlag, die erste Lichtschranke verlässt - falls das nicht zu schnell geht...) (t1')
- Berechnung der Geschwindigkeit v1 = Strecke/(t1'-t1)

Dann machst Du dasselbe an einer anderen Stelle der Bahn zur Bestimmung von v2 zum Zeitpunkt t2.
Alternativ könntest Du auch die Startgeschwindigkeit V0 = 0 zum Zeitpunkt t0 = 0 verwenden; dann musst Du Deine "Uhr" aber gleichzeitig mit der Kugel starten.

Nach der von David angegebenen Formel zur Beschleunigungsberechnung aus den beiden Geschwindigkeiten erhälst Du die durchschnittliche Beschleunigung zwischen t1 und t2 (oder t0 und t1) - beachte, dass die Beschleunigung zwischendrin aufgrund der Reibung und/oder Neigung der Bahn natürlich variieren kann.

Beste Grüße und viel Spaß,
Dirk

Benutzeravatar
H.A.R.R.Y.
Beiträge: 1083
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von H.A.R.R.Y. » 10 Jan 2016, 17:47

Hallo zusammen, Rito,
Dirk Fox hat geschrieben:Zunächst: Timer in Microcontrollern sind in der Regel ungenau
Das kann ich so allgemein nicht stehen lassen. Werden Hardware-Timer verwendet (Input-Capture zum Beispiel) und auch noch von einem Quarztakt versorgt, ist durchaus eine hohe Genauigkeit zu erzielen. Es ist dabei sicherzustellen, daß vor jedem Überlauf mindestens einmal der Timer abgelesen werden kann, noch besser einmal nach jedem Ereignis. Werden Timer jedoch per Software emuliert und dann noch mit nicht echtzeitfähigen Betriebsystemen dargestellt, dann ist Dirks Anemerkung allerdings richtig. Was beim TX odder TXT da so im Angebot ist, weß ich nicht.
Dirk Fox hat geschrieben:Daher sollte ein zeitliches Messintervall möglichst groß gewählt werden.
Das ist grundsätzlich richtig. Beim Auszählen der Zeiteinheiten ist grundsätzlich eine Unsicherheit von +1 Zeiteinheit als Meßfehler anzusetzen. Hat man nur 10 Einheiten abgezählt, sind das schon 10 Prozent des Meßwertes.

Wenn es auch eine Methode ohne Elektronik sein darf:
Am unteren Ende der Rampe wird die Kugel sanft(!) in die Horizontale umgelenkt. Über einen Schanzentisch geht die Kugel in einen waagerechten Wurf über und mittels Metermaß, passendem Know-How und einem Taschenrechner lassen sich auch gute Ergebnisse erzielen. Eine horizontal ausgerichtetes Sandbett kann helfen die Aufprallstelle besser aufzufinden - der Sand sollte dafür feucht bis nass sein sonst springt die Kugel aus dem "Krater" und rollt noch ein Stück weiter.
Know-How: https://de.wikipedia.org/wiki/Waagerechter_Wurf oder Physikbuchj Deines Vertrauens.
Die Anlaufhöhe und Rampenneigung lassen sich auch prima variieren.

Grüße
H.A.R.R.Y.
[42] SURVIVE - or die trying

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1831
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Dirk Fox » 10 Jan 2016, 18:26

Noch ein Nachtrag:

H.A.R.R.Y. hat natürlich Recht mit seiner Anmerkung - gibt es einen Software-Zugang zum Quarz-Takt, hat man einen genauen Timer. Wie schon an anderer Stelle im Forum berichtet, ist der RoboPro-Software-Timer jedoch kein Hardware-Takt. Also sollte die Messstrecke für eine höhere Genauigkeit möglichst groß sein. ABER: Wenn Du die Geschwindigkeit über eine zu große Strecke bestimmst, erhälst Du nicht die Momentangeschwindigkeit im Punkt t1, sondern die Durchschnittsgeschwindigkeit zwischen t1 und t1' - bei Beschleunigung oder Verzögerung auf der Strecke ist das nicht derselbe Wert. Daher sollte die Messstrecke so lang wie (für die Messgenauigkeit) nötig und so kurz wie möglich gewählt werden.

Vielleicht funktioniert auch der folgende Trick, um einen genauerern Takt zu erhalten: Du startest einen Encodermotor im Leerlauf und schließt den Encoder an einen der schnellen Zählereingänge an. Dann liefert der Motor einen externen Takt (unter der Annahme, dass er gleichmäßig läuft), den Du am Zählereingang abfragen kannst. Für die Umrechnung in ms musst Du ihn eine Weile laufen lassen, die Zeit stoppen und daraus den Umrechnungsfaktor bestimmen. Nach einer groben Überschlagsrechnung anhand der Motordaten solltest Du auf ca. 216 Impulse je Sekunde kommen (ein Impuls entspricht also ca. 4,6 ms). Eine nicht sehr feine Auflösung, aber besser als ein 10-ms-Takt (und wahrscheinlich genauer als der RoboPro-1-ms-Timer).

Beste Grüße,
Dirk

ftDirk
Beiträge: 71
Registriert: 28 Okt 2011, 18:28

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von ftDirk » 10 Jan 2016, 20:27

Hallo,
ich bin gerade dabei, zu testen, wie schnell die Controller (TX, TXT) die Programme abzuarbeiten.
Ein Testprogramm "Speedtest" habe ich gerade hochgeladen, es ist aber noch nicht freigeschaltet.

Die Ergebnisse fasse ich schon mal so zusammen:
1. Der TXT führt Programme online fast 5x schneller aus als der TXC
2. Der TXT führt Programme im Download-Modus fast 90x schneller aus als der TXC
3. Der TXT führt Programme im Download-Modus über 11x schneller aus als online
4. Der TXT führt Programme im Download-Modus mit angeschlossener USB-Kamera etwas langsamer
aus als ohne USB-Kamera
5. Der TXC führt Programme im Download-Modus nur mit 2/3 der Online-Geschwindigkeit aus (a)
6. Der TXC führt Programme im RAM etwas schneller aus als im Flash

Anmerkungen:
(a) Sehr stark abhängig von den ausgeführten Befehlen, d.h. nicht allgemeingültig!

Also:
Wenn es um zeitkritische Prozesse geht, muss man genau hinsehen.
Gruß ftDirk

Benutzeravatar
Rito
Beiträge: 167
Registriert: 20 Aug 2013, 22:44

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Rito » 11 Jan 2016, 20:38

Ach herje, also die Physik ist für mich hier nicht das Problem, da bin ich in der Materie drin, doch komme ich einfach mit diesem Programminterface nicht zurecht.

Ich muss euch leider wieder mit einer laienhaften Frage belästigen: Ich programmierte eine Schleife die in 0,01s Schritten hochzählte und speicherte diesen Wert in einer Variablen ab. Beim Passieren der Lichtschranke wollte ich nun den Timer auslesen und anzeigen lassen (Durchschnittsgeschwindigkeit der Teilstücke). Doch da die Schleife immer weiter zählt, werden auch die Ausgaben der einzelnen Ereignisse (Lichtschranke) weiter gezählt. Wie kann man denn diese Variable auslesen, so dass sie sich nicht weiter verändert, sobald die Schleife wieder einmal durchlaufen wird? Die Textfelder sollen den Timer nicht mitzählen sondern lediglich stets das jeweilige Ereignis ausgeben.

Wahrscheinlich ist es ganz einfach, aber hier stehe ich total auf dem Schlauch!

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1831
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Dirk Fox » 12 Jan 2016, 02:35

Hallo Rito,
Rito hat geschrieben:Beim Passieren der Lichtschranke wollte ich nun den Timer auslesen und anzeigen lassen (Durchschnittsgeschwindigkeit der Teilstücke).
einfachster Weg: Wert der Timer-Variablen beim Ereginis (Passieren der Lichtschranke) einer neuen Variablen zuweisen und mit dieser weiterrechnen (bzw. deren Inhalt anzeigen lassen).

Beste Grüße,
Dirk

Benutzeravatar
Rito
Beiträge: 167
Registriert: 20 Aug 2013, 22:44

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Rito » 12 Jan 2016, 17:37

Hallo,

also ich habe für mich mein kleines Problem jetzt so gelöst:

Ich starte den Timer nach dem Durchschreiten der ersten Lichtschranke und füge bei jeder Lichtschranke einam Array einen weiteren Wert des Timers hinzu. Diese Werte kann ich dann entweder auslesen und anzeigen lassen oder in eine CSV-Datei abspeichern. Eigentlich ganz einfach (wenn man die Mechanismen von RoboPro endlich verstanden hat :D )

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1831
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Dirk Fox » 12 Jan 2016, 23:10

Hallo Rito,

genau. So habe ich es auch bei meiner "Radarfalle" im Buch gemacht (Abstandsmessung und Geschwindigkeitsbestimmung mit dem Ultraschallsensor; hilft Dir bei Kugeln aber eher nicht).
Noch ein Trick (von Ralf Hansmann): rollende Kugel fotografieren, Belichtungszeit auslesen, Länge des "Schweifs" auf dem Foto messen = Momentangeschwindigkeit... eine pfiffige Lösung, wenn Dir die Fototransistoren ausgehen ;-)

Gruß, Dirk

davidrpf
Beiträge: 252
Registriert: 14 Jul 2015, 14:27
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von davidrpf » 13 Jan 2016, 16:31

Hallo zusammen,

ich habe einen Versuchsaufbau zum Messen der Beschleunigung von Kugeln auf einer schiefen Bahn gebaut: https://ftcommunity.de/categories.php?cat_id=3181

Dabei habe ich meinen ersten Vorschlag noch etwas überarbeitet. Es werden nun folgende Werte ermittelt:

1. Die Momentangeschwindigkeit v1 kurz nach dem Start der Kugel
2. Die Zeit t , die vergeht, zwischen dem Verlassen der ersten und dem Unterbrechen der zweiten (Laser)lichtschranke
3. Die in diesem Zeitraum zurückgelegte Strecke s

Mit diesen Größen lässt sich ebenfalls die Beschleunigung bestimmen. Folgende Gleichung bestimmt den zurückgelegten Weg in Abhängigkeit der Zeit, der Beschleunigung und der Anfangsgeschwindigkeit: s = 0,5 * a * t² + v0 * t. Da man den Weg s zwischen den Lichtschranken kennt, kann man die Formel nach a umstellen, um die Beschleunigung zu berechen: a = -2*v0 / t + 2s / t².

Mit der Beschleunigung kann man sogar die Endgeschwindigkeit berechnen: https://ftcommunity.de/details.php?image_id=42727

Vorteile von diesem Konzept:
1. Es gibt keine Messungenauigkeit beim Starten, da die erste Momentangeschwindigkeit kurz nach dem Start gemessen wird.
2. Da nur die Momentangeschwindigkeit nach dem Start gemessen wird, ist diese noch nicht so hoch, sprich die zu messende Zeit ist noch nicht zu klein
3. Da das Programm nur relativ große Zeiten messen muss
4. Da mit der konstanten Größe des Wegs gearbeitet wird.

Gruß, David
Polarkoordinaten Plotter https://youtu.be/u6XwKxZuxqk
Autofabrik: https://youtu.be/mX9JWcca6kQ

davidrpf
Beiträge: 252
Registriert: 14 Jul 2015, 14:27
Kontaktdaten:

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von davidrpf » 13 Jan 2016, 16:39

Zusatz:

Das Bestimmen von v1 über die Verdunklungszeit ergibt -physikalisch korrekt ausgedrückt- eine mittlere Geschwindigkeit in einem sehr kleinen Interval, praktisch aber schon eine momentane Geschwindigkeit. Dank Laserdioden als Lichtschranken ist dies ziemlich genau.
Auf einen Taktgeber zur Zeitenbestimmung habe ich verzichtet. Ich werde mal schauen, mit welcher Messtoleranz der Versuchsaufbau arbeitet.

Gruß, David
Polarkoordinaten Plotter https://youtu.be/u6XwKxZuxqk
Autofabrik: https://youtu.be/mX9JWcca6kQ

ThomasW
Beiträge: 183
Registriert: 08 Mär 2012, 15:02
Wohnort: St. Gallen

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von ThomasW » 13 Jan 2016, 16:45

Hallo David

Das ist ja mal eine richtig coole Anwendung...

Bei den Kommentaren zu den Bildern erwähnst du den Kugeldurchmesser.
Soviel ich weiss, haben die Kugeln einen Durchmesser von 12.7 mm, nicht 12.5.

Gruss
Thomas

Benutzeravatar
H.A.R.R.Y.
Beiträge: 1083
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von H.A.R.R.Y. » 14 Jan 2016, 11:44

Na das ist doch mal eine feine Anwendung und ebenso gute Dokumentation. Mir gefällt Dein Projekt sehr gut. Bei der errechneten mittleren Beschleunigung ist allerdings zu bedenken, daß die Flexschienen mit ihrer Mäanderstruktur die Kugeln etwas unkontrolliert hopsen lassen. Die Verhältnisse ändern sich vermutlich mit der Rampenneigung bzw. der Geschwindigkeit der Kugel.

Ich teste den Meßaufbau bei Gelegenheit auch mal an einer Anordnung bei der ich die Verhältnisse bereits genau kenne.
[42] SURVIVE - or die trying

Benutzeravatar
Rito
Beiträge: 167
Registriert: 20 Aug 2013, 22:44

Re: Beschleunigung von Kugeln auf einer schiefen Bahn messen

Beitrag von Rito » 15 Jan 2016, 17:17

Cool was so aus einer unbedarften Frage alles entstehen kann. :P

Seid ihr sicher, dass ihr die Kugel auch tatsächlich über den äußersten Kreis messen könnt? Die Idee mit dem Laser finde ich richtig gut, doch muss er auch genau den "Äquator" der Kugel erreichen, sonst ist's nix mit 12,7 ;)
Ich war jetzt mal ein paar Lichtschranken bestellen. Wenn sie da sind, werde ich auch mein Ergebnis hier dokumentieren.

Antworten