Capteurs et Actionneurs
Les capteurs sont les yeux et les oreilles de nos systemes embarques, tandis que les actionneurs sont leurs muscles ! Ensemble, ils permettent a la machine d'interagir avec le monde reel.
Objectifs du cours
- Distinguer capteur et actionneur
- Comprendre la chaine capteur-traitement-actionneur
- Connaitre les principaux types de capteurs et leur fonctionnement
- Decouvrir les actionneurs courants (moteurs, LED, relais)
- Programmer la lecture de capteurs et le controle d'actionneurs
Erreurs courantes a eviter
- Confondre capteur (mesure) et actionneur (agit)
- Oublier que les capteurs analogiques necessitent une conversion
- Ne pas proteger les entrees avec des resistances pull-up/pull-down
- Alimenter un actionneur directement depuis un GPIO (courant insuffisant)
**La boucle de perception-action**
Un systeme embarque interactif suit toujours ce schema :
``` ENVIRONNEMENT | v [CAPTEUR] -----> [TRAITEMENT] -----> [ACTIONNEUR] (mesure) (microcontroleur) (action) ^ | | v +-------------<------------------+ ```
**CAPTEUR (Sensor)**
* **Role** : Mesurer une grandeur physique * **Entree** : Phenomene physique (temperature, lumiere, mouvement...) * **Sortie** : Signal electrique (tension, courant, numerique)
Exemples : thermometre, photoresistance, accelerometre, microphone
**ACTIONNEUR (Actuator)**
* **Role** : Produire une action physique * **Entree** : Signal electrique de commande * **Sortie** : Mouvement, lumiere, son, chaleur...
Exemples : moteur, LED, haut-parleur, relais, electrovanne
**Analogie humaine**
| Humain | Systeme embarque | |--------|------------------| | Yeux | Capteur de lumiere, camera | | Oreilles | Microphone | | Peau | Capteur de temperature, pression | | Muscles | Moteurs | | Cordes vocales | Haut-parleur |
# Simulation d'une boucle capteur-traitement-actionneur
class SystemeEmbarque:
"""
Exemple : thermostat automatique
- Capteur : sonde de temperature
- Traitement : comparaison avec consigne
- Actionneur : chauffage (relais)
"""
def __init__(self):
self.consigne = 20.0 # Temperature souhaitee
self.hysteresis = 0.5 # Marge pour eviter oscillations
self.chauffage_actif = False
def lire_capteur(self, temperature_simulee):
"""CAPTEUR : mesure la temperature"""
# Dans la realite : lecture ADC d'une thermistance
print(f"[CAPTEUR] Temperature mesuree: {temperature_simulee}C")
return temperature_simulee
def traiter(self, temperature):
"""TRAITEMENT : decide de l'action"""
if temperature < self.consigne - self.hysteresis:
decision = "CHAUFFER"
elif temperature > self.consigne + self.hysteresis:
decision = "ARRETER"
else:
decision = "MAINTENIR"
print(f"[TRAITEMENT] Consigne: {self.consigne}C -> Decision: {decision}")
return decision
def commander_actionneur(self, decision):
"""ACTIONNEUR : agit sur le chauffage"""
if decision == "CHAUFFER":
self.chauffage_actif = True
print("[ACTIONNEUR] Chauffage ACTIVE")
elif decision == "ARRETER":
self.chauffage_actif = False
print("[ACTIONNEUR] Chauffage DESACTIVE")
else:
etat = "actif" if self.chauffage_actif else "inactif"
print(f"[ACTIONNEUR] Chauffage maintenu ({etat})")
def cycle(self, temperature):
"""Execute un cycle complet"""
print(f"\n{'='*50}")
temp = self.lire_capteur(temperature)
decision = self.traiter(temp)
self.commander_actionneur(decision)
return self.chauffage_actif
# Simulation
print("=== SIMULATION THERMOSTAT ===")
thermostat = SystemeEmbarque()
# Evolution de temperature
temperatures = [18.0, 19.0, 19.8, 20.5, 21.0, 20.5, 20.0, 19.5, 19.0, 19.5]
for temp in temperatures:
thermostat.cycle(temp)Quiz de validation
1. Quelle est la difference entre un capteur et un actionneur ?
2. Quel capteur utilise des ultrasons pour mesurer la distance ?
3. Pourquoi utilise-t-on un pont en H pour controler un moteur DC ?
4. Qu'est-ce que le debouncing d'un bouton ?
5. Comment controle-t-on la position d'un servomoteur ?
