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.
Lt. Bild werden die Werte im Sekundentakt an den PC übergeben. Dass dann Werte dazwischen fehlen ist nicht weiter verwunderlich.
Die Rohwerte sind gemittelt ? Falls nicht, sollten sie. Ich nehm jeweils 64 Additionen und dann ein shr 6.
Wird der ADC mit korrektem Takt versorgt? Woher kommt Aref, AVcc? Welcher Controller?
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
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 !?
AVcc gehört über ein L/C-Filter an Vcc. Die Masse zum Sensor (Analog-Masse) darf nicht von anderen Strömen durchflossen werden. Bei langsamen Signalen gehören 10...100nF direkt von Analog-Masse an den ADC-Pin.
> mit dickem C=1000µF
Nach dem Motte "viel hilft viel"? Ist hier eher umgekehrt, der 1000-er
nützt da wenig, ist zu träge.
Fehlt immer noch die Antwort zur Frage nach dem ADC-Takt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.