-         

Ergebnis 1 bis 8 von 8

Thema: Wert umwandeln

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.07.2006
    Alter
    34
    Beiträge
    53

    Wert umwandeln

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2004
    Ort
    Nürnberg
    Alter
    33
    Beiträge
    26
    Ich habe zwar noch nicht verstanden in welchem zusammenhang die werte zueinander stehen sollen, aber invertieren kannst du sie sehr einfach:

    WertPwm = 1000 - A

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569

    Re: Wert umwandeln

    Zitat Zitat von Otti20vt
    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
    Kommt auf den Standpunkt an. Von der Geschwindigkeit ist das natürlich wesentlich effektiver als jeder Allgo
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.07.2006
    Alter
    34
    Beiträge
    53

    Umrechnungs Funktion

    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.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken umrechnungs_funktion.jpg  

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    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

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    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?

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    09.07.2006
    Alter
    34
    Beiträge
    53
    coCO Danke erstmal für deine mühe, ich werde mir deine Berechnungen heute abend nochmals anschauen, soweit eigentlich auch Logisch

    Danke

    Zitat Zitat von coCo

    PS: Mit welchem Programm hast du das Diagramm gemacht?

    Mit dem Paint welches zu Windoze dazu gehört

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •