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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.