4 - Contrôle d’un moteur "servo à rotation continue" avec un variateur PWM”

De Wiki L.A.B
Aller à : navigation, rechercher

Contrôle d’un moteur "servo à rotation continue" avec un variateur PWM

Le PWM peut être utilisé pour le contrôle d’un moteur "servo à rotation continue", comme ceux qui sont intégrés dans le robot du lab.
Dans ce tutoriel, on va utiliser le moteur de adafruit (https://www.adafruit.com/product/154). Sur la page internet, on trouve une information importante dans la section des détails techniques: "Required Pulse: 500us-2500us".

Configuration du timer du STM32

L'utilisation/configuration du timer se fait exactement la même façon comme pour commander une LED, mais il nous faut alors générer des pulses d’une longueur "t1" de 500 à 2500 micro secondes.
Ainsi dans la boite de dialogue de configuration du timer, il faut maintenant configurer la deuxième valeur "Counter Periode" à 2500. Ainsi la periode "T" est 2500 micro secondes.
Le fonctionnement du moteur est la suivante:

  • Si on envoie une impulsion "plus petite que la moitié" égale à (2500 + 500 ) / 2 = 1500 micro secondes, le moteur tourne "à gauche".
  • Si elle est "plus grande que la moitié", le moteur tourne "à droite".



Avec un peu de marge sur les valeurs, on peut décrire le scénario suivant:

  HAL_TIM_PWM_Start( &htim2, TIM_CHANNEL_1 );
  /* Infinite loop */
  while (1)
  {
   /* tourne à gauche... */
   __HAL_TIM_SET_COMPARE( &htim2, TIM_CHANNEL_1, 1000 );
   /* … pendant 5 secondes */
   HAL_Delay( 5000 );
   /* tourne à droite... */
   __HAL_TIM_SET_COMPARE( &htim2, TIM_CHANNEL_1, 2000 );
   /* … pendant 5 secondes */
   HAL_Delay( 5000 );
  }