- LiTime Speicher und Akkus         
Ergebnis 1 bis 4 von 4

Thema: Vergleich Single - Byte-Variable

  1. #1
    dl1akp
    Gast

    Vergleich Single - Byte-Variable

    Anzeige

    Powerstation Test
    Hallo Leute,

    habe folgendes Problem mit der Programmierung einer Temp-regelung.
    Der Sollwert ist eine ganzzahlige Byte-Variable, welche im EEPROM gespeichert ist.
    Der Wert aus dem ADC (Single-Variable, Gleitkomma) soll nun mit dieser Zahl verglichen werden. Das geht aber nicht. [-(

    Wie kann ich die Byte-Variable mit der Single-Variable vergleichen?
    Oder muß ich die Byte-Variable umwandeln?

    Hab echt keine Ahnung, bitte helft mir!

    Danke, Andreas

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Der Wert aus dem ADC (sofern Du vom AVR internen ADC sprichst) hat eine 10Bit Auflösung und liefert keinen Single-Wert sondern einen Word-Wert (16-Bit Variable), von welcher aber nur die unteren 10 Bit relevant sind, wertmässig ist dies von 0 bis 1023.
    Beim Vergleichen musst Du daher entweder den Sollwert auch in diesen Werte-Bereich bringen oder den Ist-Wert (ADC) auf die Größenordnung des Sollwertes umrechnen.
    Das Zweite kann zum Beispiel sein, dass Du den ADC-Wert durch 4 dividiert (2 * shift rechts) damit er mit einem Byte vergleichbar ist. Dabei gehen allerdings 2 Bit der ADC-Auflösung verloren.

    viele Grüße
    Josef

  3. #3
    Gast
    Ich hatte den adc-wert schon mit Formel in einen Temperatur-konformen Gleitkommawert umgerechnet (also z.b: 512 entspricht 25,0°C. Das ist der Wert meiner Variable. Diesen Wert, nämlich die aktuelle Temp. will ich mit dem Sollwert (zb. 28°C Byte-Wert ) vergleichen

    Andreas

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Dann musst Du vor dem Vergleich die BYte-Variable einer Single-Variablen zuweisen:

    Dim bSoll as Byte, sSoll as Single

    bSoll = 28
    sSoll = bSoll ' Zuweisung byte zu single

    if sIst > sSoll then

    .....


    End if

    viele Grüße
    Josef

Berechtigungen

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

LiTime Speicher und Akkus