Forum: Mikrocontroller und Digitale Elektronik ADC Temperatur Nachkommastelle


von Pete (Gast)


Lesenswert?

Hallo zusammen,

also wie dem Betreff schon zu entnehmen ist, möchte ich gerne die 
Temperatur mit einer Nachkommastelle auf dem Display ausgeben.
Ich verwende dabei einen AD 22100 KT an einem ATMega16-DIP (am ADC1)
Die Ausgabe der Temperatur auf dem Display ohne Nachkommastellen 
funktioniert bereits, und die Umwandlung des ADC Wertes in einen 
richtigen Temperaturwert auch..
Jetzt stellt sich mir die Frage, wie ich das anstellen könnte, das ich 
die 1. Nachkommastelle auch noch angezeigt bekomme...

Also damit berechne ich bisher die Temperatur:
int ADC2Deg(int TempVal)
{

  return (((220000/1024*TempVal)/1000)-60);
  //return 
((TempVal-Min_ADC_Wert)*((MaxTemp-MinTemp)/(Max_ADC_Wert-Min_ADC_Wert))+ 
MinTemp);
}

so das ist jetzt noch alles in int, müsste dann logischerweise in float 
und diese floatzahl, also das Ergebnis müsste ich dann in zwei int Werte 
umwandeln, und zwar z.B. int VorKomma und int NachKomma

Aber daran bin ich bisher gescheitert....

In C ganz normal oder C++ könnte ich mich der Funktion sprintf(); 
bedienen, was hier nicht möglich ist, da ih dafür extra wieder bibs 
einbinden müsste und so zu viel speicher und rechenzeit "verschwenden" 
würde...

Ich hoffe ich konnte mein Problem anschaulich darstellen und das mir 
geholfen werden kann...

von Michael (Gast)


Lesenswert?

Rechne einfach in 1/10°C Auflösung! Vermeide float-Berechnungen!!! Die 
kosten nur Zeit und sind überflüssig! D.h. eine "1" in integer bedeutet 
dann 1/10°C, int(10)==1.0° int(255)==25.5° usw. Du must dann natürlich 
auf den Zahlenbereich (8bit/16bit) aufpassen, also int16_t nehmen. Der 
Dezimalpunkt ist dann einfach an einer fixen Stelle. Im Prinzip must Du 
in Deiner Formel die vorgegebenen Min-Max Temperaturen einfach mal 10 
nehmen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.