Forum: Mikrocontroller und Digitale Elektronik Temperatur Auslesen (NTC)


von Jens (Gast)


Lesenswert?

Hallo,

ich habe mich die letzte Woche mit dem auslesen der Temperatur
beschäftigt.

Nur wie lese ich diese am genauesten aus?
Ich habe mir eine Tabelle erstellt, in der ich die Spannungen
abspeicher die der sensor liefert.

//Temperatur Tabelle (Spannungen in mV
static uint16_t table_temp[] PROGMEM = {2936, 2645, 2358, 2085, 1829,
1594, 1383, 1196, 1032, 889, 765, 659, 569, 491, 425, 369, 321, 279,
244, 214, 188, 166, 147, 130, 116, 103, 92, 82, 74, 67, 60};

Nun die Frage, gibt es eine einfachere  schnellere  genauere lösung,
als die ich unten aufgeführt habe?

// Lese die Temperatur eines Kanals ein
uint16_t ReadTemp(uint8_t mux)
{
  uint16_t temp = 0, temp1 = 0, temp2 = 0;
  uint8_t  i;
  temp2 = ReadChannel(mux); (liesst eine Spannung ein)
  for(i = 0; i<= 30; i++)
  {
    temp = pgm_read_word(&table_temp[i]);
    if((temp2 <= temp1) && (temp2 >= temp))
    {
      temp2 = temp2 - temp;
      temp1 = temp1 - temp;
      temp1 = 50000 / temp1;
      temp1 = temp1 * temp2;
      temp1 = temp1 / 10000;
      temp = (i*5)-temp1;
      i = 30;
    }
    temp1 = temp;
  }
  return temp;
}

Ich gehe hin, und rechne die Differenzspannung zwichen dem "ist Wert"
und dem nägstem Punkt ein.
dann rechne ich 50000 / diese Spannung und habe den Temperaturwert pro
mV
Diesen Wert multipliziere ich mit dem Rest, (der in der Tabelle steht -
ADC Wert)
und ziehe diesen Wert von dem Temperatur Wert wieder ab.

von Peter (Gast)


Lesenswert?

Sieht doch gut aus..

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.