Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
fr:informatics:asservir_les_moteurs_en_vitesse [25/08/2024 16:38]
Keuronde créée
fr:informatics:asservir_les_moteurs_en_vitesse [30/01/2025 12:52] (Version actuelle)
Keuronde [Partie centrale]
Ligne 25: Ligne 25:
 **Le gain du capteur** : pour calculer l’erreur, il est nécessaire que le retour du capteur soit dans la même unité que la consigne. Dans notre cas, nous mesurons la vitesse en impulsions par milliseconde et exprimons la consigne en millimètres par seconde. Cette conversion sera gérée dans la partie de la lecture des codeurs. **Le gain du capteur** : pour calculer l’erreur, il est nécessaire que le retour du capteur soit dans la même unité que la consigne. Dans notre cas, nous mesurons la vitesse en impulsions par milliseconde et exprimons la consigne en millimètres par seconde. Cette conversion sera gérée dans la partie de la lecture des codeurs.
  
-#Insérer schéma d’asservissement+{{ :fr:informatics:asser_schema_global.png |}}
  
 ==== Pourquoi asservir ? ==== ==== Pourquoi asservir ? ====
Ligne 31: Ligne 31:
 Un système non-asservi, parfois décrit comme « en boucle ouverte » réagira très différemment en fonction des perturbations auxquelles est soumis le système. Un exemple concret ? Commander les moteurs des PAMI à 90 %. Soulever le PAMI et notez la vitesse des moteurs. Posez le PAMI et comparez ! Un système non-asservi, parfois décrit comme « en boucle ouverte » réagira très différemment en fonction des perturbations auxquelles est soumis le système. Un exemple concret ? Commander les moteurs des PAMI à 90 %. Soulever le PAMI et notez la vitesse des moteurs. Posez le PAMI et comparez !
  
-#Donner les valeurs de nos PAMIs.+Voici les valeurs avec notre PAMI 
 + 
 +^ Moteur ^ Position ^ Vitesse ^ 
 +| Gauche | Soulevé | 59 cm/s | 
 +| Gauche | Au sol | 55 cm/s | 
 +| Droit | Soulevé | 63 cm/s | 
 +| Droit | Au sol | 62 cm/s | 
  
 ==== Quel type d’asservissement ? ==== ==== Quel type d’asservissement ? ====
Ligne 61: Ligne 68:
   Temps_init()   Temps_init()
 Dans la boucle principale, utilisez les fonctions de temps pour n’exécuter votre code qu’à intervalles réguliers. Dans la boucle principale, utilisez les fonctions de temps pour n’exécuter votre code qu’à intervalles réguliers.
-  temps_ms=0 ;+  m_temps_ms=0 ;
   while(1){   while(1){
-    if(Temps_get_ms()!= temps_ms){ +    if(Temps_get_temps_ms()!= temps_ms){ 
-      if(Temps_get_ms() % pas_de_temps == 0){+      if(Temps_get_temps_ms() % pas_de_temps == 0){
         // Votre futur code ici         // Votre futur code ici
       }       }
Ligne 90: Ligne 97:
   float consigne_vitesse = 200; // Consigne en mm/s.   float consigne_vitesse = 200; // Consigne en mm/s.
   int demi_periode = 2000; // Temps haut ou bas du créneau (en ms)   int demi_periode = 2000; // Temps haut ou bas du créneau (en ms)
-A l’intérieur de votre « if(Temps_get_ms()!= temps_ms){ … } » : +A l’intérieur de votre « if(Temps_get_temps_ms()!= m_temps_ms){ … } » : 
-  if(Temps_get_ms() % demi_periode  == 0){+  if(Temps_get_temps_ms() % demi_periode  == 0){
     consigne_vitesse = - consigne_vitesse;     consigne_vitesse = - consigne_vitesse;
     AsserMoteur_setConsigne_mm_s(consigne_vitesse, MOTEUR_A);     AsserMoteur_setConsigne_mm_s(consigne_vitesse, MOTEUR_A);
Ligne 97: Ligne 104:
   }   }
  
-#IMG signal carré+{{ :fr:informatics:consigne_vitesse.png?direct&400 |}}
  
 Envoyez une consigne à 200 mm/s qui s’inverse toutes les deux secondes. Vous adapterez si nécessaire par la suite. Envoyez une consigne à 200 mm/s qui s’inverse toutes les deux secondes. Vous adapterez si nécessaire par la suite.
Ligne 114: Ligne 121:
 Avec un tel réglage, vous devriez obtenir une réponse molle.  Avec un tel réglage, vous devriez obtenir une réponse molle. 
  
-#IMG :Ajouter image du graphique+{{ :fr:informatics:gainp_mou.png?direct&400 |}}
  
 Multiplier successivement votre gain par 2 jusqu’à avoir une réponse plus dynamique Multiplier successivement votre gain par 2 jusqu’à avoir une réponse plus dynamique
  
-#IMG : gain_P dynamique.+{{ :fr:informatics:gainp_regle.png?direct&400 |}} 
 + 
 +Réglez ensuite votre gain I, en prenant comme première valeur gain_I = gain_P/10. Ajustez-le de la même manière que le gain_P. 
 + 
 +Pour voir l’effet du gain I, nous augmentons la valeur de la consigne de vitesse à 400 mm/s et la fréquence de la consigne. 
 + 
 +{{ :fr:informatics:sans_gain_i.png?direct&400 |}} 
 + 
 +Nous observons que, sans gain I, la consigne n’est pas atteinte (ci-dessus).
  
-Réglez ensuite votre gain I, en prenant comme première valeur gain_I = gain_P/10Ajustez-le de la même manière que le gain_P+{{ :fr:informatics:avec_gaini.png?direct&400 |}}
  
-#IMG : gain_I réglé+Lorsque nous réglons notre gain I, nous observons que la consigne est atteinte. Ceci au prix d’un petit dépassement.
  
 Pour le gain_D, débrouillez-vous ! Nous, nous ne nous en servons pas… Pour le gain_D, débrouillez-vous ! Nous, nous ne nous en servons pas…