verfaßt von Mr. Teflon, 12.08.2009, 01:06:11
Hallo,
ich zeige Euch mal den Code vom Berechnungsteil für negative Temperaturen.
Ich begrenze die Ausgabe/Anzeige auf -99,9°C. Mit der Abfrage
if(wert2 > 9.99)
wert2 = 9.99;
Die Zahl wird nur noch in Einzelteile zerlegt, sodass eigentlich im Terminal -99.9 ankommen/angezeigt werden müßten.
ABER! Ich bekomme -99,8 angezeigt !!!
Wie kann denn plötzlich aus einer 9 eine 8 werden?
Spinne ich oder wer spinnt?
Gibts Erklärungen?
// ********** KTY10-6 Temperaturberechnung aus A/D und Ausgabe an COM ************ \\\\
// *** Berechnung mit den kalibrierten SensorDigits nur gültig mit Rv 5,6kOhm *** \\\\
// ********** -30°C ... 0°C zweistellig und 0°C ... 150°C dreistellig ************ \\\\
void com_Temperatur (uchar chan)
{
SensorMin = 186; // A/D Digitwert 186 = Temperatursensor -30°C
SensorNull = 231; // A/D Digitwert 231 = Temperatursensor 0°C
Sensor100 = 386; // A/D Digitwert 386 = Temperatursensor 100°C
SensorMax = 443; // A/D Digitwert 443 = Temperatursensor 150°C
wert2 = (float) ad_in(chan); // A/D Wandler auslesen und als float wert2 übergeben
if(wert2 < 231) // wenn Temperatur negativ, dann hier rechnen
{
com_txd (\'-\'); // Zeichen \"-\" Ausgabe an COM
// Bsp. wert2 = 201
wert2 = (wert2-SensorNull)/(Sensor100-SensorNull)* -10; // Temperaturberechnung, wert2 = 1,935
if(wert2 > 9.99) // wenn Temperatur kälter wie -99°C, dann
wert2 = 9.99; // wird Anzeige auf -99,9°C gesetzt
D = wert2;
com_txd (D + 48); // Zehner Stelle als Ganzzahl an COM
wert2 = wert2 - D;
wert2 = wert2 * 10;
D = wert2;
com_txd (D + 48); // Einer Stelle als Ganzzahl an COM
com_txd (0x2e); // Dezimalpunktausgabe an COM
wert2 = wert2 - D;
wert2 = wert2 * 10;
D = wert2;
com_txd (D + 48); // erste Kommastelle als Ganzzahl an COM
// com_txd (176); // Zeichen ° an COM
com_txd (\'C\');
com_print(\"\\n\\r\"); // Zeilenende
}
--
___________
Tschau
Mr. Teflon
gesamter Thread: