.. note:: Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten. **Warum beitreten?** - **Expertenunterstützung**: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams. - **Lernen & Teilen**: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern. - **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken. - **Spezialrabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte. - **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil. 👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei! .. _2.2.2_py_pi5: 2.2.2 Thermistor ================ .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Je nach deiner Kit-Version überprüfe bitte, ob du **ADC0834** oder **MCP3008** hast, und fahre mit dem entsprechenden Abschnitt fort. Einführung ------------ Wie ein Fotowiderstand Licht erkennen kann, ist ein Thermistor ein temperatur- empfindliches elektronisches Bauteil, das zur Realisierung von Temperatursteuerungsfunktionen wie einem Hitzemelder verwendet werden kann. Benötigte Komponenten ------------------------------ Für dieses Projekt benötigen wir die folgenden Komponenten. .. image:: ../python_pi5/img/2.2.2_thermistor_list.png Schaltplan ----------------- .. image:: ../python_pi5/img/2.2.2_thermistor_schematic_1.png .. image:: ../python_pi5/img/2.2.2_thermistor_schematic_2.png Experimentelle Verfahren ------------------------------------------ **Schritt 1:** Bauen Sie den Schaltkreis auf. .. image:: ../python_pi5/img/2.2.2_thermistor_circuit.png **Schritt 2:** Wechseln Sie in den Ordner des Codes. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Schritt 3:** Führen Sie die ausführbare Datei aus. .. raw:: html .. code-block:: sudo python3 2.2.2_Thermistor_zero.py Wenn der Code ausgeführt wird, erkennt der Thermistor die Umgebungstemperatur, die auf dem Bildschirm angezeigt wird, sobald das Programm die Berechnung abschließt. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **Code** .. note:: Sie können den unten stehenden Code **Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen**. Aber bevor Sie das tun, müssen Sie zum Quellcode-Pfad wie ``davinci-kit-for-raspberry-pi/python-pi5`` gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen. .. raw:: html .. code-block:: python #!/usr/bin/env python3 # -*- coding: utf-8 -*- import ADC0834 import time import math # Richten Sie das ADC0834-Modul ein ADC0834.setup() # Führen Sie den Prozess in einem try-except-Block aus try: while True: # Lesen Sie den analogen Wert vom Sensor analogVal = ADC0834.getResult() # Wandeln Sie den analogen Wert in eine Spannung um Vr = 5 * float(analogVal) / 255 # Berechnen Sie den Widerstand des Thermistors Rt = 10000 * Vr / (5 - Vr) # Berechnen Sie die Temperatur in Kelvin temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Wandeln Sie Kelvin in Celsius um Cel = temp - 273.15 # Wandeln Sie Celsius in Fahrenheit um Fah = Cel * 1.8 + 32 # Drucken Sie die Temperatur in Celsius und Fahrenheit aus print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah)) # Warten Sie 0,2 Sekunden vor dem nächsten Lesen time.sleep(0.2) # Behandeln Sie KeyboardInterrupt für einen eleganten Abschluss except KeyboardInterrupt: # Ressourcen des ADC0834 aufräumen ADC0834.destroy() **Code-Erklärung** #. Dieser Abschnitt importiert die ADC0834-Bibliothek für die Analog-Digital-Umwandlung, die time-Bibliothek für die Implementierung von Verzögerungen und die math-Bibliothek für mathematische Operationen. .. code-block:: python #!/usr/bin/env python3 # -*- coding: utf-8 -*- import ADC0834 import time import math #. Initialisiert das ADC0834-Modul, um das Lesen von Analogwerten zu ermöglichen. .. code-block:: python # Richten Sie das ADC0834-Modul ein ADC0834.setup() #. Implementiert eine Endlosschleife für kontinuierliche Datenablesung. Die Schleife liest den Analogwert von einem Thermistor, wandelt diesen Wert in eine Spannung um, berechnet den Widerstand des Thermistors und übersetzt diesen Widerstand in Temperaturmessungen in Kelvin, Celsius und Fahrenheit. Sie gibt auch die Temperaturwerte in Celsius und Fahrenheit aus und legt eine Pause von 0,2 Sekunden zwischen jeder Ablesung ein. .. code-block:: python # Führen Sie den Prozess in einem try-except-Block aus try: while True: # Lesen Sie den analogen Wert vom Sensor analogVal = ADC0834.getResult() # Wandeln Sie den analogen Wert in eine Spannung um Vr = 5 * float(analogVal) / 255 # Berechnen Sie den Widerstand des Thermistors Rt = 10000 * Vr / (5 - Vr) # Berechnen Sie die Temperatur in Kelvin temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Wandeln Sie Kelvin in Celsius um Cel = temp - 273.15 # Wandeln Sie Celsius in Fahrenheit um Fah = Cel * 1.8 + 32 # Drucken Sie die Temperatur in Celsius und Fahrenheit aus print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah)) # Warten Sie 0,2 Sekunden vor dem nächsten Lesen time.sleep(0.2) #. Fängt eine KeyboardInterrupt-Ausnahme ab, um das Programm elegant zu beenden, und enthält Anweisungen zur Bereinigung der ADC0834-Ressourcen bei Beendigung. .. code-block:: python # Behandeln Sie KeyboardInterrupt für einen eleganten Abschluss except KeyboardInterrupt: # Ressourcen des ADC0834 aufräumen ADC0834.destroy()