Hi,
wenn du weißt wie man alle Werte für die Tabelle ausrechnen kann, dürfte es doch kein Problem sein einen Algorithmus zu schreiben, der dir die Werte berechnet.
MfG
Hossa!
Nach etwa 2h Suchen, kämpfe ich immer noch mit Folgendem Problem.
Ich habe einen Wert "A" von 0 - 1000 jetzt möchte ich einer 10Bit PWM diesen wert zuweisen, soweit kein Problem Aber das ganze soll genau anders rum sein und nicht Linear.
A = 0 dann soll die PWM = 1000 sein
A = 1000 dann PWM = 0
Aber wenn A = 200 soll PWM = 600 und nicht 800
oder A = 800 PWM = 400 und nicht 200 [-X
Gibts dafür keine Funktion? und zwar so eine Funktion, welche die werte dazwischen selber berechnet?
Ich könnte natürlich selber eine Tabelle schreiben, aber dann müsste ich 1000 werte eingeben, und das ist wohl alles andere als effektiv
Vielen Dank schonMal
Hi,
wenn du weißt wie man alle Werte für die Tabelle ausrechnen kann, dürfte es doch kein Problem sein einen Algorithmus zu schreiben, der dir die Werte berechnet.
MfG
Ich habe zwar noch nicht verstanden in welchem zusammenhang die werte zueinander stehen sollen, aber invertieren kannst du sie sehr einfach:
WertPwm = 1000 - A
Kommt auf den Standpunkt an. Von der Geschwindigkeit ist das natürlich wesentlich effektiver als jeder AllgoZitat von Otti20vt
Grundregeln des Forenpostings:
1. Nutze niemals die Suchfunktion!
2. Überprüfe niemals die Topics nach Ähnlichkeiten!
3. Schreibe alles in hellgelb!
Ich hab mal eine kleine Skizze gemacht wie ich das meine. Ich möchte einfach 4 Werte vorgeben wie oben genannt, und der µC soll sich die werte dazwischen selber errechnen.
Hi,
das is doch nich so schwer. Du musst einfach für die 4 Geraden jeweils die Gleichung ausrechnen. Die Steigung berechnest du einfach mit PWM_Wert/A.
Zum Beispiel übergibst du der Funktion folgende 4 Werte:
(1) PWM_Wert = 0 -> A = 1000
(2) PWM_Wert = 400 -> A = 800
(3) PWM_Wert = 500 -> A = 500
(4) PWM_Wert = 1000 -> A = 0
Also die werte aus deinem Beispiel.
Die Gerade von Punkt (1) nach (2) berechnet sich also so:
y = m*x+c
wobei m sich ausrechnet in dem du die Differenz von PWM_Wert von (2) und (1) durch die Differenz von A von (1) und (2):
y = ((400-0)/(1000-800))*x+0
-> y = 2*x
Damit hast du die Gleichung für den ersten Abschnitt und kannst alle restlichen Werte berechnen. Für die restlichen Abschnitte genauso die Gleichungen ausrechnen. Abschnitt 2 (von Punkt (2) nach (3)) zum Beispiel:
y = m*x+c
y = ((500-400)/(800-500))*x+400
-> y = 1/3*x+400
x ist A und y ist PWM_Wert.
Hoffe, dass es so stimmt und es dir weiterhilft.
MfG
EDIT: Scheint nicht so ganz zu stimmen, war wohl bissle müde gestern nacht
Hi,
du musst das Koordinatensystem anders machen, sprich der Wert 0 von A ist links unten im Ursprunge und 1000 dann rechts.
Wenn du nun die Geraden einzeichnest erhälst du eine negative Steigung. Die erste Gerade ist also:
y = -2*x+1000
Für die nächsten Geraden ist c unbekannt, weil du nicht genau sagen kannst wo sie die y-Ache schneiden. Aber die Steigung kannst du ausrechnen. Zum Beispiel für Abschnitt 2:
y = -(1/3)*x + c
c kannst du jetzt ganz einfach mit einer Punktprobe ausrechnen. Zum Beispiel mit dem Punkt P (800|400), den du vorher ja weißt:
400 = -(1/3)*800 + c
666,67 = c
Somit ergibt sich für die Gerade folgende Gleichung:
y = -(1/3)*x + 666,67
Jetzt dürfte es stimmen.
MfG
PS: Mit welchem Programm hast du das Diagramm gemacht?
coCO Danke erstmal für deine mühe, ich werde mir deine Berechnungen heute abend nochmals anschauen, soweit eigentlich auch Logisch
Danke
Zitat von coCo
Mit dem Paint welches zu Windoze dazu gehört
Lesezeichen