4 - Contrôle d’un moteur "servo à rotation continue" avec un variateur PWM”
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 );
}