Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino Lektion 84: NTC-Widerstand (Heißleiter)

Posted on 30. April 20196. März 2024 by Stefan Draeger

Ein NTC-Widerstand (Negative Temperature Thermistor) ist ein temperaturabhängiger Widerstand. Durch eine Spannungsteilerschaltung kann man mit diesem Bauelement die Temperatur messen.

NTC-Widerstand (Thermistor)

Ein NTC-Widerstand hat einen negativen Temperaturkoeffizienten, d.h. dieses Bauelement leitet bei hohen Temperaturen den elektrischen Strom besser als bei tiefen.

  • Bezug
  • Technische Daten eines NTC-Widerstand
  • Schaltung
    • Aufbau der Schaltung
  • Programmieren
    • Ermitteln des Widerstandswertes am analogen Ausgang
      • Video
    • Umrechnen des Widerstandwertes in ein Temperaturwert
      • Video
  • Quellen

Bezug

Den mir vorliegenden NTC-Widerstand* habe ich über eBay.de für 3,45 € inkl. Versandkosten erstanden.

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Technische Daten eines NTC-Widerstand

Die technischen Daten eines NTC-Widerstandes sind sehr übersichtlich, denn dieses Bauelement ist im übertragenen Sinn „nur“ ein Widerstand, welcher bei einer Temperaturänderung seinen Widerstandswert ändert. Der Nennwiderstand von 10kOhm wird hier immer bei einer Temperatur von 25 °C angegeben.

Schaltung

Für die nachfolgende Schaltung verwende ich einen 10kOhm NTC-Widerstand  und einen 10kOhm Kohleschichtwiderstand. Wenn du einen 100 Ohm NTC-Widerstand verwendest, so musst du auch einen 100 Ohm Kohleschichtwiderstand verwenden usw.

Wie bereits erwähnt ist die Schaltung eine Spannungsteilerschaltung wo man an 2 Punkten die Spannung misst und dann vergleicht.

Arduino UNO - Thermistor (NTC-Widerstand) Schaltung
Arduino UNO – Thermistor (NTC-Widerstand) Schaltung

Aufbau der Schaltung

Für den Aufbau der Schaltung benötigst du:

  • 1x Arduino UNO,
  • 1x Breadboard mit min 170 Pins, besser noch 400 Pins,
  • 1x Kohleschicht / Metallschicht Widerstand mit 10 kOhm,
  • 1x NTC-Widerstand mit 10 kOhm,
Arduino UNO , Schaltung mit Thermistor
Arduino UNO , Schaltung mit Thermistor

Programmieren

Ermitteln des Widerstandswertes am analogen Ausgang

Zunächst einmal müssen wir den Wert des NTC-Widerstandes ermitteln. Das Arduino Board hat kein Widerstandsmessgerät verbaut, sondern eher ein Spannungsmesser. Wir können an den analogen Pin Spannungen von max. 5V anlegen und dieses wird uns dann in Werten von 0 bis 1023 wiedergegeben.

Somit ergibt sich erstmal folgender einfacher Sketch zum Ermitteln des Widerstandswertes:

const int ntcWiderstand = 10000; // NTC-Widerstand mit 10 kOhm
const int MAX_ANALOG_VALUE = 1023;

//An welchem analogen Pin der NTC-Widerstand angeschlossen ist
#define PIN A0 

void printValue(String text, float value, String text2="");

void setup(void) {
  //beginnen der seriellen Kommunikation
  Serial.begin(9600); 
}
 
void loop(void) {
  float value = analogRead(PIN);
  printValue("analog Wert: ", value);
 
  // Konvertieren des analogen Wertes in ein Widerstandswert
  value = (MAX_ANALOG_VALUE / value)- 1; 
  value = ntcWiderstand / value;
  printValue("NTC-Widerstands Wert: ", value, " Ohm");
   
  delay(1000);
}

void printValue(String text, float value, String text2=""){
  Serial.print(text);
  Serial.print(value); 
  Serial.println(text2);
}

Video

Umrechnen des Widerstandwertes in ein Temperaturwert

Im ersten Schritt haben wir den Widerstandswert des NTC-Widerstandes ermittelt, nun wollen wir diesen Wert in einen Temperaturwert umwandeln. In dem Buch „Sensoren im Einsatz mit Arduino“ ist eine relativ einfache Formel abgebildet (leider ohne Erläuterung) in dem Tutorial von Adafruit ist ein Beispiel wie dieses mit der Steinhart-Hart Formel berechnet wird. Ich persönlich finde die Lösung vom Buch deutlich schlanker und lesbarer.

#include <math.h>

const int ntcWiderstand = 10000; // NTC-Widerstand mit 10 kOhm
const int MAX_ANALOG_VALUE = 1023;

//An welchem analogen Pin der NTC-Widerstand angeschlossen ist
#define PIN A0 

void printValue(String text, float value, String text2="");

void setup(void) {
  //beginnen der seriellen Kommunikation
  Serial.begin(9600); 
  Serial.println("Zeit\t\t|Kelvin\t\t|Celsius\t|Ohm");
  Serial.println("-------------------------------------------------------------------------");
}
 
void loop(void) {
  float analogValue = analogRead(PIN);
  
  // Konvertieren des analogen Wertes in ein Widerstandswert
  float resistorValue = (MAX_ANALOG_VALUE / analogValue)- 1; 
  resistorValue = ntcWiderstand / resistorValue;

  double kelvin = convert2TempKelvin(analogValue);
  double celsius = convertKelvin2TempCelsius(kelvin);
  printValue(kelvin, celsius, resistorValue);  
  delay(1000);
}

double convert2TempKelvin(float value){
  double temp = log(((10240000/value) - ntcWiderstand));
  temp = 1 / (0.001129148 + (0.000234125 * temp) + (0.0000000876741 * temp * temp * temp));
  return temp;
}

double convertKelvin2TempCelsius(double kelvin){
 return kelvin - 273.15;
}

void printValue(double kelvin, double celsius, float ohm){
  Serial.print(millis());
  Serial.print("\t\t|"); 
  Serial.print(kelvin);
  Serial.print(" K \t|"); 
  Serial.print(celsius);
  Serial.print(" °C\t|"); 
  Serial.print(ohm);
  Serial.println(" Ohm");
}

Video

Quellen

Für dieses Tutorial habe ich folgenden Artikel aus Wikipedia verwendet. (Die Grundlagen zum NTC-Widerstand werden dort sehr gut erläutert.)

Seite „Heißleiter“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 6. April 2019, 09:33 UTC. URL: https://de.wikipedia.org/w/index.php?title=Hei%C3%9Fleiter&oldid=187287370 (Abgerufen: 26. April 2019, 09:23 UTC)

Des Weiteren habe ich das Tutorial zum Heißleiter von Adafruit verwendet, dort werden die Formeln für das Umrechnen eines Widerstandswertes in einen Temperaturwert gezeigt.

Hier nun der Wikipedia Artikel zur Steinhart-Hart Formel:

Seite „Steinhart-Hart-Gleichung“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 24. April 2018, 05:15 UTC. URL: https://de.wikipedia.org/w/index.php?title=Steinhart-Hart-Gleichung&oldid=176817890 (Abgerufen: 26. April 2019, 18:06 UTC)

8 thoughts on “Arduino Lektion 84: NTC-Widerstand (Heißleiter)”

  1. Martin Ruppert-Stutz sagt:
    30. Januar 2021 um 12:14 Uhr

    Ist dies auch mit 9-12 Temperatur Sensoren machbar?

    Antworten
    1. Stefan Draeger sagt:
      30. Januar 2021 um 12:24 Uhr

      Hi,

      klaro kannst du das, da die NTCs über einen analogen Pin angeschlossen werden sind dir nur die Grenzen deines Microcontroller gesetzt.

      Gruß,

      Stefan Draeger

      Antworten
  2. Lukas Stieglitz sagt:
    15. September 2021 um 11:11 Uhr

    Ist die Formel nicht falsch?
    Der NTC Widerstand wird bei steigender Temperatur doch niederohmiger, und nicht hochomiger, oder?
    LG

    Antworten
    1. Storch sagt:
      14. November 2021 um 11:36 Uhr

      Ja ein NTC wird Niederohmiger

      Antworten
  3. Udo Meeßen sagt:
    3. Januar 2023 um 20:34 Uhr

    const int ntcWiderstand = 10000; // NTC-Widerstand mit 10 kOhm
    Diese Zeile impliziert, dass bei einem 100KOhm NTC dort 100000 stehen müsste.
    Das habe ich angenommen und bin sehr lange nahezu verzweifelt, weil die Auswertung nur absurde Ergebnisse brachte. Ich habe die Schaltung immer wieder ausgemessen, nach Fehlern in den Lötstellen gesucht, den Vorwiderstand immer wieder durchgemessen… immer nur Murks.
    Schließlich habe ich die Thermistor-Schaltung auf einem Breadborad zusammen geschustert, den Arduino Uno an den PC angeschlossen und ausschließlich den hier publizierten Scetch auf den MC hochgeladen. Und natürlich habe ich vergessen aus der 10000 eine 100000 zu machen.
    Und was soll ich sagen?
    Mit der 10000 als Konstante liefert mir die Schaltung mit einem 100kOhm NTC perfekte Ergebnisse, welche wenn überhaupt nur minimal von Referenzthermometern abweichen.
    Da stellt sich mir die Frage, was da los ist.
    Irgendeine Idee?

    Antworten
    1. erasurehead sagt:
      25. Januar 2023 um 11:53 Uhr

      Ich vermute, du hast ein 10kOhm NTC…

      Antworten
  4. Pingback: Bauteile: selbstrückstellende Sicherung (PTC Sicherung) - Technik Blog
  5. Pingback: NTC am ESP32 programmieren – Einsteigeranleitung mit MicroPython - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}