Gast
#4524857
Hallo zusammen und frohe Ostern, leider habe ich mal wieder ein kleines Problemchen. Ich benutze das Projekt von Stefan Sicklinger um die Temperatur über einen DS18B20 einzulesen und auf einem LCD ( HD44780) auszugeben, die Berechnung des Ausgabewertes habe ich überarbeitet, da die ursprüngliche zum einen nicht funktionierte und ich diese zum anderen auch nicht begriffen habe. Nun habe ich bemerkt, das die ausgegebenen Werte bei höheren Temperaturen nicht mehr passen. Bsp. Ausgabe bei Raumtemperatur oder auch mehr z.B. 40C kein Problem, Werte passen. Möchte ich aber nun einen Wert von um die 100C ausgeben, zeigt das Display nur ca. knapp 70 an. Meine Idee zur Berechnung: uint16_t var = (scratchpad[1]<<8) + scratchpad[0]; //Zusammensetzung der Temperaturbytes float var2; //Zusätzavariable um in Komma zu rechnen if (scratchpad[1]&0xF8)//Wenn die ersten 5 Bits 1 sind, dann negativ wert { var= ~ var; //umwandlung von negativen in pos. Wert mit einen bit zuwenig var= var+1; // fehlende bit hinzu var2 = var *0.0625; // genauigkeit, wandeln zum float temp=(-1)*var2; // vorzeichen drehen und in temp schreiben } else // wenn positve Temp { var2 = var *0.0625;// genauigkeit temp=var2; // in temp schreiben } Ich bin dankbar für jede hilfe. Gruß