Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !
2.2.2 Thermistance
Note
Selon la version de votre kit, identifiez si vous disposez d’un ADC0834 ou d’un MCP3008 et suivez la section correspondante.
Introduction
Tout comme la photorésistance peut détecter la lumière, la thermistance est un dispositif électronique sensible à la température qui peut être utilisé pour réaliser des fonctions de contrôle de la température, telles que la création d’une alarme de chaleur.
Composants nécessaires
Dans ce projet, nous avons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DU COMPOSANT |
LIEN D’ACHAT |
|---|---|
- |
Schéma
Procédures expérimentales
Étape 1 : Construisez le circuit.
Étape 2 : Allez dans le dossier du code.
cd ~/raphael-kit/python-pi5
Étape 3 : Exécutez le fichier exécutable
sudo python3 2.2.2_Thermistor_zero.py
Lorsque le code s’exécute, la thermistance détecte la température ambiante qui sera affichée à l’écran une fois le calcul du programme terminé.
Avertissement
Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.
Code
Note
Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez vous rendre au chemin du code source comme raphael-kit/python-pi5. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import ADC0834
import time
import math
# Initialize the ADC0834 module
ADC0834.setup()
# Run the process in a try-except block
try:
while True:
# Read the analog value from the sensor
analogVal = ADC0834.getResult()
# Convert the analog value to a voltage
Vr = 5 * float(analogVal) / 255
# Calculate the resistance of the thermistor
Rt = 10000 * Vr / (5 - Vr)
# Calculate the temperature in Kelvin
temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25)))
# Convert Kelvin to Celsius
Cel = temp - 273.15
# Convert Celsius to Fahrenheit
Fah = Cel * 1.8 + 32
# Print the temperature in both Celsius and Fahrenheit
print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah))
# Wait for 0.2 seconds before the next read
time.sleep(0.2)
# Handle KeyboardInterrupt for graceful termination
except KeyboardInterrupt:
# Clean up ADC0834 resources
ADC0834.destroy()
Explication du code
Cette section importe la bibliothèque ADC0834 pour la conversion analogique-numérique, la bibliothèque time pour implémenter des délais, et la bibliothèque math pour effectuer des opérations mathématiques.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import ADC0834 import time import math
Initialise le module ADC0834 pour permettre la lecture des valeurs analogiques.
# Initialize the ADC0834 module ADC0834.setup()
Implémente une boucle infinie pour la lecture continue des données. La boucle lit la valeur analogique d’une thermistance, convertit cette valeur en tension, calcule la résistance de la thermistance, puis traduit cette résistance en mesures de température en Kelvin, Celsius et Fahrenheit. Elle affiche également les relevés de température en Celsius et Fahrenheit, en faisant une pause de 0,2 seconde entre chaque lecture.
# Run the process in a try-except block try: while True: # Read the analog value from the sensor analogVal = ADC0834.getResult() # Convert the analog value to a voltage Vr = 5 * float(analogVal) / 255 # Calculate the resistance of the thermistor Rt = 10000 * Vr / (5 - Vr) # Calculate the temperature in Kelvin temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Convert Kelvin to Celsius Cel = temp - 273.15 # Convert Celsius to Fahrenheit Fah = Cel * 1.8 + 32 # Print the temperature in both Celsius and Fahrenheit print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah)) # Wait for 0.2 seconds before the next read time.sleep(0.2)
Capture une exception KeyboardInterrupt pour terminer le programme proprement et inclut des instructions de nettoyage pour les ressources ADC0834 à la fin.
# Handle KeyboardInterrupt for graceful termination except KeyboardInterrupt: # Clean up ADC0834 resources ADC0834.destroy()