Moteurs

Page Actions

Les moteurs

Introduction

Notre kit contient trois diff\xE9rents types de moteurs :
  • le moteur \xE0 courant continue (moteur DC)
  • le servomoteur
  • le moteur pas \xE0 pas.
Le moteur DC est utilis\xE9 pour un mouvement continu avec la direction (avant arri\xE8re) et des vitesses ajustables. On le trouve par exemple dans le ch\xE2ssis pour le mod\xE8le d'une voiture robotique. Un courant DC plus ou moins fort fait tourner le moteur plus ou moins vite.

Le servomoteur est adapt\xE9 si on veut bouger a un angle sp\xE9cifique. Il est g\xE9n\xE9ralement contr\xF4le par un signale PWM.

Le moteur pas \xE0 pas bouge, comme le nom sugg\xE8re, avec des pas distincts. L'angle atteint d\xE9pend du nombre le pas parcouru. On peut faire tourner un moteur pas \xE0 pas en permanence comme un moteur DC (pourtant avec une vitesse plus faible) ou on peut le bouger \xE0 un certain angle comme un servomoteur. Le moteur pas \xE0 pas n\xE9cessite une s\xE9quence d'impulsion pour tourner.

Le moteur DC

Le kit WeMos contient un moteur DC 3V-6V contr\xF4l\xE9 avec un contr\xF4leur pour moteur DC, tandis que le kit Freenove fourni un moteur 9V qui est mise en route avec un relais. Si la vitesse du moteur WeMos est contr\xF4lable par son module de contr\xF4le, le moteur DC du kit Freenove tourne \xE0 vitesse constante.
moteurDC.png motorShieldFront.png
Moteur du kit WeMos Contr\xF4leur du moteur DC
Les moteurs souvent utilis\xE9s dans les mod\xE8les de voitures robotiques et leurs contr\xF4leurs sont :

robotMotor.png l298.png l293d.png
Moteur du mod\xE8le de robot le contr\xF4leur L298N le contr\xF4leur L293D

Voici les feuilles techniques des contr\xF4leurs : L298N and L293D
Pour contr\xF4ler un moteur \xE0 courant continu avec le L298N les connexions suivantes sont faites (Les connexions pour le chip L293D sont similaires) :

L298N L293D WeMos ESP32 batterie externe 9V moteur commentaires
12V Vcc2   pole +   alimentation du moteur (et du contr\xF4leur pour le L298N)
  Vcc1 5V     alimentation du contr\xF4leur
GND GND, pins 4,5,12,13 GND pole -    
OUT1 1Y     pole +  
OUT2 2Y     pole -  
IN1 1A D1: GPIO 22     d\xE9fini la direction du mouvement
IN2 2A D2: GPIO 21      
EN1 1,2EN D0: GPIO 26     contr\xF4le la vitesse

Les pins GPIO contr\xF4lant la direction sont programm\xE9 en sortie. Avec IN1 = 1 et IN2 = 0 le moteur marche en avant, avec IN1 = 0 et IN2 = 1 il marche en arri\xE8re.

Le pin EN1 peut \xEAtre utilis\xE9 pour changer la vitesse du moteur. Dans ce cas, il doit \xEAtre programm\xE9 en PWM (Pulse Width Modulation : modulation de largeur d'impulsion). Avec un cycle de service (duty cycle) de \xAB 1 \xBB (signal toujours \xE0 \xAB 1 \xBB), le moteur tourne \xE0 vitesse maximum. Avec un cycle de service 1/2 il marche \xE0 la moit\xE9 de sa vitesse maximum et avec un cycle de service de z\xE9ro, il est \xE0 l\x92arr\xEAt.

Bien s\xFBr les pins IN3,IN3,EN2,OUT3,OUT4 ont la m\xEAme signification pour le deuxi\xE8me moteur, qui peut \xEAtre contr\xF4l\xE9 par le L298N.

Le servomoteur

servo.png

Le servomoteur est contr\xF4l\xE9 par un signal PWM, qui d\xE9fini l'angle du moteur. Les connexions sont sp\xE9cifi\xE9es dans le tableau suivant :

C\xE2ble du servomoteur Couleur du c\xE2ble Pin du ESP32
GND brun GND
Vcc rouge 5V
Signal orange D0 = GPIO 26

J'ai \xE9crit un pilote simple qui permet de bouger le moteur \xE0 un angle voulu : https://github.com/uraich/IoT-Course/blob/master/modules/motors/servo.py

Ce pilote est d\xE9j\xE0 int\xE9gr\xE9 dans l'interpr\xE9teur MicroPython et la classe "Servo" peut \xEAtre appel\xE9 directement.

Le moteur pas \xE0 pas

Le moteur pas \xE0 pas que nous utilisons est du type 28BYJ-48. Puisque il demande un courant plus \xE9lev\xE9 qu'un pin GPIO ne peut fournir, un module amplificateur ULN-2803 est livr\xE9 avec.

stepping.png

Ce vid\xE9o YouTube (en anglais) donne une excellente introduction du fonctionnement d'un moteur pas \xE0 pas. L'auteur ouvre un moteur 28BYJ-48 pour montrer le d\xE9tail de ces pi\xE8ces. Voir aussi les transparents du cours "syst\xE8mes embarqu\xE9s" (aussi en anglais).

Le moteur que nous utilisons fait un tour complet en 32 pas, mais il poss\xE8de une boite de vitesse, qui r\xE9duit le mouvement d'un facteur 64. Pour cette raison, l'arbre moteur fait un tour complet avec 64*32=2048 pas.

gears.png

Le moteur poss\xE8de deux rang\xE9s \xE0 32 dents qui travaillent comme petits aimants et qui peuvent \xEAtre polaris\xE9 en p\xF4le nord ou p\xF4le sud par un courant. Quatre pins sont n\xE9cessaires pour l'alimentation de spires pour cette polarisation. Le rotor consiste en 16 petits aimants polaris\xE9s en alternance.

Le rotor Les deux rang\xE9es de dents aimant\xE9es
rotor.png theeth3.png
Si la premi\xE8re rang\xE9e de dents est aliment\xE9e, les dents sont polaris\xE9es sud/nord en alternance et le rotor avec un aimant de p\xF4le nord (indiqu\xE9 par le trait vertical rouge) se place face \xE0 une dent polaris\xE9 sud. Ceci correspond au premier pas du moteur. En suite l'alimentation de la premi\xE8re rang\xE9e de dents est arr\xEAt\xE9 et la deuxi\xE8me rang\xE9e est aliment\xE9e. La pole nord se d\xE9place face au p\xF4le sud de la deuxi\xE8me rang\xE9e, ce qui correspond au deuxi\xE8me pas. Ensuite, c'est encore \xE0 la premi\xE8re rang\xE9e d'\xEAtre aliment\xE9, mais cette fois avec le courant invers\xE9. Ceci r\xE9sulte dans une inversion de la polarisation des dents. Les p\xF4les sud deviennent des p\xF4les nord en l'inverse. De nouveau le rotor se d\xE9place d'un pas. Finalement la deuxi\xE8me rang\xE9e est aliment\xE9e en courant invers\xE9 provoquant le quatri\xE8me et dernier pas du cycle. Ce cycle de quatre pas est en suite r\xE9p\xE9t\xE9.

On appelle ce type de mouvement du moteur : mode monophas\xE9 avant.
step1.png step2.png step3.png step4.png
L'alimentation des dents se fait par le contr\xF4leur du moteur pas \xE0 pas. Il est acc\xE9d\xE9 par quatre pins GPIO. Le sch\xE9ma en dessous montre les connexions avec le moteur.

steppingMotorDiagram.png

Si le pin "Red" est connect\xE9 \xE0 la masse et le pin "Pink" est aliment\xE9, un courant passe \xE0 travers la spire. Si par contre le pin Orange est aliment\xE9, ce courant est revers\xE9. Ceci r\xE9sulte \xE0 revers\xE9 la polarit\xE9 d'une s\xE9rie de dents.

Voil\xE0 les connexions de la carte contr\xF4leur du moteur pas \xE0 pas :
Contr\xF4leur moteur pas \xE0 pas ESP32 WeMos D1 Mini CPU
5V + 5V
5V - GND
IN1 D0, GPIO 26
IN2 D5, GPIO 18
IN3 D6, GPIO 19
IN3 D7, GPIO 23

Mode monophas\xE9 en avant

Le contr\xF4leur poss\xE8de 4 LED qui montre l'\xE9tat des lignes GPIO. Pour faire marcher le moteur en mode monophas\xE9 avant, on doit programmer les pins GPIO dans une s\xE9quence comme suit :
  IN1 IN2 IN3 IN4
Pas 1 1 0 0 0
Pas 2 0 1 0 0
Pas 3 0 0 1 0
Pas 4 0 0 0 1
Entre chaque pas, il faut attendre au minimum 2 ms pour que le champ magn\xE9tique s'\xE9tablisse et que le moteur a assez de temps pour bouger.

Si on traverse la table du bas vers le haut, le moteur tourne en sens inverse : mode monophas\xE9 arri\xE8re

Mode double phase en avant

On peut aussi faire marcher le moteur en aliment toujours les deux s\xE9ries de dents :
doubleStep1.png doubleStep2.png doubleStep3.png doubleStep4.png
Ceci r\xE9sulte dans un couple plus \xE9lev\xE9, mais aussi dans une courant deux fois plus fort.

Voici le tableau avec la s\xE9quence des \xE9tats GPIO:
  IN1 IN2 IN3 IN4
Pas 1 1 1 0 0
Pas 2 0 1 1 0
Pas 3 0 0 1 1
Pas 4 1 0 0 1

Mouvement en demi pas

En combinant les deux modes d\xE9crits en haut, on peut faire marche le moteur en demi pas et augmenter la r\xE9solution du mouvement ainsi.
step1.png doubleStep1.png step2.png doubleStep2.png
step3.png doubleStep3.png step4.png doubleStep4.png
La table d'\xE9tat des lignes GPIO pour le mode en demi pas:

  IN1 IN2 IN3 IN4
Pas 1 1 0 0 0
Pas 2 1 1 0 0
Pas 3 0 1 0 0
Pas 4 0 1 1 0
Pas 5 0 0 1 0
Pas 6 0 0 1 1
Pas 7 0 0 0 1
Pas 8 1 0 0 1
-- %USERSIG{UliRaich - 2021-06-30}%

Comments

 
I Attachment Action Size Date Who Comment
doubleStep1.pngpng doubleStep1.png manage 5 K 16 Mar 2022 - 08:20 UnknownUser  
doubleStep2.pngpng doubleStep2.png manage 5 K 16 Mar 2022 - 08:20 UnknownUser  
doubleStep3.pngpng doubleStep3.png manage 5 K 16 Mar 2022 - 08:20 UnknownUser  
doubleStep4.pngpng doubleStep4.png manage 5 K 16 Mar 2022 - 08:20 UnknownUser  
gears.pngpng gears.png manage 103 K 14 Mar 2022 - 20:07 UnknownUser  
l293d.pngpng l293d.png manage 230 K 12 Mar 2022 - 17:37 UnknownUser  
l298.pngpng l298.png manage 187 K 30 Jun 2021 - 08:37 UnknownUser  
moteurDC.pngpng moteurDC.png manage 47 K 30 Jun 2021 - 08:37 UnknownUser  
motorShieldFront.pngpng motorShieldFront.png manage 170 K 30 Jun 2021 - 08:37 UnknownUser  
robotMotor.pngpng robotMotor.png manage 56 K 30 Jun 2021 - 08:37 UnknownUser  
rotor.pngpng rotor.png manage 39 K 16 Mar 2022 - 08:16 UnknownUser  
servo.pngpng servo.png manage 142 K 30 Jun 2021 - 13:02 UnknownUser  
step1.pngpng step1.png manage 4 K 16 Mar 2022 - 08:19 UnknownUser  
step2.pngpng step2.png manage 4 K 16 Mar 2022 - 08:19 UnknownUser  
step3.pngpng step3.png manage 4 K 16 Mar 2022 - 08:19 UnknownUser  
step4.pngpng step4.png manage 4 K 16 Mar 2022 - 08:19 UnknownUser  
stepping.pngpng stepping.png manage 182 K 30 Jun 2021 - 13:02 UnknownUser  
steppingMotorDiagram.pngpng steppingMotorDiagram.png manage 29 K 09 Mar 2022 - 08:56 UnknownUser  
theeth3.pngpng theeth3.png manage 256 K 16 Mar 2022 - 08:16 UnknownUser  
Topic revision: r12 - 16 Mar 2022, UliRaich