NTC Berechnung am XMega128

Gast #3460062
Lesenswert?

Ich möchte einen ADC_result umrechnen auf kOhm. Und diesen kOhm auf C 
Grad. Folgende Formel habe ich hierfür. Von Hand gerechnet kommt das 
richtige raus. ADC_result ist 1400 und rauskommen sollte 22-23 Grad.

PullDown = 1M
NTC bei 25 = 100k
12Bit = 4095
Ref = 1V
Vcc = 3,3V

B Wert vom NTC = 4485


wert = 1000000*((1/4095)*ADC_result)/(3.3-((1/4095)*ADC_result));
temp = ((4485*298.15)/(4485+(log10(wert/100000)*298.15)))-273.15;


Schaft der uC diese Berechnung nicht? Möchte das ohne 
Temperaturstützpunkte programmieren.
#3460071
Lesenswert?

Axe schrieb:

> wert = 1000000*((1/4095)*ADC_result)/(3.3-((1/4095)*ADC_result));

Dir ist aber schon klar, dass zb 1/4095 eine glatte 0 ergibt?

Stell halt mal deine Formeln ein wenig um, so dass es a) weniger zu 
rechnen gibt und b) du nicht in arithmetische Fallen läufst.

zb ist es recht sinnlos ein Ergebnis mal 1000000 zu nehmen, nur um es 
dann im nächsten Schritt wieder durch 100000 zu dividieren.
#3461196
Lesenswert?

Viel zu umständlich!

Wenn du die Schaltung sinnig wählst, kommst du mit einem einfachen 
Dreisatz aus.
Schalte den NTC gegen Masse und mit einem Vorwiederstand nach Vref
Wähle den Vorwiederstand so, dass er dem Widerstand des NTC in der Mitte 
des interessierende Temperaturbereiches entspricht.
Die Kennlinei der NTC it auf diese Schaltung optimiert, so dass sich 
jetzt eine (fast) lineare Spannungs-Temperaturkennlinie ergibt.

z.B. Wenn der Vorwiderstand nach dem R20 gewählt wird, reicht der 
Bereich mit einem Fehler unter 1°C von ca. 0°C bis ca. 50°C

Die Gerade hat übrigens eine negative Steigung :)
#3465637
Lesenswert?

So sieht das bei meinem Temperaturmesser mit ATMEGA8 aus.
1
...
2
  ADC_val_i = ADCW & 0x3ff; // Read 10bit
3
  ADC_val_d = (double)ADC_val_i/CalFact;
4
  R_ntc = Rv*ADC_val_d/(1-ADC_val_d);
5

6
  T_ntc = B_NTC/(log(R_ntc/R25)+B_NTC/(T25+Kelvin))-Kelvin; 
7

8
  dtostrf(T_ntc, 6, 2, ADC_val);    
9
  lcd_set_cursor (1, 4); 
10
  lcd_write(ADC_val);  
11
...
Da ist man echt froh, dass es für viele Mikrocontrollerfamilien 
kostenlose C-compiler und IDEs gibt.

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