dimanche 17 janvier 2016

Interfacing Servo-Motor With STM32


Interfacing Servo-Motor With STM32



Bonjour, Aujourd'hui on va discuter le fonctionnent du servo moteur en essayant de le contrôler avec un STM32F4, contrôler veut dire contrôler quelle angle il la tourne vers. donc Commençons par une petite définition d'un servomoteur.

Un servomoteur est un système motorisé capable d'atteindre des positions prédéterminées, puis de les maintenir. La position est : dans le cas d’un moteur rotatif, une valeur d'angle et, dans le cas d’un moteur linéaire une distance. On utilise des moteurs électriques (continu, asynchrone, brushless) aussi bien que des moteurs hydrauliques. Le démarrage et la conservation de la position prédéterminée sont commandés par un système de réglage.     

Mais savez vous que la commande de servo-moteur est pas totalement comme le moteur dc genre on l'alimente alors il tourne ? savez vous que chaque servo-moteur a sa propre méthode de commande et de fonctionnement ?
On peut tout être d'accord que chaque servo moteur il fonctionne avec un signal PWM pulse with modulation que j'ai déjà définit sur cet article PWM. Mais il faut bien comprendre que chaque servo a sa propre façon de commande qu'on peut seulement la comprendre sur son fichier technique.

Alors pour comprendre le fonctionnement de chaque un, on qu'aller a sa fichier technique et lire exactement le pulse associer a chaque angle par rapport au période cyclique qu'il a chaque un . citons cette exemple 

les servomoteurs sont commander par les envoyer des pulsations. Ici le servo doit recevoir chaque 20 ms une pulsation ou le longueur de cette dernière va indiquer a quelle angle exactement il doit tourner notre servomoteur. 

Voila cette exemple:
  • si a chaque 20 ms j'envoi une pulsation de longueur 1 ms le servo va tourner vers 0 degré 
  • si a chaque 20 ms j'envoi une pulsation de 1.5 ms le servo va tourner précisément vers 90 degré
  • ......


D'ici on peut conclure la méthode de la quelle le servo on doit le commander avec notre microcontrôleur, une seule sortie numérique est capable de le commander si je la met on niveau haut pendant la période ou pulsation est active et je la met en niveau bas pendant le reste de la période (20ms - pulsation).

Aujourd'hui je vais commander ce servomoteur via une carte STM32 F4
Résultat de recherche d'images pour "servomoteurs"
on se référant de sa fichier technique j'ai écris le programme suivant:




//Let's electronic By Aymen Lachkhem
// Interfacing Servo-motor to STM32
// Letselectronic.blogspot.com
void servoRotate0() //0 Degree
{
  unsigned int i;
  for(i=0;i<50;i++)
  {
    gpiob_odr.f3 = 1;
    Delay_us(1000);
    gpiob_odr.f3 = 0;
    Delay_us(19000);
  }
}
     void servoRotate90() //90 Degree
{
  unsigned int i;
  for(i=0;i<50;i++)
  {
    gpiob_odr.f3 = 1;
    Delay_us(2500);
    gpiob_odr.f3 = 0;
    Delay_us(17500);
  }
}
     void servoRotate180() //180 Degree
{
  unsigned int i;
  for(i=0;i<50;i++)
  {
    gpiob_odr.f3 = 1;
    Delay_us(4400);
    gpiob_odr.f3 = 0;
    Delay_us(16000);
  }
}
void main(){


GPIO_Digital_Output(&GPIOB_ODR, _GPIO_PINMASK_3);     // configuration of pb3 as Digital Output
GPIO_Digital_Input (&GPIOA_BASE, _GPIO_PINMASK_3 | _GPIO_PINMASK_4 | _GPIO_PINMASK_5); // configure PORTA pins as speed control input
  while (1) {
     if (GPIOA_IDR.B3) {
    servoRotate0(); //0 Degree
    Delay_ms(2000);}
     if (GPIOA_IDR.B4) {
    servoRotate90(); //90 Degree
    Delay_ms(2000);}
     if (GPIOA_IDR.B5) {
    servoRotate180(); //180 Degree
    Delay_ms(2000);}
  }
}


Il est tout indiquer au commentaire de programme a propos la configuration, le principe est totalement simple ou j'aurai 3 entrées numériques que je vais utiliser comme des boutons poussoires qui vont forcer le servo moteur relier au  sortie numérique a tournée vers une angle bien précise comme il est citer au vidéo au dessous 


Une démonstration vidéo qui résume tout le travail fait.



   




3 commentaires:


  1. Peter Scofield22 juillet 2020 à 11:17
    If you need to hire a real hacker to help monitor your spouse's cell phone remotely, contact deadlyhacker01@gmail.com or whatsapp: +1 3478577580. They are very reliable.

    RépondreSupprimer
  2. Pls comment contrôler 3 motors servo au même temps (le code)

    RépondreSupprimer
  3. Let'S Electronic : Interfacing Servo-Motor With Stm32 >>>>> Download Now

    >>>>> Download Full

    Let'S Electronic : Interfacing Servo-Motor With Stm32 >>>>> Download LINK

    >>>>> Download Now

    Let'S Electronic : Interfacing Servo-Motor With Stm32 >>>>> Download Full

    >>>>> Download LINK

    RépondreSupprimer