|
---|
Hallo liebe Leute, ich habe einen Motor, der soll sich mal drehen und dabei die Kurve einer Beschleunigung nachahmen. Ich lasse etwas aus sagen wir 50cm Höhe auf einen Tisch fallen, und während des Falls soll eine Kamera den Gegenstand fokussieren. Die Kamera ist senkrecht zur Tischplatte montiert und bewegt sich nicht. Anfangs ist der Gegenstand scharf, der Tisch völlig unscharf. Gegenstand fällt, Fokus zieht mit, beim Auftreffen sind Tisch und Gegenstand scharf. Das Objektiv wird durch einen Schrittmotor gedreht ist rpm. Ich kenne die Anzahl der Schritte, die der Motor machen muss, damit der Fokus von 0cm auf 50cm Entfernung gezogen wird, sagen wir iSteps=100. Ich möchte nun einzelne Schritte mit dem Motor machen und dann eine Verzögerung einbauen, so dass die Beschleunigung nachgeahmt wird. Mir ist natürlich klar, dass da die Übersetzung, Umfang des Objektivs etc. eine Rolle spielen, aber das lässt sich ja dann vielleicht über eine Konstante KONSTANTE] einbringen? Was ich erstmal brauche ist eine Abbildung der realen Beschleunigung in die Geschwindigkeit des Motors. Nach Wikipedia lässt sich Beschleunigung mit dem Weg . je Zeiteinheit beschreiben. Wie mache ich das nun? Der Code wäre ungefähr so: for(int i=0;i<iSteps;i++) motor.step(1,FORWARD); Delay(GESUCHTER WERT]); Delay(KONSTANTE]); Wer kann mir helfen? Ich habe, als ich Mathe hätte lernen sollen, mit Mädchen rumgemacht. Das war zwar schön, hilft mir jetzt aber nicht weiter. Vielen Dank! Gruß! Martin Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich bräuchte bitte einen kompletten Lösungsweg." (setzt voraus, dass der Fragesteller alle seine Lösungsversuche zur Frage hinzufügt und sich aktiv an der Problemlösung beteiligt.) |
|
Hallo Du wirst dir zwei Dinge klar machen müssen: Du beschreibst einen freien Fall (wir wollen mal annehmen, dass Luftwiderstand keine wesentliche Rolle spielt.). Das ist ein parabolischer Zusammenhang: In deinem Fall wird gelten: Ausgangshöhe: cm Gravitationskonstante: Kamera-Fokusierung: Du beschreibst zwar die Fokusierung im Ausgangszustand und im Endzustand Tischplatten-Höhe, nicht aber den Verlauf dazwischen. Du wirst - um das mathematisch sinngemäß umsetzen zu wollen - sicherlich den Funktionsverlauf der Fokusierung über die bedenkliche Fallhöhe verstehen und nutzen müssen, also: welche Fokusierung in Schrittmotor-Schritten du . bei cm cm cm cm cm Tischplattenhöhe hast. Das wird vermutlich alles andere als linear sein. Gegebenenfalls wirst du vielleicht am leichtesten tun, dies mal statisch auszuprobieren. Mit dieser Kenntnis kannst du, ggf. mit unserer Unterstützung, dann leicht den Zusammenhang zwischen Fall-Zeit und Schrittmotor-Schrittvorgabe ermitteln... |
|
Ach Mensch, ja klar, daran hatte ich noch nicht gedacht: das Objektiv hat intern vermutlich auch noch eine Art Funktion. Vielleicht jedenfalls. Also jedenfalls werde ich versuchen, mal die Schrittmotor-Steps für jeweils cm zu ermitteln. Das kann man ja gut in eine Kurve packen, da sieht man es dann ja. Hmmmm, dass macht das natürlich noch komplizierter, wenn die Funktion für jedes Objektiv bei ermittelt werden muss... |
|
Hallo N8Eule, vielen Dank für deine Antwort. Ich habe jetzt dreimalig die Steps gemessen. Ich habe einen Zollstock auf den Tisch gelegt and dann einen Holzklotz mit Text zum besseren Fokussieren an den cm-Markierungen positioniert, dann gemessen, wie viele Steps ich zur jeweils nächsten Markierung brauche. Daraus habe ich dann rückgerechnet, wie viele Steps ich von 0 bis zur Markierung gebraucht hätte. Das ist dann in einem Diagramm zu sehen. Das ganze sieht ziemlich linear aus, es scheint einen kleinen Knick in der Mitte zu geben, aber ich denke, das kann man vernachlässigen. Im Anhang die Messreihen und das Diagramm! Noch einmal ganz herzlichen Dank! Martin |
|
Linear sieht das für mich nicht aus und der "Knick" kommt eher daher, dass du in Excel das Diagramm falsch angelegt hast. Auf der waagrechten Achse sollte man die Entfernung sehen und nicht die Nummer des Messwerts. Die Achse sollte also von 1 bis laufen und nicht von 1 bis . Es gibt unendlich viele Möglichkeiten, eine einigermaßen gut passende Funktion durch diesen Punkthaufen zu legen. Eine relative einfache ist einem Modell zum beschränkten Wachstum entnommen: |
|
Vielen Dank! Ohje, dass mir das nicht aufgefallen ist! Die Anzahl der Messpunkte auf der Achse ist natürlich völliger Humbug, so viel Mathe habe ich denn doch noch intus. Man sieht es ja schon an den Werten, dass das nicht linear ist, vor allem an den Werten . Dass das passiert ist, liegt einfach daran, dass ich das alles mitten in der Nacht gemacht habe. Trotzdem peinlich. Ok, die Wachstumskurve, wo kommt die her? Wo die Werte? Und wie nutze ich das jetzt in einem Code, ich meine, wie komme ich nun zu den passenden Delays? for(int i=0;i<iSteps;i++) motor.step(1,FORWARD); delayMicroseconds(GESUCHTER WERT]); Nochmal vielen Dank! |
|
Hmmm, die Sache wird noch komplizierter, als ich dachte. Da das Objektiv ja nicht linear reagiert, ist es ja auch noch wichtig, von wo aus der Fall beginnt. Der soll nämlich nicht immer bei 0cm beginnen. Ich habe jetzt mal eine Tabelle in Excel angelegt, ich glaube, ich bin da jetzt wirklich schon ein gutes Stück weiter, dank eurer Hilfe! Ich habe die Wachstumsformel nun auf die Entfernungen angewandt, so habe ich zumindest die Zeiten, an denen der Motor Steps gemacht haben müsste. Hier ist die Tabelle als Google-Sheet: docs.google.com/spreadsheets/d/1dHFYicn4x5l4f-0yDIrRTrOwL1DtrOABNVtGdu3bhG0/edit?usp=sharing Mir scheint, dass es nicht möglich sein wird, den Gegenstand aus 0 cm, also aus der Naheinstellgrenze fallen zu lassen, weil der Motor in der Anfangszeit zu viele Steps machen müsste. Oder ich ändere die Übersetzung nochmal. Was haltet ihr davon, mache ich das richtig? |
|
Um Missverständnisse zu vermeiden: Du solltest dir - und dann ggf. uns Lesern - klar machen, wie die Maßstäbe zu verstehen sind. Du sprichst in der ersten Aufgabenbeschreibung von der "Höhe", dann aber von der "Falltiefe". Ist es so, dass wenn die 'Höhe' noch groß ist, die 'Falltiefe' noch gering ist? Dann gälte irgend ein: 50cm - Falltiefe = 50cm Wenn du dir solche Zusammenhänge nicht konsequent klar machst, verstrickst du dich ruck zuck in irgendwelchen Vorzeichen-Fehlern. So - und dann ist es einfach so, dass du eben aus diesen beiden Zusammenhängen die Schritt-Motor-Schrittzahl als Funktion der Fallzeit ermitteln willst - so zumindest verstehen wir den mathematischen Teil der Aufgabe. Du hast: und (dabei nehme ich gerne mal den Vorschlag von Roman): Schrittzahl: stp = (107,147*f)/(f+4,028cm) einsetzen: stp = (107,147*g/2*t^2)/(g/2*t^2+4,028cm) stp = (107,147*981cm/(2*s^2)*t^2)/(981cm/(s^2)/2*t^2+4,028cm) stp ich würd jetzt mit kürzen: stp Here we are, so siehtst du die Motor-Schrittfolge als Funktion der Zeit . Jetzt ahne ich, dass du für deinen Programm-Algorithmus eigentlich umgekehrt die Zeitpunkte für die einzelnen Motor-Schritte haben willst. Also umkehren: stp ganze Gleichung mal Nenner: stp*((t/s)^2+0,008212) stp*(t/s)^2+0,008212*stp ganze Gleichung minus stp*(t/s)^2 : 0,008212*stp stp*(t/s)^2 0,008212*stp = 107,147-stp] ganze Gleichung durch (0,008212*stp)/(107,147-stp) sqrt((0,008212*stp)/(107,147-stp)) So hast du für jeden Motor-Schritt die zugehörige Zeit ab dem Fallenlassen. Prinzipiell begünstigend ist, dass du um die Anfangszeit, wenn die Kamere bzw. der Motor noch schnell nachstellen muss, der Körper noch relativ langsam fällt. |
|
Liebe N8Eule! Super, vielen Dank! Ich verstehe den Unterschied von Höhe und Falltiefe nicht. Wenn ich einen Gegenstand 50cm über einem Tisch loslasse, fällt er 50cm tief. Bei 30cm Höhe nur 30cm. Oder geht es dir um die Entfernung des Objektivs? Ich baue das alles jedenfalls nun auch in das Google Sheet ein, um ehrlich zu sein, ich kann das hier aber nicht wirklich nachvollziehen. Ich tüftele heute Abend noch etwas, aber schon das hier: stp = (107,147*g/2*t^2)/(g/2*t^2+4,028cm) stp = (107,147*981cm/(2*s^2)*t^2)/(981cm/(s^2)/2*t^2+4,028cm) verstehe ich nicht. Wo kommt s her? Die Stelle mit dem Kürzen kann ich auch nicht nachvollziehen, gleiche Teiler und Nenner kann man doch einfach rausnehmen, nicht wahr? Wenn das so ist, warum verwandeln sich die 4,028 plötzlich in 0,008212? Ich habe es wohl aber geschafft, die letztendliche Formel sqrt((0,008212*stp)/(107,147-stp)) s=t in Excel einzugeben, ich erhalte - so scheint es mir - plausible Resultate. Selbst wenn ich nun vielleicht hätte, was ich brauche, wäre es mir trotzdem sehr lieb, wenn ich zumindest verstehen könnte, wie nun erstens Roman zu seiner Kurve kam und was ich machen muss, wenn ich ein anderes Objektiv an die Kamera schraube. Hier meine Werte aus dem Sheet, ob die wohl stimmen? Vielen Dank! Schritt / Zeit 1 / 0,008795704 2 / 0,012498015 3 / 0,015380191 4 / 0,017845395 5 / 0,020049182 6 / 0,02207108 7 / 0,023958218 8 / 0,025741253 9 / 0,02744146 10 / 0,029074334 11 / 0,030651586 12 / 0,032182334 13 / 0,03367386 14 / 0,035132095 15 / 0,036561963 16 / 0,037967611 17 / 0,039352587 18 / 0,040719961 19 / 0,042072421 20 / 0,043412345 21 / 0,04474186 22 / 0,046062885 23 / 0,047377165 24 / 0,048686303 25 / 0,049991782 26 / 0,051294985 27 / 0,052597211 28 / 0,053899689 29 / 0,055203589 30 / 0,056510035 31 / 0,057820111 32 / 0,059134869 33 / 0,060455337 34 / 0,061782527 35 / 0,063117437 36 / 0,064461057 37 / 0,065814378 38 / 0,067178391 39 / 0,068554095 40 / 0,069942501 41 / 0,071344635 42 / 0,072761544 43 / 0,074194297 44 / 0,075643993 45 / 0,077111765 46 / 0,078598781 47 / 0,080106252 48 / 0,081635438 49 / 0,08318765 50 / 0,084764256 51 / 0,086366691 52 / 0,087996459 53 / 0,089655143 54 / 0,09134441 55 / 0,093066022 56 / 0,094821845 57 / 0,096613857 58 / 0,098444161 59 / 0,100314996 60 / 0,102228753 61 / 0,104187988 62 / 0,10619544 63 / 0,108254048 64 / 0,110366979 65 / 0,112537643 66 / 0,114769727 67 / 0,117067225 68 / 0,119434469 69 / 0,121876176 70 / 0,12439749 71 / 0,127004034 72 / 0,129701975 73 / 0,132498092 74 / 0,13539986 75 / 0,138415548 76 / 0,141554329 77 / 0,144826416 78 / 0,14824322 79 / 0,151817543 80 / 0,1555638 81 / 0,159498296 82 / 0,163639561 83 / 0,16800876 84 / 0,172630194 85 / 0,177531932 86 / 0,182746603 87 / 0,188312394 88 / 0,194274338 89 / 0,200685989 90 / 0,207611617 91 / 0,215129141 92 / 0,223334117 93 / 0,232345234 94 / 0,24231208 95 / 0,253426343 96 / 0,265938421 97 / 0,280182823 98 / 0,296618455 99 / 0,315895333 100 / 0,338971027 101 / 0,367327591 102 / 0,403410755 103 / 0,451623014 104 / 0,520946073 105 / 0,633728294 106 / 0,871155522 107 / 2,44488081 |
|
"Ich verstehe den Unterschied von Höhe und Falltiefe nicht." Wie ich schon geschrieben habe, ist es die Frage, ob die 'Höhe' groß ist, wenn die Falltiefe gering ist. In anderen Worten: Wächst die Falltiefe, wenn die Höhe schrumpft? Oder nochmals in anderen Worten: es geht um's Vorzeichen. Du musst dir (und ggf. uns) schon klar machen, in welche Richtung du eine 'Höhe' oder 'Tiefe' misst, sonst hast du eben dieses VorzeichenProblem... "Wo kommt her?" ist die Einheit 'Sekunde'. "Die Stelle mit dem Kürzen kann ich auch nicht nachvollziehen, gleiche Teiler und Nenner kann man doch einfach rausnehmen, nicht wahr?" Rausnehmen tut man eben in der Mathematik nichts. Kürzen heisst, Zähler und Nenner durch den selben Ausdruck teilen. Und was kommt raus, wenn du durch teilst? |
|
Zu deiner Frage, wie ich auf die Funktionsgleichung kam: Zuerst steht die Idee, welche Art von Funktion man für die Anpassung für geeignet hält. Dass der Graph dieser Funktion eine waagrechte Asymptote bei oder über ca. haben sollte, war klar. Das entspricht dann der Unendlich-Stellung des Objektivs. Der Erstversuch war eine verallgemeinerte Hyperbel weil ich der Meinung war, dass der Graph bei eine senkrechte Asymptote haben sollte. Das Ergebnis hat mich aber nicht sonderlich überzeugt . Dann ließ ich die Forderung nach der senkrechten Asymptote fallen und kam damit rasch auf die Idee, die Sache mit simplem begrenzten Wachstum zu modellieren. Da gibt es im einfachsten Fall nur die zwei Parameter a und was einen Fit normalerweise eher erschwert, aber das Ergebnis hat optisch recht gut gepasst und diese einfache Funktion ist auch sehr leicht umzukehren, was in deinem Fall ja nötig ist. Daher hab ich auch nicht weiter rummodelliert. Die konkrete Umsetzung der Regression überließ ich einem Mathe-Programm (siehe Bild). "entfernungen" ist da ein Vektor mit den Entfernungen vom Ojektiv, entsprechend deiner Messungen und "steps" ist der zugehörige Vektor mit deinen step-Werten. Der Vektor gibt die (relativ beliebigen) Anfangswerte für a und für den numerischen Algorithmus (Levenberg-Marquardt) an, welcher dann programmintern in der generischen Fit-Funktion "genfit" zur Anwendung kommt. Da ich solche Dinge nur sehr ungern und damit eigentlich nie in Excel mache, weiß ich nicht, ob man dort Regressionen auch mit selbst gewählter Funktionsbauart durchführen kann, oder ob man nur auf die vorgegebene Funktionstypen (linear, exponentiell, logarithmisch, beeschränkt ist. Deine Werte habe ich mir nicht näher angesehen, aber falls sie richtig sind, geben sie ja nur die Zeit ab loslassen des Objekts an, bei welcher das Objektiv mit einer bestimmten Stepanzahl das Objekt scharf abbildet. Bis der Befehl umgesetzt ist (Verzögerung durch die Zeit, die der Schleifendurchlauf benötigt, die Signalübertragungszeit, Latenz des Mototors, Stellzeit) ist es auch schon wieder zu spät. Diese Summe der Verzögerungszeiten müsstest du von der Delay-Time bis zum nächsten Step noch subtrahieren. |
|
Eine kleine Ergänzung, weil du gefragt hast, wie die Sache aussieht, wenn das Objekt nicht im Abstand von 0cm vom Objektiv startet. Natürlich ändert sich dann der zeitliche Ablauf ein wenig. Sei die Distanz des Objekts zum Objektiv zum Zeitpunkt mit bezeichnet. Zu diesem Zeitpunkt wird das Objekt losgelassen. Die Distanz zum Objektiv in Abhängigkeit von der Zeit ist dann was nach aufgelöst Gleichung ergibt. Der von mir angegebene Zusammenhang zwischen Step-Anzahl und der Distanz ist, aufgelöst nach der Distanz Gleichung mit und cm. Gleichung eingesetzt in Gleichung liefert dann den benötigten Zusammenhang zwischen Step.Anzahl Initialdistanz und Zeit Im ersten Bild siehst du nun die Zeiten für die ersten Steps, einmal mit cm und einmal mit cm. Für cm scheinen die Werte mit denen übereinzustimmen, die du angegeben hattest. Unterschied sind vermutlich darauf zurückzuführen, dass ich mit den genauen, vom Programm errechneten Werten für a und gearbeitet hatte. Wundere dich nicht, dass in der Spalte für cm die ersten Werte alle nicht-reell sind und der erste reelle Zeit-Wert erst für stp=22 mit ms angegeben ist. Zum Zeitpunkt müsste das Objektiv ja schon auf 1 cm scharf gestellt sein, also bereits Steps gemacht haben (eigentlich aber das geht ja nicht). ms nach dem Loslassen müsste dann ein weiterer Step erfolgen. Eine weitere Anmerkung: Selbst wenn du mit Programm, Signalübertragung, Stellzeit, etc. keinerlei Verzögerung hättest, wäre das Objektiv nur ganz kurzen scharf gestellt, dann entfernt sich das Objekt ja auch schon wieder. Das sieht man im Bild in der oberen Reihe (Gesamtansicht für cm, von 0 bis steps und zwei herausgezoomte Bereiche). Die Idealkurve wäre die in rot eingezeichnete, die entspricht dem bewegten Objekt. Mit dem Schrittmotor ist aber nur die blaue Stufenkurve realisierbar - die Schärfe hinkt also immer hinterher. Es erscheint mir daher sinnvoll, einen Verlauf wie in der zweiten Reihe gezeigt anzustreben. Ich habe hier, wie du im Bild ohnedies siehst, einfach den Stepwert beim Aufruf der Distanzfunktion um erhöht. Auch andere Korrekturen sind denkbar. Die im vorherigen Post angesprochenen Verzögerungen sind natürlich trotzdem in jedem Fall noch zusätzlich zu berücksichtigen. |
|
Hallo N8Eule, hallo Roman! Ganz herzlichen Dank für eure Hilfe! Ich werde versuchen, das nachzuvollziehen, ich gestehe aber, dass ich da echt große Probleme habe. In meinem nächsten Leben steige ich aber sicher mehr ein, das ist superspannend. Allerdings müsste ich im nächsten Leben auch noch Elektrotechnik, Physik und Biologie angehen. :-) Also ihr habt mir auf jeden Fall sehr geholfen, und ich bin ziemlich sicher, dass ich zu Ergebnissen komme. Vielleicht interessiert es euch, warum ich das hier alles erfrage und warum ich euch besonders dankbar bin. Ich habe vor einiger Zeit angefangen, Bullet-Time-Rigs zu bauen, alles selber gelötet, programmiert und bezahlt. Was das macht, könnt ihr hier sehen: rb.gy/jmrjct Nachdem ich die Systeme so schnell gekriegt habe, dass sie direkt nach dem Auslösen der Kameras die Ergebnisse ausspucken, hat sich die Eventindustrie für die Technik interessiert, und so kam es, dass ich immer mehr und dann fast ausschliesslich auf Events unterwegs war. Dann kam Corona und damit Hartz IV. Jetzt muss ich ganz schnell versuchen, was anderes zu machen, dazu gehört einerseits, dass ich die Kamerafelder wieder in Produktionen bekomme, aber auch die Highspeed-Kamera will ich sinnvoll einsetzen. Dafür will ich den Highspeed-Follow-Focus haben. Hier kann man in den ersten drei Takes sehen, was ich erreichen will: www.youtube.com/watch?v=d1vUHJRen2I&feature=youtu.be Ich hatte nun noch eine Idee, wie ich das ganze sogar ganz ohne Mathe realisiert bekomme: Ich stelle einen Zollstock senkrecht hin und lasse daran entlang etwas fallen. Das filme ich mit h der Highspeedkamera, von der Seite, also alles voll im Fokus, die kann in jedem Frame ganz präzise den Zeitpunkt in jeden Frame printen. So kann ich dann genau sehen, wann sich der Gegenstand in welcher Position befand. Damit könnte ich dann vielleicht auch leichtere Objekte wie Federn "fassen", also auch den Luftwiderstand berücksichtigen. Da es ja anscheinend eh nur um max. 107 Steps geht, ist es dann etwas Fleißarbeit, die steps per Handarbeit den Zeitpunkten zuzuordnen, über ein Array. Damit könnte ich vielleicht auch Erfolg haben, wenn ich eure Mathehilfe wider Erwarten nun doch nicht umsetzen kann. Es wäre jedenfalls urnett, wenn ihr doch nochmal prüfen könntet, ob meine Zahlenreihe denn nun richtig ist. Okay, also nochmal ganz herzlichen Dank. Ich werde bei Gelegenheit dann hier nochmal posten, ob ich Erfolg hatte oder nicht. Sonnigen Gruß! Martin |
|
Klingt nach einem interessanten und spannendem Thema. Die Idee mit dem Filmen mit der Highspeed Kamera erspart dir natürlich bei Objekten wie einer Feder die lästige formelmäßige Berücksichtigung des Luftwiderstands. Allerdings wird eine Feder nicht immer gleich fallen, . trial and error sind da vermutlich angesagt. Bei einer Münze zB sollten die Werte aber nicht wesentlich von den berechneten abweichen. Es wäre jedenfalls urnett, wenn ihr doch nochmal prüfen könntet, ob meine Zahlenreihe denn nun richtig ist. Wie schon oben geschrieben stimmen die Werte, die du Uhr, gepostet hast, mit den von mir berechneten Werten für cm überein. Viel Erfolg! |
|
Hallo Roman, hallo Nachteule, nochmal ganz herzlichen Dank! Ich habe die Formel von Roman jetzt in Excel nachgebaut und bin nun auch in der Lage, die Anfangsdistanz zu berücksichtigen. Roman, wirklich super, danke, dass du dir so viel Mühe gemacht hast. Ich habe nun doch vieles verstanden! :-) Die Werte habe ich in ein Array übertragen, der Arduino wartet dann auf ein Startsignal und steuert das Objektiv. Tatsächlich ist das Ergebnis wirklich vielversprechend. Für das Feintunen kann ich ja nun auch noch die ms-Werte der einzelnen Steps anfassen. Ich habe eine Münze aus ca 50cm Höhe fallen lassen. Einmal mit Offenblende, einmal mit möglichst geschlossener Blende. Bei geschlossener Blende musste ich wegen Lichtmangel mit dem Gain der Kamera hoch, deshalb rauscht es. Hier eure Modellierung zum Objektiv #Sigma 24mm und meinem Steppermotor bei fps gefilmt. Bei geschlossener Blende: www.youtube.com/watch?v=ETKset7M8co Bei Offenblende: www.youtube.com/watch?v=jmPXRkdrBFI |
|
Gerade am Beginn bei kleiner Distanz zum Objektiv ist das Ergebnis noch nicht wirklich zufriedenstellend, was bei offener Blende sehr deutlich wird. Bei geschlossener Blende hat man den Eindruck, dass der Fokus immer ein wenig hinterher hinkt. Das könnte vielleicht (abgesehen vom verringern des Delays) durch die Addition von zum aktuellen Stepwert wie im vorher geposteten Bild unten kompensiert werden. |
|
Hallo, ich habe jetzt alles etwas stabiler gebaut, den Abwurfmechanismus verbessert, und siehe da, es passt auf Anhieb. Ohne jede Veränderung, zu genau den berechneten Zeiten. Top! Danke an die Mathematik und euch! Mir scheint allerdings, ich habe ein großes Glück gehabt, dass ich zufällig die Übersetzung richtig gewählt habe. Tatsächlich schafft der Motor anscheinend alles Steps, allerdings nicht mit Microsteps, da ist er dann zu langsam. Eventuell würde ich deshalb gerne das Übersetzungsverhältnis ändern (Motor soll weniger Umdrehungen drehen müssen, dafür aber kleinere Steps machen). Mir wäre es deshalb jetzt wirklich wichtig, den Weg zur Wachstumskurve nachvollziehen zu können. Ich vermute, dass sich die Kurve allgemein für andere Objektive ähnlich modellieren lässt, denn immerhin müssen die ja auch einem Fokus-Puller (also einem Mensch beim Film) genügen, sie dürfen also eigentlich keine "Dellen" haben. Deshalb nochmal meine Frage: Wie genau kommt man zu der Kurve im Diagramm? Also zu den Werten? Was für ein Programm macht das? Ich nehme mal an, dass der letzte Step ist, der gemacht werden muss, um das Objektiv auf Unendlich zu stellen, richtig? Dann kann man ja auch durch Versuch und Fehler finden, also durch Annäherung? Wenn das so ist, dann schaffe ich das eh alleine. Falls es euch interessiert, hier der letzte Test mit halb geschlossener Blende: youtu.be/DpQOvd_6wwU Und hier mein Aufbau zum Ablese-Test des freien Falls: youtu.be/vLZGOxkthDk Der Motor wackelt allerdings noch zu sehr am Stativ, aber das lässt sich leicht beheben. Vielen Dank! |
|
> Deshalb nochmal meine Frage: Wie genau kommt man zu der Kurve im Diagramm? Also zu den Werten? Was für ein Programm macht das? Im Wesentlichen habe ich dir das bereits in meiner Antwort 17:26 Uhr, 21.09.2020 beantwortet. Mehr, als dort im Bild zu sehen ist, musste ich nicht machen (abgesehen von der Definition der Vektoren mit deinen Messdaten). Man legt also zuerst den Fuktionstyp fest (und da gibt es vl auch bessere Ansätze als mein einfaches geben). Und dann wird genfit aufgerufen mit Initialwerten für a und b (ich habe 100 und 1 gewählt) und diese Funktion spuckt dann das Ergebnis aus, wie du im Bild siehst. Jetzt musst du aber deswegen nicht loslaufen und dir das Programm kaufen. Excel kann zwar, wie ich mittlerweile nachgesehen habe, tatsächlich nur ein paar vorgefertige Funktionstypen mit seinem Regressionsmodul abarbeiten und das ist daher für den Zweck untauglich. Aber Excel liefert ja auch noch den "Solver" und bietet damit genau so ein numerisches Verfahren wie wir es benötigen. Man muss die Aufgabe halt ein wenig für Excel aufbereiten. Ich arbeite zwar kaum mit Excel, aber ich war neugierig und es hat auf Anhieb geklappt. Du siehst das Ergebnis im beigefügten Bild. In C3:C4 stehen die Werte für a und b. Das Bild zeigt bereits die vom Solver gefundenen Werte. Ursprünglich hatte ich dort einfach 100 und 1 eingetragen. Die ersten vier Spalten (Entfernungen, Steps 1 bis Steps 3) sind deine Messdaten. In Spalte E wird der Mittelwert von Spalte B bis D berechnet. In E8 steht also zB "=MITTELWERT(B8:-D)8)" In Spalte F steht der Funktionswert. Hier versteckt sich also der Funktionstyp. In F8 steht also zB "=(C4+A8)" entsprechend der Funktion f(x)=(a*x)/(b+x) In Spalte G steht das Quadrat der Differenz des Funktionswert zum Messwert (also hier zum Mittelwert der drei Messwerte bei der gleichen Entfernung). In G8 steht also zB "=(F8-E8)^2" In G26 steht dann die Summe aller Abweichungsquadrate, also "=SUMME(G8:G25)" So, damit ist alles für den Solver vorbereitet. Du findest ihn im Daten-Ribbon unter Analyse. Als Zielzelle wählt man natürlich 26, die veränderbaren Zellen sind 3:4. Das Ziel ist "Min.", den die Abweichungen sollen ja möglichst gering sein. Nebenbedingungen (wie zB 3>105) sind nicht nötig. Der Algorithmus ist vermutlich schon auf GRG-Nichtlinear eingestellt und so bleibt nur noch der Klick auf "Lösen". Excel trägt dann die errechneten Werten anstelle der eingetragenen Initialwerte in 3:4 ein. Gutes Gelingen! P.S.: Eine letzte Anmerkung noch. Da für deine Aufgabe letztlich ja die Umkehrung der Funktion benötigt wird, wäre es vermutlich vernünftiger, gleich die Umkehrfunktion zu suchen. Also die Stepwerte in die Funktion einsetzen und das Ergebnis ist die Entfernung vom Objektiv. Also quasi gleich x und y vertauschen. Dadurch könnte man dann auch kompliziertere Funktionstypen durchprobieren, da man ja nun nicht mehr die Umkehrfunktion bilden muss. Wär vl einen Versuch Wert. |
|
Hallo Roman! Vielen Dank! Sag, würdest du mir wohl dein Excel-Sheet schicken? Habe dir eine PN geschickt. Wäre echt nett. Ich habe jetzt den Motor auf Micro-Stepping umgestellt, nun ruckelt er nicht mehr wie wild am Stativ. Allerdings sind es jetzt Schritte, und in der Mitte der Fallhöhe kommt der Motor an seine Grenzen. Ich werde deshalb den Durchmesser der Riemenscheibe etwas vergrößern, das ist dann ein Kompromiss. Aber es müssen eben jedes Mal die Werte neu gerechnet werden. Für jetzt hatte ich einfach die fehlenden interpoliert. Gruß und Danke! |
|
Die Datei sollte eigentlich recht einfach nachzubasteln sein, denn mehr als ich vorhin beschrieben habe ist nicht dran. Du kannst die Datei hier downloaden (weiß nicht, wie lange die dort vorgehalten wird) workupload.com/file/ggwYYaL56RJ Ich habe wieder die Initialwerte 100 und 1 für a und b eingetragen, damit du gleich mit dem Solver loslegen kannst. Dort ist nicht viel einzustellen - einfach auf "Lösen" klicken (siehe Bild) und dann die Lösung akzeptieren. P.S.: Ich erinnere mich nur mehr vage, aber ich glaube, dass der Solver bei der Standardinstallation nicht automatisch mitinstalliert wird. Sollte ich mich da richtig erinnern, muss man den Solver eben als Add-In nachinstallieren. support.microsoft.com/de-de/office/herunterladen-des-solver-add-ins-in-excel-612926fc-d53b-46b4-872c-e24772f078ca Falls das dann trotzdem nicht funkt, liegts vl daran, dass man in Excel ActiveX aktivieren muss (Datei -> Optionen -> Trust Center) |
|
Oh Mann! Echt super! Also falls hier irgendwann mal im Jahr über diesen Thread stolpert und die Excel-Datei will: Ich habe sie. Einfach melden. Top! |
|
Hier ist ein Excelsheet, bei dem ich auf einem zweiten Tabellenblatt die Daten einfach untereinander kopiert habe. Dadurch entfällt die Berechnung des Mittelwerts der Stepwerte und du könntest auf diese Weise auch Messreihen verwenden, bei denen du nicht jedesmal bei der gleichen Distanz misst. Man könnte bei diesem Ansatz auch die Messwerte in einem bestimmten Bereich vervielfachen, sodass der Algorithmus diesen Bereich dann favorisiert und das Ergebnis besonders gut an diesen Bereich anpasst. workupload.com/file/vvePztzeSgy |
|
Roman, vielen Dank. Da kommt noch einiges auf mich zu, die neuen Zahnriemenscheiben sind noch nicht da, aber ich freue mich schon drauf, das alles dann einzubauen. Sag, wenn das dein Projekt wäre, hättest du eine Präferenz der Messung? Vor allem jetzt, da klar ist, welcher Art die Kurve ist? Wie würdest du das angehen? |
|
Präferenz der Messung? Ich würde in dem Entfernungsbereich mehr Messwerte anpeilen, in dem beim praktischen Versuch vl. doch noch Ungenauigkeiten zu erkennen sind. Außerdem würde ich nicht so weit gehen, zu sagen, dass klar ist, von welcher Art die Kurve ist. Wir haben nur für dieses eine Objektiv einen Funktionstyp gefunden, der ganz gut zu passen scheint und hoffen, dass das auch auf andere Objektive umlegbar ist. Wie schon früher geschrieben war es nur mein zweiter Versuch einer Anpassung. Genaueres könnten vielleicht Spezialisten in Sachen Optik liefern, wenn man Information darüber hätte, welche Verschiebung des Linsensystems eine Drehung am Schärfering um 1° zB bewirkt und welche Auswirkung das auf den Schärfepunkt hat. Das könnte man vermutlich in eine mathematische Formel gießen. Da moderne Objektive aber recht komplex sind, wirds nicht so wirklich einfach sein, schätze ich. Generell tut man sich beim Kurvenfit immer leichter, wenn man weiß, welche mathematische Gesetzmäßigkeit dem Vorgang zugrunde liegt, als wenn man so wie hier im Trüben fischen muss und letztlich nur optisch oder aufgrund der Summe der Fehlerquadrate entscheiden kann. Ich würde bei neuen Objektiven und neuen Messungen jedenfalls in einem Plot prüfen, ob die gefundene Regressionskurve zumindest optisch gut zu den Messpunkten passt oder ob sie in irgend einem Bereich vl zu sehr davon abweicht. Ich denke, dass vor allem Abweichungen bei kleine Entfernungen kritischer zu betrachten sind, weswegen ich vorhin auch meinte, dass man die Messwerte in diesem Bereich stärker gewichten könnte, indem man sie einfach mehrfach reinkopiert. Bei dem zweiten Blatt sollte das problemlos möglich sein. Ich hab das mal ausprobiert und habe für jede deiner drei Messserien die 5 Werte für die Bereiche von 1cm bis 5cm noch viermal hinten drangehängt, hab also noch Werte hinzugefügt. Jetzt wird (zumindest theoretisch) der Anfangsbereich besser an die Messwerte angepasst. Wie du dem Screenshot entnehmen kannst, sind die Änderungen an den Werten aber nur marginal erst ab der zweiten/dritten Nachkommastelle (die Zahlen rechts im blauen Feld sind die von vorhin). |
|
Hallo Roman, ich habe es tatsächlich geschafft, den Solver zu nutzen. Nachdem ich erst an gefühlten vier Ecken Häkchen setzen musste, damit die Analysetools überhaupt erscheinen. Das Prinzip der Gewichtung der Werte verstehe ich, wobei ich allerdings denke, dass eine derartige Präzision mit meinem Aufbau eh nicht erreicht wird. Ich finde keine Informationen darüber, welcher Art die response von Objektiven ist, wenn man am Stellring dreht. Ich könnte mir schon vorstellen, dass es ein Ziel eines Objektivdesigns ist, da eine "zugängliche" Kurve zu bekommen. Sonst würde das Fokussieren ja schwierig, oder? Sobald die neue Zahnriemenscheibe da ist, werde ich mein 14mm und mein 50mm auch mal ausmessen. Richtig cool wäre es dann auch noch, wenn ich ein Objekt, das von unten nach oben zur Kamera geschossen wird, während des Herannahens und Entfernens fokussiert bekäme. Eigentlich müsste man die Kurve ja nur rückwärts laufen lassen, nicht wahr? Gruß! Martin |
|
Ich finde keine Informationen darüber, welcher Art die response von Objektiven ist, wenn man am Stellring dreht. Ja, das kann ich mir gut vorstellen und auch, dass man da rasch an die Grenzen stoßen würde, wenn ich mir vor Augen halte, dass Objektive ja und mehr Linsen enthalten können. Ich könnte mir schon vorstellen, dass es ein Ziel eines Objektivdesigns ist, da eine "zugängliche" Kurve zu bekommen. Ich weiß nicht, ob das eine Zielsetzung ist. Wenn, dass eher eine nachrangige. Hauptziel wird es wohl sein, möglichst über einen großen Bereich Verzerrungen und Vignettierungen zu vermeiden, vermute ich. Ich nehme an, dass die Drehung am Enfernungsrad und die dadurch bedingte Verschiebung der Fokussiergruppe im Objektiv linear ist, aber der Einfluss auf die Entfernung des Schärfepunkts ist es sicher nicht. Eigentlich müsste man die Kurve ja nur rückwärts laufen lassen, nicht wahr? Ja, siehe zB de.wikipedia.org/wiki/Wurfparabel#Senkrechter_Wurf Ich habe mich anfangs gefragt, warum du nicht einfach eine Autofokus-Funktion der Kamera nutz- Aber ich nehme an, dass solche SloMo Kameras gar keinen Autofokus haben, da dieser bei den hohen Frameraten vermutlich ohnedies überfordert wäre, oder? |
|
Ja genau, ich glaube, bei Highspeed-Kameras gibt es einen Autofokus grundsätzliche nicht. Soweit ich weiß, haben die Objektive nicht einmal eine elektronische Anbindung, also auch die Blende muss manuell gewählt werden. Ich betreibe den Steppermotor jetzt bei steps pro Umdrehung, statt dadurch wird die Fokussierung weicher und der Motor zerrt nicht mehr so am Stativ. Die Vibrationen sind jetzt weg, es sind nun steps statt . Die fehlenden Werte habe ich jetzt erstmal extrapoliert. Ich muss das Übersetzungsverhältnis jedenfalls ändern, weil der Motor jetzt nicht mehr ganz hinterherkommt, ab ca. 40cm bekomme ich bis zu 10ms failure, bei 70cm holt der Motor dann wieder ein. Sobald die neuen Zahnräder da sind, werde ich die Funktionsfindung nochmal neu durchgehen müssen. Ich will auch ein anderes Objektiv benutzen. |
|
Weil mir Roman hier so sehr geholfen hat, ist es mir nun wirklich gelungen, die ganze Sache perfekt umzusetzen. Nochmals ganz superherzlichen Dank! So sieht es jetzt aus: vimeo.com/465686382 vimeo.com/465686471 vimeo.com/465686204 Nachdem ich nun den Follow-Fokus habe, würde mich natürlich auch noch interessieren, wie man damit nicht nur einen freien Fall, sondern einen Wurf verfolgen könnte. Ich habe nämlich zwischenzeitlich auch eine Wurfmaschine gebaut, und eine Wasserkippautomatik. Alles mit Servomotoren gesteuert, so dass die Aktionen reproduzierbar werden. Hier ist ein erster Test: vimeo.com/464013886 Die Umsetzung für das Mappen auf das Objektiv habe ich ja. Ich kann den Abschusswinkel festlegen und mit der Highspeedkamera die Geschwindigkeit auch sehr exakt messen. Da würde es möglich, auch noch geworfene Objekte mit der Kamera zu verfolgen. Das wäre echt klasse. |
|
Nun, die Formeln für die Parabelbahn beim schiefen Wurf ohne Berücksichtigung des Luftwiderstands sind ja hinlänglich bekannt, zB de.wikipedia.org/wiki/Wurfparabel Was du noch benötigst, um wieder den Zusammenhang zwischen Distanz vom Objektiv und Zeit herzustellen, ist die genaue Position deiner Kamera in Relation zu Abwurfpunkt und Abwurfrichtung. Sonst lässt sich die Distanz zum Objektiv zu einem bestimmten Zeitpunkt ja nicht ermitteln. Legen wir zB ein 3D-Koordinatensystem so fest, dass nach rechts, ausnahmsweise nach oben und nach "vorne" zeigt. Der Abwurfpunkt sei im Ursprung gelegen, die Wurfparabel liege in der xy-Ebene und der Abwurfwinkel sei gegen die positiv orientierte x-Achse gemessen. Wenn die Kameraposition in diesem KS mit festgelegt ist, dann kann die Distanz vom Objektiv für jeden Zeitpunkt (Abwurfzeitpunkt wie folgt berechnet werden: Dabei ist die Abwurfgeschwindigkeit und die Graviatationskonstante . Die Umkehrung, also das Ermitteln der Zeit bei gegebenen Objektivabstand ist hier allerdings problematisch. Zum einen führt das auf eine unangenehme Gleichung vierten Grades, welche man eher lieber nur numerisch lösen wird und dann ist die Lösung natürlich nicht eindeutig (auch wenn man negative Zeiten ausschließt), denn je nach Kameraposition kann das Objekt ja . an bis zu vier verschiedenen Zeitpunkten den gleichen Objektivabstand haben. Die obige Formel ist natürlich auch für den ursprünglich diskutierten Spezialfall des freien Falls gültig. Dort gilt eben und . Damit vereinfacht sich die Formel zum oben angegebenen . |
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|