Outils pour utilisateurs

Outils du site


ssi_elec_asservissement_mbot

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ssi_elec_asservissement_mbot [2025/11/29 14:48] mistert2ssi_elec_asservissement_mbot [2025/12/08 11:22] (Version actuelle) – [Étape 2 : Action PI] mistert2
Ligne 1: Ligne 1:
-TP – Asservissement en distance du mBot avec correcteur PID+===== TP – Asservissement en distance du mBot : Correcteur PID =====
  
-## 🎯 Objectifs +==== Objectifs ==== 
-Comprendre le fonctionnement d’un **asservissement en boucle fermée**   +  Comprendre la logique d’un asservissement en boucle fermée 
-Utiliser un capteur ultrason pour mesurer une distance   +  * Utiliser le capteur ultrason pour mesurer une distance réelle 
-- Découvrir les rôles des termes **P****I**, **D** du PID   +  * Étudier séparément les rôles des termes P, I et D 
-- Expérimenter la stabilité, le dépassement, l’erreur statique   +  Analyser la stabilité, le dépassement, le bruit et l’erreur statique 
-- Analyser les effets du bruit et des saturations  +  * Interpréter les données fournies dans le moniteur série
  
----+==== Prérequis ====
  
-## 🛠 Matériel nécessaire +Lirairie mBot: [[bibliotheque_arduino_mbot]]
-mBot ou carte mCoreLite avec capteur ultrason   +
-- Arduino IDE ou mBlock (selon le matériel)   +
-- Un obstacle (mur, boîte, livre)   +
-- Une règle ou un mètre  +
  
----+==== Activité=====
  
-## 1) Principe général de l’asservissement+{{ https://www.lextronic.fr/41997-large_default/robot-mbot-explorer-bluetooth-p1050015.jpg }}
  
-Le robot doit se stabiliser à **20 cm** de l’obstacle  +Forcer le mBot à suivre une cible à 20 cm de distance.  
-On définit une **erreur** :+==== 1) Principe général de l’asservissement ====
  
 +Le robot doit se stabiliser à **20 cm** de l’obstacle.
 +
 +L’erreur est définie par :
 <mt> <mt>
-e = D_{\text{mes}} - D_{\text{cons}}+e = D_{mes} - D_{cons}
 </mt> </mt>
  
-- **e > 0** : le robot est trop loin → il doit avancer   +  si e > 0 → le robot est trop loin → avancer   
-- **e < 0** : le robot est trop près → il doit reculer   +  si e < 0 → le robot est trop près → reculer  
- +
-La commande se calcule via un correcteur PID :+
  
 +La commande est donnée par un correcteur PID :
 <mt> <mt>
-v = K_p \, \;+\; K_i \int e\, dt \;+\; K_d \frac{de}{dt}+v = K_p e + K_i \int e\, dt + K_d \frac{de}{dt}
 </mt> </mt>
  
-### 🔹 Rôle des termes +===== Rôle des trois termes ===== 
-**P** : corrige proportionnellement à l’erreur   +  **P** : corrige proportionnellement à l’erreur   
-**I** : supprime l’erreur statique mais peut créer des oscillations   +  **I** : supprime l’erreur statique mais peut provoquer des oscillations   
-**D** : amortit, réduit le dépassement  +  **D** : réduit le dépassement, amortit le mouvement  
  
-### 🔹 Filtrage du dérivé +===== Filtrage du dérivé ===== 
-Le capteur ultrason étant bruyant, on utilise :+Le capteur ultrason étant bruyant, on utilise un dérivé filtré :
  
 <mt> <mt>
-d_{\text{filt}} = \alpha \, d_{\text{filt}} + (1-\alpha)\,\frac{e - e_{\text{prev}}}{dt}+d_{filt} = \alpha\, d_{filt} + (1 - \alpha)\, \frac{e - e_{prev}}{dt}
 </mt> </mt>
  
-### 🔹 Anti-windup (limitation de l'intégrale)+===== Anti-windup (limitation de lintégrale) =====
  
 <mt> <mt>
-I = \mathrm{clip}(I + e\,dt,\; -I_{\max},\; I_{\max})+I = \mathrm{clip}(I + e\,dt,\; -I_{max},\; I_{max})
 </mt> </mt>
  
-Et reset si changement de signe :+Reset si inversion du signe de l’erreur :
  
 <mt> <mt>
-e \cdot e_{\text{prev}} < 0 \;\Rightarrow\; I = 0+e \cdot e_{prev} < 0 \Rightarrow I = 0
 </mt> </mt>
  
-### 🔹 Saturation des moteurs+===== Saturation moteurs =====
  
 <mt> <mt>
 v = v =
 \begin{cases} \begin{cases}
-V_{\max} & \text{si } v > V_{\max} \\ +V_{max} & \text{si } v > V_{max} \\ 
--V_{\max} & \text{si } v < -V_{\max} \\+-V_{max} & \text{si } v < -V_{max} \\
 v & \text{sinon} v & \text{sinon}
 \end{cases} \end{cases}
 </mt> </mt>
  
-### 🔹 Vitesse minimale+===== Zone de vitesse minimale =====
  
 <mt> <mt>
-|v| < V_{\min} \;\Rightarrow\; +|v| < V_{min} \Rightarrow v =
-v =+
 \begin{cases} \begin{cases}
-V_{\min} & \text{si } v > 0 \\ +V_{min} & \text{si } v > 0 \\ 
--V_{\min} & \text{si } v < 0+-V_{min} & \text{si } v < 0
 \end{cases} \end{cases}
 </mt> </mt>
  
----+----
  
-## 2) Travail demandé+==== 2) Travail demandé ====
  
-### Partie A — Analyse conceptuelle +===== Partie A — Analyse conceptuelle ===== 
-1. Expliquer avec vos mots ce que représente l’erreur *e*.   +  Expliquer la signification physique de l’erreur e. 
-2. Justifier l’intérêt d’un correcteur en boucle fermée  +  * Pourquoi un système en boucle fermée est-il nécessaire ? 
-3. Décrire séparément les rôles des termes **P****I****D**.   +  * Donner le rôle séparé des termes P, I, D. 
-4. Expliquer pourquoi le dérivé doit être filtré.   +  * Pourquoi la dérivée doit-elle être filtrée ? 
-5. Expliquer à quoi sert l’anti-windup.  +  * Quel est l’intérêt du mécanisme anti-windup ?
  
----+----
  
-## 3) Partie B — Expérimentations successives+===== Partie B — Expérimentations =====
  
-### 🔹 Étape 1 — Action **P seule** +==== Étape 1 Action P seule ==== 
-Mettre **Ki = 0**, **Kd = 0**   +  Mettre Ki = 0 et Kd = 0 
-- Tester plusieurs valeurs de **Kp** : 2, 4, 6, 8…   +  Faire varier Kp (2, 4, 6, 8…)
-- Observer la stabilisation à 20 cm+
  
 **Questions :** **Questions :**
-- Y a-t-il une erreur statique ?   +  * Une erreur statique persiste-t-elle ? 
-- Le dépassement existe-t-il ?   +  * Y a-t-il un dépassement ? 
-Le robot oscille-t-il lorsque Kp est trop grand ?  +  Le robot oscille-t-il si Kp est trop grand ?
  
----+----
  
-### 🔹 Étape 2 — Action **PI** +==== Étape 2 Action PI ==== 
-Ajouter une valeur de **Ki** (ex. 0.1 à 0.2)  +  Garder un Kp raisonnable (ex : 4 ou 6) 
 +  * Ajouter Ki (0.1 → 0.2)
  
 **Questions :** **Questions :**
-L’erreur statique disparaît-elle ?   +  * L’erreur statique disparaît-elle ? 
-Le comportement devient-il plus oscillant ?   +  Le robot devient-il plus oscillant ? 
-Que se passe-t-il si Ki est trop grand  +  Que provoque un Ki trop élevé ?
  
---- 
  
-### 🔹 Étape 3 — Action **PID*+---- 
-Ajouter un terme **Kd** (ex. 0.5 ou 1.0)+ 
 +==== Étape 3 Action PID ==== 
 +  * Ajouter un terme dérivé Kd (0.5 ou 1.0)
  
 **Questions :** **Questions :**
-Le dépassement diminue-t-il ?   +  * Le dépassement diminue-t-il ? 
-Le robot est-il plus stable lors de l’approche ?   +  * La stabilité augmente-t-elle ? 
-Le dérivé amplifie-t-il le bruit ?   +  Le dérivé amplifie-t-il le bruit ? 
-Le filtrage (paramètre α) améliore-t-il la stabilité ?  +  Le filtre (α) améliore-t-il les tremblements du robot ? 
 + 
 +---- 
 + 
 +===== Partie C — Analyse des données série ===== 
 + 
 +Les données typiques affichées : 
 + 
 +<code> 
 +D = distance mesurée 
 +e = erreur 
 +v = commande moteur 
 +I = intégrale 
 +d = dérivée filtrée 
 +</code> 
 + 
 +**Questions :** 
 +  * La commande v se rapproche-t-elle de 0 une fois stabilisé ? 
 +  * L’intégrale atteint-elle les limites Imax ? 
 +  * Le dérivé filtré est-il stable ou bruité ? 
 +  * Observe-t-on un dépassement (overshoot) dans la distance D ? 
 + 
 +---- 
 + 
 +==== 3) Synthèse finale ==== 
 + 
 +Rédiger un paragraphe répondant aux questions suivantes : 
 + 
 +  * Pourquoi P seul ne suffit-il pas ? 
 +  * En quoi I améliore la précision mais peut dégrader la stabilité ? 
 +  * Quel est le rôle du dérivé dans l’amortissement ? 
 +  * Quel triplet (Kp, Ki, Kd) est optimal pour VOTRE robot ? (justifier) 
 +  * Pourquoi d’un robot à l’autre les réglages diffèrent-ils ? 
 + 
 +----
  
----+==== 4) Bonus facultatif ====
  
-## 4) Partie C — Analyse des courbes+  * Ajouter une consigne variable via le port série   
 +  * Tracer les courbes D, e, v, I dans un tableur   
 +  * Tester 10 cm, 20 cm et 30 cm pour analyser la robustesse  
  
-Le moniteur série du robot affiche typiquement : 
  
  
ssi_elec_asservissement_mbot.1764427699.txt.gz · Dernière modification : de mistert2