Hi, ich möchte mit dem Sensor NTC 202 die Umgebungstemperatur auslesen und habe dazu einige Fragen. Verwendeter Sensor: http://www.temperatur-shop.de/index.php?cat=KAT72&product=TS-NTC-202&sid78910D081B7F411D80FC469D5E1017A8=76db6570899648125176c87ea7ee2e5a B-Wert: 3976 K R bei 25°C: 2,00 kOhm Temperaturbereich: -60°C bis 150°C Schaltung: im Anhang (ISP-Buchse für den Programmer wurde im Schaltplan weggelassen | es wird ein interner Takt von 8MHz verwendet | an PortB befindet sich ein LCD zur Ausgabe der Temperatur) 1. Frage: Wie kann ich den richtigen Widerstand ausrechnen, den ich für den Sensor verwenden muss? Hier ( http://www.umnicom.de/Elektronik/Mikrokontroller/Atmel/AtFan/AtFan.html ) gibt es einen Rechenweg, doch leider verstehe ich nicht wie ich aus dem B-Wert und dem Widerstand bei 25°C auf den Linearisierungswiderstand komme. (ich habe im Schaltplan einen 3,3kOhm Widerstand verwendet) 2. Frage: Wie kann ich aus dem ADC-Wert die Richtige Temperatur ausrechnen? Funktion zum Auslesen der Spannung an ADC0: uint16_t readADC(uint8_t channel) { uint8_t i; uint16_t result = 0; // Den ADC aktivieren und Teilungsfaktor auf 64 stellen ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // Kanal des Multiplexers waehlen // Interne Referenzspannung verwenden ADMUX = channel | (1<<REFS1) | (1<<REFS0); // Den ADC initialisieren + Dummyreadout ADCSRA |= (1<<ADSC); while(ADCSRA & (1<<ADSC)); // 3x die analoge Spannung and Kanal channel auslesen // dann Durchschnittswert ausrechnen for(i=0; i<3; i++) { // Eine Wandlung ADCSRA |= (1<<ADSC); // Auf Ergebnis warten... while(ADCSRA & (1<<ADSC)); result += ADCW; } // ADC wieder deaktivieren ADCSRA &= ~(1<<ADEN); result /= 3; return result; } Jetzt brauch ich noch eine Funktion zum umrechnen in °C. Dafür gibt es hier ( http://preis-ing.de/e_calc/index.php?seite=auternzc ) ein Programm, dass den Code erzeugt. Ich möchte am Ende z.B. eine Temperatur von 24,7 °C - muss ich dann also bei "Einheit in °C" 0,1 eintragen? Und welche Werte muss ich in den Array mit den Stützpunkten schreiben? Ich habe hier eine Tabelle ( http://www.produktinfo.conrad.com/datenblaetter/500000-524999/502356-in-01-de-Widerstandstabelle.pdf ), doch ich weiß nicht welche Spalte in den Array hineinkommt. Ich würde mich um Hilfe sehr freuen! Gruß.
gtnx schrieb: > muss ich dann also bei "Einheit in °C" 0,1 eintragen? Probier's doch aus und verfolge, was in der Rechnung passiert. Dann verstehst du auch eher, wie das mit der Linearisierung funktioniert, welchen Einfluß die Wahl des Widerstandes hat und wie das mit der Integerrechnung abläuft.
gtnx schrieb: > doch leider verstehe ich nicht wie ich aus dem B-Wert und dem Widerstand > bei 25°C auf den Linearisierungswiderstand komme. Gleichung (3) Rp=... ? Was verstehst du nicht?
Muss ich für den unteren Widerstand dann den Widerstand bei 20°C nehmen, wenn ich im Bereich von 20 - 80 °C einen möglichst genauen Wert haben möchte? Und für den oberen dann den Widerstand bei 80°C ? Mittlerer Widerstand bei 50°C ? Oder bezieht es sich auf die min./max. Temperatur, also in dem Fall dann -60 - 150 °C ?
(sorry, im vorherigen beitrag soll der name natürlich gtnx heißen)
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.