🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

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

Posted on 30. April 20191. Mai 2023 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)
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.

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)

7 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

Schreibe einen Kommentar Antworten abbrechen

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

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb