Les Capteurs
Les capteurs sont les sens des systemes embarques ! Temperature, lumiere, mouvement, son... decouvre comment les machines percoivent le monde qui les entoure.
Objectifs du cours
- Definir ce qu'est un capteur et son role
- Distinguer capteurs analogiques et numeriques
- Connaitre les principaux types de capteurs (temperature, lumiere, mouvement...)
- Comprendre la conversion analogique-numerique (CAN)
- Savoir lire les donnees d'un capteur avec MicroPython
Erreurs courantes a eviter
- Confondre capteur et actionneur (le capteur MESURE, l'actionneur AGIT)
- Oublier que tout capteur analogique necessite une conversion en numerique
- Penser que tous les capteurs sont precis (chaque capteur a ses limites)
- Ignorer l'etalonnage necessaire pour certains capteurs
**Definition**
Un **capteur** est un composant electronique qui convertit une grandeur physique (temperature, lumiere, pression, distance...) en un signal electrique exploitable par un microcontroleur.
**Le capteur = les sens de la machine**
Comme nos 5 sens nous permettent de percevoir notre environnement : * **Vue** → Capteur de lumiere (photoresistance, camera) * **Ouie** → Microphone, capteur sonore * **Toucher** → Capteur de pression, de force * **Odorat** → Capteur de gaz (CO2, fumee) * **Gout** → Capteur chimique (pH, salinite)
**La chaine de mesure**
``` Grandeur physique → Capteur → Signal electrique → CAN → Donnee numerique (Temperature 25C) (Sonde) (Tension 2.5V) (ADC) (Valeur 512) ```
**Vocabulaire essentiel** :
* **Grandeur d'entree** : ce que le capteur mesure (temperature en C) * **Grandeur de sortie** : le signal electrique produit (tension en V) * **Sensibilite** : variation de sortie pour une variation d'entree * **Precision** : ecart entre la mesure et la valeur reelle * **Etendue de mesure** : plage de valeurs mesurables (ex: -40C a +85C) * **Temps de reponse** : delai pour que la mesure soit stable
# Simulation du fonctionnement d'un capteur
class Capteur:
def __init__(self, nom, unite_entree, plage_min, plage_max):
self.nom = nom
self.unite_entree = unite_entree
self.plage_min = plage_min
self.plage_max = plage_max
self.tension_min = 0.0 # Volts
self.tension_max = 3.3 # Volts (typique microcontroleur)
def mesurer(self, valeur_physique):
"""Convertit une grandeur physique en tension"""
# Verification de la plage
if valeur_physique < self.plage_min:
valeur_physique = self.plage_min
elif valeur_physique > self.plage_max:
valeur_physique = self.plage_max
# Conversion lineaire
ratio = (valeur_physique - self.plage_min) / (self.plage_max - self.plage_min)
tension = self.tension_min + ratio * (self.tension_max - self.tension_min)
return round(tension, 3)
def afficher_info(self):
print(f"=== {self.nom} ===")
print(f"Mesure: {self.unite_entree}")
print(f"Plage: {self.plage_min} a {self.plage_max} {self.unite_entree}")
print(f"Sortie: {self.tension_min}V a {self.tension_max}V")
# Exemple avec un capteur de temperature
capteur_temp = Capteur("LM35", "C", -40, 125)
capteur_temp.afficher_info()
print("\n--- Tests de mesure ---")
temperatures = [0, 20, 25, 37, 100]
for temp in temperatures:
tension = capteur_temp.mesurer(temp)
print(f"Temperature: {temp}C -> Tension: {tension}V")
# Exemple avec un capteur de lumiere
print("\n")
capteur_lux = Capteur("BH1750", "lux", 0, 65535)
capteur_lux.afficher_info()
print("\n--- Tests de mesure ---")
luminosites = [0, 500, 10000, 50000]
for lux in luminosites:
tension = capteur_lux.mesurer(lux)
print(f"Luminosite: {lux} lux -> Tension: {tension}V")Quiz de validation
1. Quel est le role principal d'un capteur ?
2. Quelle est la difference entre un capteur analogique et numerique ?
3. Combien de valeurs differentes peut mesurer un convertisseur ADC 10 bits ?
4. Quel capteur utilise-t-on pour mesurer temperature ET humidite ?
5. Pourquoi utilise-t-on une resistance de pull-up avec certains capteurs ?
