ich möchte eine einstellbare Exponential Funktion, wie bei RC-Sendern üblich, in einem ESP32 programmieren.
Das heisst ein linearer proportionaler Zusammenhang soll ein einstellbarer exponentialer Zusammenhang werden.
Hier ist das sehr gut und ausführlich beschrieben:
Ich habe einen Eingangswertebereich von +/-1023, und der Ausgangswertebereich soll ebenfalls +/-1023 sein.
Ein linearer Zusammenhang bedeutet hier, dass Eingang und Ausgang identisch sind.
Ich brauche nun aber einen einstellbaren exponentialen Zusammenhang.
Das bedeutet, dass die beiden Endwerte und der Wert in der Mitte identisch sind, jedoch kein proportionaler, sondern ein einstelbarer exponentialer Zusammenhang besteht.
Dadurch erreicht man eine feinfühligere Steuerung um den Nullpunkt herum, ohne die Endwerte zu verringern.
Im RC-Modellbaubereich benutzt man diese Funktion dazu, um z.B. Autos oder Rennboote mit hoher Geschwindigkeit präzise geradeaus zu steuern, oder bei Hubschraubern sauber auf der Stelle schweben zu können, da ansonsten kleine Steuereingaben zu zu großen Ausschlägen führen und das Verhalten so zum übersteuern neigt.
Einstelbar soll das ganze sein, damit man das Steuerverhalten an die eigenen Bedürfnisse optimal anpassen kann.
Meine Anwendung hat jetzt nichts mit einer RC-Steuerung zu tun, daher habe ich leider hier nicht die Möglichkeit einfach die Funktion im Sender zu aktivieren.
Das ganze funktioniert positiv wie auch negativ, je nachdem wie herum man die Kurve verbiegt. Das Ergebnis ist dann entweder feinfühliger um die Mitte, oder aggressiver.
Bei den RC Anlagen werden %-Angaben benutzt. z.B. +30% Expo, oder -20% Expo
Die Frage ist: Wie programmiert man das, bzw. welche mathematischen Formeln stehen dahinter?
Das ist ja interessant, ich bin da auch nicht eingeloggt, habe es nur bei google gesucht und den Link kopiert.
Sucht man bei google nach "rc expo funktion" ist das der erste Link, und der funktioniert bei mir ohne login.
Bei dir auch?
Wenn ja, was hab ich an meiner Verlinkung falsch gemacht?
Aus Google heraus funktioniert es. Es ist die gleiche URL, wie in Deinem Beitrag.
Evtl. wertet die Seite den Referer aus und blockt alles, was nicht von ihr selbst oder von google kommt.
Du könntest Wertpaare in eine Excell Tabelle eintragen und dann ein Chart dazu erstellen. In dem Auswahlmenü dazu gibt es die Möglichkeit Regressionskurven berechnen zu lassen. Welcher Typ dazu am besten passt hängt von Deiner Kurve ab. Dazu kann man sich die mathematischen Gleichungen mit angeben lassen.
Die übernimmst du dann in den Sketch um aus den Eingangswerten die Ausgangswerte zu berechnen.
Andere Variante du nutzt im Sketch Wertepaare als Arrays und machst eine lineare Regression zwischen den Werten.
Ich suche eine Formel, keine Wertetabelle mit fertigen unflexiblen Werten.
Das Fahrverhalten wird getestet, und der Expo wert dann angepasst und woeder getestet.
Gesucht ist die Formel mit einstellbarem Expowert mit der ich das zur Laufzeit berechnen kann.
Wie ändere ich bei einem Sinus den Grad der Verstärkung? Siehe post #1 in der extern verlinkten Erklärung.
Gesucht ist eine exponentiale Formel mit einstellbarem Exponenten.
Das hat mit einem Sinus nix zu tun.
Also links x = -1023 y = -1023
Mitte x = 0, y = 0
rechts x = +1023, y = +1023
Wenn der Wert in der Mitte immer noch x = 0 y = 0 haben soll dann geht das mit einer Exponentialfunktion nicht .
Bei einer einzelnen Exponentialfunktion liegt der Punkt in der Mitte x = 0 liegt weiter oben oder weiter unten. Wenn es eine gekrümmte Linie ist und in der Mitte liegt x = 0 y = 0
dann kann einers der beiden Enden nicht auf x = y liegen
x = -1023 kann dann nicht y - 1023 und x = +1023 kann nicht y = +1023 haben.
Das geht nur wenn es zwei Exponentialfunktionen sind.
Die erste von x = -1023 bis x = 0
und
die zweite von x = 0 bis x = +1023
Wenn der Bereich um x = 0 herum entweder steiler oder flacher als y = x verlaufen soll
dann muss bei x = 0 ein Wendepunkt sein.
Wendepunkt heißt aus einer Rechtskurve (links unten) wird ab x = 0 eine Rechtskurve (links oben)
Und eine Exponentialfunktion hat keinen Wendepunkt. Deshalb muss es aus zwei Teilfunktionen zusammengesetzt sein.
Wenn die Exponentialfunktion punktsymmetrisch zu x = 0 verlaufen soll dann geht es vermutlich nicht durch mehrere Summanden.
Das ist mein Mathematikwissen aber am Ende. Das kann ich nicht sicher sagen.
Die Randbedingungen die festehen sind
x = - 1023 y = -1023 x = 0 y = 0
und
x = 0 y = 0 x = +1023 y = 1023
Aus diesen Bedingungen kann man die Parameter a und b für die Funktion y = a * bx ^ x
berechnen. Also google mal nach Exponentialfunktion durch zwei gegebene Punkte.
Möglicherweise ist es aber gar keine Exponentialfunktion im mathematischen Sinne.
Weil Exponentialfunktion ohne Absolutglied die X-Achse überhaupt nicht schneiden.
Möglichweise ist es eine Polynom-Funktion mit höchstem Exponent ungerade
oder zwei quadratische Funktionen wobei die zweite die Punktspiegelung der ersten ist.
Alles noch keine Formel aber Stichworte wonach du suchen kannst.
Hier gibt es einen Onlinerechner für die Koeffizienten von Polynomen dritten Grades.
Damit könnte man sich dann unterschiedlich starke Abweichungen vom linearen Verlauf basteln und aus den x^3-Funktionen entsprechende Wertetabellen erstellen.
Die Zahlen aus den Wertetabellen könnte man dann in Arrays speichern.
Damit hättte man dann eine gewisse Anzahl exponentieller Verläufe bei denen man gewisse Sprünge hat. Ich meine damit die Graphik oben hat 3 Kurven. Sehr grobe Unterteilung
Expo 1
Expo 2
Expo 3
Das kann man natürlich verfeinern
weitere Kurven die dazwischen liegen
Expo 1
Expo 1.25
Expo 1.5
Expo 1.75
Expo 2
Expo 2.25
Expo 2.5
Expo 2.75
Expo 3
Wenn du es unbedingt jeweils berechnen willst dann geben die kubischen Splines und die Erklärung auf der Seite
Hinweise was da an Mathematik dahinter steckt
Zitat Kubische Splines sind Polynome 3. Grades, die jeweils zwischen 2 benachbarten Punkten einer gegebenen Punkteliste eingesetzt werden.
Dabei ist sichergestellt, dass der Verlauf der beiden an einen Punkt angrenzenden Polynome stetig und stetig in der ersten und zweiten Ableitung ist.
Wenn auch die Zahlenwerte der ersten und zweiten Ableitung übereinstimmen dann hat man an den Punkten keine Ecken sondern einen Übergang ohne den geringsten Knick.
Du hättest natürlich gerne eine Library in die du einfach nur einen Zahlenwert eingibst und die library rechnet den Y-Wert aus.
google oder duckduckgo ist immer eine 5-Minuten-Suche Wert
Im RC-Modellbau wird das Expo(nential)-Funktion genannt.
In der Mathematik geht die Exponentialfunktion immer durch den Punkt x=0, y=1
Vielleicht ist das einfach nur eine verschobene Exponentialfunktion? Ich weiss es nicht.
Ich habe mal ein Video von meinem RC-Sender gemacht, der den variablen Kurvenverlauf zeigt.
Allerdings ist mir dabei gerade aufgefallen, dass der nicht ganz korrekt ist, jedenfalls verläuft die Kurve in beiden Extremausprägungen unterschiedlich (nicht spiegelsymmetrisch).
Bei Expo 100 ergibt sich ein Sattelpunkt in 0,0. So ist das korrekt.
Bei Expo -100 ergibt sich keine diagonalachsengespiegelter Sattelpunkt in 0,0. Dafür ergibt sich eine Nullsteigung in beiden Endwerten. Das halte ich nicht für korrekt. Allerdings ist das wohl notwendig, weil der Servo in der Mittelstellung sonst wohl nicht wüsste wo er hin soll.
da geht schon mit einer Exponential-Funktion so einen S-Verlauf hinzubekommen. Stichwort Bakterienwachstum, Hasenpopulation, Pflanzenwachstum,... kommt oft als Schulbeispiel.
Hallo,
darf ich noch mal einfach vor mich hindenken
Wenn ich mir mal nur die Kurve im ersten Quadranten ansehe und dabei immer von einem "Durchhängen" ausgehe erinnert mich der Verlauf an ein belastetes Poti. Der Lineare Verlauf ist das unbelastete Poti. Mit zunehmender Last hängt die Kurve weiter durch. Damit ergibt sich für das Durchhängen eine Abhängigkeit von dem Lastwiderstand den könnte man als Parameter in der Gleichung angeben.
Für die negative Seite musste man halt nur die Vorzeichen tauschen.
Letztlich ist mit nicht klar was die Prozentangabe in der Grafik aus #11 eigentlich bedeutet.
Eigentlich braucht man doch nur eine Kurve, die 100% Expo Kurve.
0% ist der lineare Zusammenhang.
Alles andere dazwischen ist prozentual von der 100% Expo Kurve abgeleitet.