ADC-Wert springt, keine Feinabstufung möglich

Gast #576690
Lesenswert?

Hallo µC Freaks,

hab schon viel ausprrobiert aber irgendwie werde ich das Problem nicht 
los.
Ich lese die Temperatur über einen KTY 81-110 in den ADC. Dann wird mit 
float der Wert berechnet und an PC und LCD geschickt.
Der ADC Wert springt von

543 (22,3°C) auf
547 (23,6°C) auf
551 (24,8°C)

Und das alles immer im gleichen Bild (natürlich wenn ich den Sensor 
aufwärme)

Ich vermisse aber die Rohwerte z.B. zw. 543 und 547. Die muß es doch 
geben.Ind die kommen nie vor!

Hat einer eine Idee?

Code:

  adc_value =ADCL;
  adc_value |= ((int)ADCH<<8);

-->
  T_float=(float)((float)(ADC_value_temp-467)*200/625)-2;
  printf("\r\n Temperat_float %f", T_float);


Danke.
Angehängte Dateien:
Gast #576834
Lesenswert?

Controller: M32
AGND verschaltet mit GND
AREF ist mit 100nF an GND gelegt
Ich nutzte die interne Referenz von 2,5xV
Die Masse und VCC sind zus. mit dickem C=1000µF verschaltet um Spannung 
konstant zu halten

Hätte ich schon geglaubt dass die Werte nicht ans Dichsplay kommen, bloß 
1 mal in 100 Fällen müssen die doch zu sehen sein...

Gruß  Andreas
Gast #576870
Lesenswert?

Grundsätlich würde ich den ADC Wert zunächst einmal aus mehreren 
Messungen mitteln.

Beispiel ATTINY:
1
  for (adc_count=0; adc_count < 64; adc_count ++)  {
2
    ADCSR |= (1 << ADSC);           // AD Wandler starten
3
    while (ADCSR & (1 << ADSC));    // AD Wandlung fertig ?
4
    adc_val = ADCL;                 // lowbyte auslesen
5
    adc_val += ADCH * 256;          // highbyte & lowbyte = 10 BIT Ergebnis
6
    adc_sum += adc_val;             // Mittelwert über 64 Messungen
7
  }adc_sum >>= 6;                   // /64 => Mittelwert

100nF direkt an den Bauelementen ? Hast du mal die Versorgungspannungen 
mit dem Oszi. angeschaut ?

Benötigst du wirklich "float" ? Für mich sieht das so aus als könnte man 
das mittels Integerarithmetik hinbekommen !?

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