Consommation et Energie
L'energie est precieuse ! Un systeme embarque sur batterie doit etre econome pour durer des jours, des mois, voire des annees. Decouvrons comment optimiser la consommation.
Objectifs du cours
- Comprendre les notions de tension, courant et puissance
- Calculer la consommation energetique d'un systeme
- Decouvrir les modes basse consommation des microcontroleurs
- Optimiser l'autonomie sur batterie
- Evaluer l'impact environnemental des systemes embarques
Erreurs courantes a eviter
- Confondre mAh (capacite) et mA (courant)
- Sous-estimer la consommation en veille
- Oublier de desactiver les peripheriques inutilises
- Ne pas adapter la frequence CPU aux besoins
**Les grandeurs electriques**
**Tension (U)** - Unite : Volt (V) * "Pression" electrique * Fixee par l'alimentation (3.3V, 5V, 12V...)
**Courant (I)** - Unite : Ampere (A) * "Debit" d'electrons * Varie selon la charge * 1A = 1000mA
**Puissance (P)** - Unite : Watt (W) * Energie consommee par seconde * P = U x I
**Energie (E)** - Unite : Watt-heure (Wh) * Puissance sur une duree * E = P x t
**Exemples concrets**
| Composant | Tension | Courant | Puissance | |-----------|---------|---------|-----------| | LED rouge | 2V | 10mA | 20mW | | Arduino Uno | 5V | 45mA | 225mW | | ESP32 actif | 3.3V | 80mA | 264mW | | ESP32 sleep | 3.3V | 10uA | 33uW | | Raspberry Pi 4 | 5V | 600mA | 3W |
**Calcul d'autonomie**
``` Autonomie (h) = Capacite batterie (mAh) / Courant (mA)
Exemple: - Batterie 2000 mAh - Consommation 50 mA - Autonomie = 2000 / 50 = 40 heures ```
# Calculateur d'energie et d'autonomie
def calculer_puissance(tension_v, courant_ma):
"""Calcule la puissance en mW"""
courant_a = courant_ma / 1000
puissance_w = tension_v * courant_a
puissance_mw = puissance_w * 1000
print(f"P = U x I = {tension_v}V x {courant_ma}mA = {puissance_mw:.1f}mW")
return puissance_mw
def calculer_autonomie(capacite_mah, courant_ma):
"""Calcule l'autonomie en heures"""
autonomie_h = capacite_mah / courant_ma
print(f"Autonomie = {capacite_mah}mAh / {courant_ma}mA = {autonomie_h:.1f}h")
if autonomie_h > 24:
print(f" = {autonomie_h/24:.1f} jours")
return autonomie_h
def calculer_energie_jour(puissance_mw, heures_par_jour=24):
"""Calcule l'energie consommee par jour"""
energie_wh = (puissance_mw / 1000) * heures_par_jour
print(f"Energie/jour = {puissance_mw}mW x {heures_par_jour}h = {energie_wh:.2f}Wh")
return energie_wh
# Exemples
print("=== CALCULS ENERGETIQUES ===\n")
print("1. Puissance d'une LED:")
calculer_puissance(2, 10)
print("\n2. Puissance Arduino Uno:")
calculer_puissance(5, 45)
print("\n3. Puissance ESP32 actif:")
calculer_puissance(3.3, 80)
print("\n=== AUTONOMIE SUR BATTERIE ===\n")
print("Batterie 18650 (2500mAh) avec ESP32:")
print("\nMode actif WiFi (80mA):")
calculer_autonomie(2500, 80)
print("\nMode deep sleep (10uA = 0.01mA):")
calculer_autonomie(2500, 0.01)
# Cas realiste avec duty cycle
print("\n=== CAS REALISTE : CAPTEUR IoT ===\n")
print("Scenario: reveil toutes les 10 min, mesure + envoi WiFi")
temps_actif_s = 5 # 5 secondes de travail
intervalle_min = 10
courant_actif_ma = 80
courant_sleep_ma = 0.01
# Calcul du courant moyen
ratio_actif = temps_actif_s / (intervalle_min * 60)
courant_moyen = (courant_actif_ma * ratio_actif) + (courant_sleep_ma * (1 - ratio_actif))
print(f"Temps actif: {temps_actif_s}s toutes les {intervalle_min} min")
print(f"Ratio actif: {ratio_actif*100:.2f}%")
print(f"Courant moyen: {courant_moyen:.3f}mA")
print()
calculer_autonomie(2500, courant_moyen)Quiz de validation
1. Quelle formule permet de calculer la puissance electrique ?
2. Quel mode de veille ESP32 consomme le moins ?
3. Une batterie de 2000mAh alimente un circuit qui consomme 100mA. Quelle est l'autonomie ?
4. Quel type de regulateur est le plus efficace ?
5. Dans le cycle de vie d'un appareil electronique, quelle phase a generalement le plus d'impact CO2 ?
