-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: ADC Wert 0 - 1023 in PWM 0-100 % umrechnen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.04.2005
    Ort
    Minden
    Alter
    32
    Beiträge
    227

    ADC Wert 0 - 1023 in PWM 0-100 % umrechnen

    Anzeige

    Hallo,

    ich habe es hinbekommen eine Spannung von 0 - 5 V mittels Poti an den AVR zu geben und dort in einen Digitalen Wert 0 - 1023 umzuwandeln.

    Diesen Wert gebe ich auf meinem LCD aus. Ich habe aber vor mit diesem Wert die PWM einzustellen was auch kein Problem ist.

    Nur würde ich jetzt gerne die PWM in % auf meinem Display anzeigen.
    Ich komme aber mit der Umrechnung nicht klar. Wenn möglich würde ich sogar am liebsten mit einer nachkommastelle ausgeben.

    Ich hoffe ihr könnt mir da auch die Sprünge helfen.

    gruß ceekay

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    ? die 1023 verhalten sich zum aktuellen Wert wie 100 % zu deinen Anzeigewert. Einmal umdrehen hiesse
    Prozent = (100 * Meßwert) / 1023
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.04.2005
    Ort
    Minden
    Alter
    32
    Beiträge
    227
    hallo,

    vielen dank ertsmal.

    ich hab das jetzt ungefähr so gemacht:

    long int pwm_wert;
    int adc_wert;

    pwm_wert = (100 * adc_wert) / 1023;

    Die Variable pwm_wert muss ein long int sein, oder? Da bei der Berechnung ja als Zwischenergebnis eine Zahl größer 16 Bit rauskommt.

    wie kann ich nun die Variable pwm_wert wieder in einen Integer packen?

    gruß ceekay

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2004
    Beiträge
    27
    hi,

    die variable pwm wert muss nicht long int sein, nur solltest du vielleicht dazwischen einen kurzen cast angeben
    anstatt 1023 müsste es ja eigentlich 1024 sein, da es 1024 und nicht 1023 stufen sind.
    / 1024 lässt sich auch besser als >> 10 schreiben.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.04.2005
    Ort
    Minden
    Alter
    32
    Beiträge
    227
    wie meinst du das mit einem kurzen cast?

    gruß ceekay

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    @Nollsen: sein maximaler Meßwert sind 1023, und der soll glatt 100% darstellen. Nehm ich 1024, krieg' ich
    Prozent = (100 * 1023) / 1024
    und das sind offensichtlich keine 100

    Du hast zwar 1024 ZAHLEN aber nur 1023 Meßstücke, das ist das zwischen den Zahlen

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2004
    Beiträge
    27
    hm, das ist eine abweichung von einem promille,
    und die division spart ein paar hundert anweisungen,
    entspricht dann eigentlich
    wert 0 = 0,0000V
    wert 1023 = 5,0000V?

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Is eh nur theoretisch. Praktisch (für MEINEN privaten Anzeigebedarf) tät ich einfach durch zehn dividieren. Dreh einmal ein Poti 1/100 des Weges und dann stell noch eine Dezimale ein. Und dann muß der Motor noch drauf reagieren. Der reagiert stärker auf allles andere rundherum
    Wie gesagt: IMHO, meine persönliche Meinung
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.04.2005
    Ort
    Minden
    Alter
    32
    Beiträge
    227
    wert 0 = 0 V
    wert 1023 = 5 V
    ja

    wie meintest du das jetzt mit dem cast ich krieg da nur komische werte raus. was muss ich denn noch beachten?

    gruß ceekay

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Komputer und Kompiler sind von Geburt an schwachsinnig. Man muß oft alles genau erklären:
    pwm_wert = (int)(((long int)100 * (long int)adc_wert) / (long int)1023);
    Dann hat er keine ausrede mehr.

    ("C" kommt von "casten", "C++" von "noch mehr casten")
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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