PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vergleich Single - Byte-Variable



dl1akp
11.01.2005, 06:57
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

oe9vfj
11.01.2005, 08:31
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

11.01.2005, 09:46
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

oe9vfj
11.01.2005, 09:54
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