Note
Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi nous 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 avant-premières.
Réductions spéciales : Profitez de réductions exclusives sur nos derniers produits.
Promotions festives et cadeaux : Participez à des tirages au sort et à des promotions festives.
👉 Prêt à explorer et à créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !
5.10 Détection de la température¶
Un thermistor est un capteur de température qui présente une forte dépendance à la température. Il peut être classé en deux types : Coefficient de Température Négatif (NTC) et Coefficient de Température Positif (PTC). La résistance d’un thermistor NTC diminue avec l’augmentation de la température, tandis que celle d’un thermistor PTC augmente avec l’augmentation de la température.
Dans ce projet, nous utiliserons un thermistor NTC. En connectant le thermistor NTC à une broche d’entrée analogique du microcontrôleur ESP32, nous pouvons mesurer sa résistance, qui est directement proportionnelle à la température.
En intégrant le thermistor NTC et en effectuant les calculs nécessaires, nous pouvons mesurer avec précision la température et l’afficher sur le module I2C LCD1602. Ce projet permet une surveillance en temps réel de la température et offre une interface visuelle pour l’affichage de la température.
Composants nécessaires
Dans ce projet, nous aurons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN |
|---|---|---|
Kit de démarrage ESP32 |
320+ |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DES COMPOSANTS |
LIEN D’ACHAT |
|---|---|
Broches disponibles
Broches disponibles
Voici une liste des broches disponibles sur la carte ESP32 pour ce projet.
Broches disponibles
IO14, IO25, I35, I34, I39, I36
Broches de strap
Les broches de strap suivantes affectent le processus de démarrage de l’ESP32 lors de la mise sous tension ou de la réinitialisation. Cependant, une fois l’ESP32 démarrée avec succès, elles peuvent être utilisées comme broches normales.
Broches de strap
IO0, IO12
Schéma
Lorsque la température augmente, la résistance du thermistor diminue, ce qui provoque une diminution de la valeur lue sur I35. De plus, en utilisant une formule, vous pouvez convertir la valeur analogique en température puis l’afficher.
Câblage
Note
Le thermistor est noir et marqué 103.
La couleur de l’anneau de la résistance de 10K ohms est rouge, noir, noir, rouge et marron.
Code
Note
Ouvrez le fichier
5.10_thermistor.pysitué dans le cheminesp32-starter-kit-main\micropython\codes, ou copiez et collez le code dans Thonny. Puis cliquez sur « Run Current Script » ou appuyez sur F5 pour l’exécuter.Assurez-vous de sélectionner l’interpréteur « MicroPython (ESP32).COMxx » dans le coin inférieur droit.
# Importer les bibliothèques nécessaires
from machine import ADC, Pin
import time
import math
# Définir la valeur bêta du thermistor, généralement fournie dans la fiche technique
beta = 3950
# Créer un objet ADC (thermistor)
thermistor = ADC(Pin(35, Pin.IN))
# Régler l'atténuation
thermistor.atten(thermistor.ATTN_11DB)
# Démarrer une boucle infinie pour surveiller continuellement la température
while True:
# Lire la tension en microvolts et la convertir en volts
Vr = thermistor.read_uv() / 1000000
# Calculer la résistance du thermistor en fonction de la tension mesurée
Rt = 10000 * Vr / (3.3 - Vr)
# Utiliser la valeur bêta et la valeur de résistance pour calculer la température en Kelvin
temp = 1 / (((math.log(Rt / 10000)) / beta) + (1 / (273.15 + 25)))
# Convertir en Celsius
Cel = temp - 273.15
# Convertir en Fahrenheit
Fah = Cel * 1.8 + 32
# Afficher les valeurs de température en Celsius et en Fahrenheit
print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah))
time.sleep(0.5)
Lorsque le code est exécuté, le Shell affiche les températures en Celsius et en Fahrenheit.
Comment ça marche ?
Chaque thermistor a une résistance normale. Ici, elle est de 10k ohms, mesurée à 25 degrés Celsius.
Lorsque la température augmente, la résistance du thermistor diminue. Ensuite, les données de tension sont converties en quantités numériques par l’adaptateur A/D.
La température en Celsius ou en Fahrenheit est sortie via la programmation.
Voici la relation entre la résistance et la température :
RT =RN expB(1/TK - 1/TN)
RT est la résistance du thermistor NTC lorsque la température est TK.
RN est la résistance du thermistor NTC à la température nominale TN. Ici, la valeur numérique de RN est 10k.
TK est une température en Kelvin et l’unité est K. Ici, la valeur numérique de TK est
373.15 + degré Celsius.TN est une température nominale en Kelvin; l’unité est aussi K. Ici, la valeur numérique de TN est
373.15+25.Et B(bêta), la constante matérielle du thermistor NTC, est également appelée indice de sensibilité thermique avec une valeur numérique
4950.exp est l’abréviation de exponentielle, et la base
eest un nombre naturel et vaut environ 2,7.Convertissez cette formule
TK=1/(ln(RT/RN)/B+1/TN)pour obtenir la température en Kelvin qui moins 273,15 égale le degré Celsius.Cette relation est une formule empirique. Elle est précise uniquement lorsque la température et la résistance sont dans la plage effective.
En savoir plus
Vous pouvez également afficher les températures calculées en Celsius et en Fahrenheit sur l’écran I2C LCD1602.
Note
Ouvrez le fichier
5.10_thermistor_lcd.pysitué dans le cheminesp32-starter-kit-main\micropython\codes, ou copiez et collez le code dans Thonny. Puis cliquez sur « Run Current Script » ou appuyez sur F5 pour l’exécuter.Assurez-vous de sélectionner l’interpréteur « MicroPython (ESP32).COMxx » dans le coin inférieur droit.
Ici, vous devez utiliser la bibliothèque appelée
lcd1602.py, veuillez vérifier si elle a été téléchargée sur ESP32, pour un tutoriel détaillé, reportez-vous à 1.4 Télécharger les bibliothèques (Important).
# Importer les bibliothèques nécessaires
from machine import ADC, Pin
from lcd1602 import LCD
import time
import math
# Définir la valeur bêta du thermistor, généralement fournie dans la fiche technique
beta = 3950
# Créer un objet ADC (thermistor)
thermistor = ADC(Pin(35, Pin.IN))
# Régler l'atténuation
thermistor.atten(thermistor.ATTN_11DB)
lcd = LCD()
# Démarrer une boucle infinie pour surveiller continuellement la température
while True:
# Lire la tension en microvolts et la convertir en volts
Vr = thermistor.read_uv() / 1000000
# Calculer la résistance du thermistor en fonction de la tension mesurée
Rt = 10000 * Vr / (3.3 - Vr)
# Utiliser la valeur bêta et la valeur de résistance pour calculer la température en Kelvin
temp = 1 / (((math.log(Rt / 10000)) / beta) + (1 / (273.15 + 25)))
# Convertir en Celsius
Cel = temp - 273.15
# Convertir en Fahrenheit
Fah = Cel * 1.8 + 32
# Afficher les valeurs de température en Celsius et en Fahrenheit
print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah))
# Effacer l'écran LCD
lcd.clear()
# Afficher les valeurs de température en Celsius et en Fahrenheit
lcd.message('Cel: %.2f \xDFC \n' % Cel)
lcd.message('Fah: %.2f \xDFF' % Fah)
time.sleep(1)