-
-
Vergleich Single - Byte-Variable
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
-
Erfahrener Benutzer
Fleißiges Mitglied
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
-
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
-
Erfahrener Benutzer
Fleißiges Mitglied
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
-
Foren-Regeln
Lesezeichen