Temperatur Auslesen (NTC)

Gast #397672
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren