Tags:
create new tag
view all tags

Les moteurs

Introduction

Notre kit contient trois différents types de moteurs :

  • le moteur à courant continue (moteur DC)
  • le servomoteur
  • le moteur pas à pas.
Le moteur DC est utilisé pour un mouvement continu avec la direction (avant arrière) et des vitesses ajustables. On le trouve par exemple dans le châssis pour le modèle d'une voiture robotique. Un courant DC plus ou moins fort fait tourner le moteur plus ou moins vite.

Le servomoteur est adapté si on veut bouger a un angle spécifique. Il est généralement contrôle par un signale PWM.

Le moteur pas à pas bouge, comme le nom suggère, avec des pas distincts. L'angle atteint dépend du nombre le pas parcouru. On peut faire tourner un moteur pas à pas en permanence comme un moteur DC (pourtant avec une vitesse plus faible) ou on peut le bouger à un certain angle comme un servomoteur. Le moteur pas à pas nécessite une séquence d'impulsion pour tourner.

Le moteur DC

Le kit WeMos contient un moteur DC 3V-6V contrôlé avec un contrôleur 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ôlable par son module de contrôle, le moteur DC du kit Freenove tourne à vitesse constante.

moteurDC.png motorShieldFront.png
Moteur du kit WeMos Contrôleur du moteur DC
Les moteurs souvent utilisés dans les modèles de voitures robotiques et leurs contrôleurs sont :

robotMotor.png l298.png l293d.png
Moteur du modèle de robot le contrôleur L298N le contrôleur L293D

Voici les feuilles techniques des contrôleurs : L298N and L293D
Pour contrôler un moteur à 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ôleur pour le L298N)
  Vcc1 5V     alimentation du contrôleur
GND GND, pins 4,5,12,13 GND pole -    
OUT1 1Y     pole +  
OUT2 2Y     pole -  
IN1 1A D1: GPIO 22     défini la direction du mouvement
IN2 2A D2: GPIO 21      
EN1 1,2EN D0: GPIO 26     contrôle la vitesse

Les pins GPIO contrôlant la direction sont programmé en sortie. Avec IN1 = 1 et IN2 = 0 le moteur marche en avant, avec IN1 = 0 et IN2 = 1 il marche en arrière.

Le pin EN1 peut être utilisé pour changer la vitesse du moteur. Dans ce cas, il doit être programmé en PWM (Pulse Width Modulation : modulation de largeur d'impulsion). Avec un cycle de service (duty cycle) de « 1 » (signal toujours à « 1 »), le moteur tourne à vitesse maximum. Avec un cycle de service 1/2 il marche à la moité de sa vitesse maximum et avec un cycle de service de zéro, il est à l’arrêt.

Bien sûr les pins IN3,IN3,EN2,OUT3,OUT4 ont la même signification pour le deuxième moteur, qui peut être contrôlé par le L298N.

Le servomoteur

servo.png

Le servomoteur est contrôlé par un signal PWM, qui défini l'angle du moteur. Les connexions sont spécifiées dans le tableau suivant :

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

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

Ce pilote est déjà intégré dans l'interpréteur MicroPython et la classe "Servo" peut être appelé directement.

Le moteur pas à pas

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

stepping.png

Ce vidéo YouTube (en anglais) donne une excellente introduction du fonctionnement d'un moteur pas à pas. L'auteur ouvre un moteur 28BYJ-48 pour montrer le détail de ces pièces. Voir aussi les transparents du cours "systèmes embarqués" (aussi en anglais).

Le moteur que nous utilisons fait un tour complet en 32 pas, mais il possède une boite de vitesse, qui réduit 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ède deux rangés à 32 dents qui travaillent comme petits aimants et qui peuvent être polarisé en pôle nord ou pôle sud par un courant. Quatre pins sont nécessaires pour l'alimentation de spires pour cette polarisation. Le rotor consiste en 16 petits aimants polarisés en alternance.

Le rotor Les deux rangées de dents aimantées
rotor.png theeth3.png
Si la première rangée de dents est alimentée, les dents sont polarisées sud/nord en alternance et le rotor avec un aimant de pôle nord (indiqué par le trait vertical rouge) se place face à une dent polarisé sud. Ceci correspond au premier pas du moteur. En suite l'alimentation de la première rangée de dents est arrêté et la deuxième rangée est alimentée. La pole nord se déplace face au pôle sud de la deuxième rangée, ce qui correspond au deuxième pas. Ensuite, c'est encore à la première rangée d'être alimenté, mais cette fois avec le courant inversé. Ceci résulte dans une inversion de la polarisation des dents. Les pôles sud deviennent des pôles nord en l'inverse. De nouveau le rotor se déplace d'un pas. Finalement la deuxième rangée est alimentée en courant inversé provoquant le quatrième et dernier pas du cycle. Ce cycle de quatre pas est en suite répété.

On appelle ce type de mouvement du moteur : mode monophasé avant.

step1.png step2.png step3.png step4.png
L'alimentation des dents se fait par le contrôleur du moteur pas à pas. Il est accédé par quatre pins GPIO. Le schéma en dessous montre les connexions avec le moteur.

steppingMotorDiagram.png

Si le pin "Red" est connecté à la masse et le pin "Pink" est alimenté, un courant passe à travers la spire. Si par contre le pin Orange est alimenté, ce courant est reversé. Ceci résulte à reversé la polarité d'une série de dents.

Voilà les connexions de la carte contrôleur du moteur pas à pas :

Contrôleur moteur pas à 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é en avant

Le contrôleur possède 4 LED qui montre l'état des lignes GPIO. Pour faire marcher le moteur en mode monophasé avant, on doit programmer les pins GPIO dans une séquence 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étique s'établisse 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é arrière

Mode double phase en avant

On peut aussi faire marcher le moteur en aliment toujours les deux séries de dents :

doubleStep1.png doubleStep2.png doubleStep3.png doubleStep4.png
Ceci résulte dans un couple plus élevé, mais aussi dans une courant deux fois plus fort.

Voici le tableau avec la séquence des états 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écrits en haut, on peut faire marche le moteur en demi pas et augmenter la résolution du mouvement ainsi.

step1.png doubleStep1.png step2.png doubleStep2.png
step3.png doubleStep3.png step4.png doubleStep4.png
La table d'état 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
-- Uli Raich - 2021-06-30

Comments

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng doubleStep1.png r1 manage 5.3 K 2022-03-16 - 08:20 UliRaich  
PNGpng doubleStep2.png r1 manage 5.6 K 2022-03-16 - 08:20 UliRaich  
PNGpng doubleStep3.png r1 manage 5.2 K 2022-03-16 - 08:20 UliRaich  
PNGpng doubleStep4.png r1 manage 5.5 K 2022-03-16 - 08:20 UliRaich  
PNGpng gears.png r1 manage 104.0 K 2022-03-14 - 20:07 UliRaich  
PNGpng l293d.png r1 manage 230.1 K 2022-03-12 - 17:37 UliRaich  
PNGpng l298.png r1 manage 187.0 K 2021-06-30 - 08:37 UliRaich  
PNGpng moteurDC.png r1 manage 47.7 K 2021-06-30 - 08:37 UliRaich  
PNGpng motorShieldFront.png r1 manage 170.7 K 2021-06-30 - 08:37 UliRaich  
PNGpng robotMotor.png r1 manage 56.9 K 2021-06-30 - 08:37 UliRaich  
PNGpng rotor.png r1 manage 39.5 K 2022-03-16 - 08:16 UliRaich  
PNGpng servo.png r1 manage 143.0 K 2021-06-30 - 13:02 UliRaich  
PNGpng step1.png r1 manage 4.8 K 2022-03-16 - 08:19 UliRaich  
PNGpng step2.png r1 manage 4.7 K 2022-03-16 - 08:19 UliRaich  
PNGpng step3.png r1 manage 4.8 K 2022-03-16 - 08:19 UliRaich  
PNGpng step4.png r1 manage 4.6 K 2022-03-16 - 08:19 UliRaich  
PNGpng stepping.png r1 manage 182.9 K 2021-06-30 - 13:02 UliRaich  
PNGpng steppingMotorDiagram.png r1 manage 29.9 K 2022-03-09 - 08:56 UliRaich  
PNGpng theeth3.png r1 manage 256.3 K 2022-03-16 - 08:16 UliRaich  
Edit | Attach | Watch | Print version | History: r12 < r11 < r10 < r9 < r8 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r12 - 2022-03-16 - UliRaich
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback