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

De Wiki L.A.B
Révision de 8 novembre 2017 à 19:50 par BERNIER François (discussion | contributions) (Page créée avec « =='''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 continu... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
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 );
 }