Contrôler les moteurs à courant continu avec le signal PWM

Projet par
Nabil.J

Arduino / signal PWM / Pont H / pilote L298N

Dans ce tutoriel Arduino, nous allons apprendre à contrôler les moteurs à courant continu en utilisant Arduino. Nous allons examiner quelques techniques de base pour contrôler les moteurs à courant continu et voir deux exemples pour apprendre à les contrôler à l'aide du pilote L298N et de la carte Arduino.

Nous pouvons contrôler la vitesse du moteur à courant continu en contrôlant simplement la tension d'entrée du moteur et la méthode la plus courante consiste à utiliser le signal PWM.

Arduino

Image Matériel Qt. Description Prix
Clone Arduino Uno R3 - RobotDyn - Avec Pins A6 et A7
25.80 €
Résistance 1W - 220 ohms - Film Métal

1W 220 ohms
Tolérance : 1%
Matériau : Film métal

1.16 €
Module Led RGB (Rouge Verte Bleu) pour Arduino ou Raspberry

Ce module vous permet d'expérimenter facilement l'utilisation d'une Led RGB (dont la couleur varie) avec Arduino.

2.99 €
40 Cavaliers Dupont 20cm Mâle/Mâle

40 Cavaliers (jumpers) 20 cm type "Dupont" Mâle-Mâle. Ce sont les cavaliers types à utiliser pour les prototypages sur...

2.39 €
Potentiomètre linéaire B10K - 10K Ohms - Arbre 15 mm

Tête fendue
Diamètre de l'arbre : 6 mm
Longueur de l'arbre : 15 mm avec la pas de vis
Diamètre de la tige...

1.99 €
Module L298N - Contrôler Moteur avec Arduino 4.90 €
Mini Interrupteur Bouton Poussoir Momentané pour Circuits Imprimés - 6 x 6 x 5 mm - Rouge

Mini interrupteur, bouton poussoir momentané, pour circuits imprimés. Cet interrupteur momentané (le signal dure le temps de...

0.49 €
Alimentation 12V - 120W - 10A - Sans cordon

Une petite alimentation 12V pour des projets ne dépassant pas les 120W, soit 10A à 12V.



Cette...

18.90 €
Moteur Motoréducteur 12V 500 RPM 37.10 €
Ajouter au panier 95.72 €
Image Matériel Qt. Description Prix
Set Tournevis Précision + 54 embouts de Vissage

Tournevis de précision de qualité supérieure avec 54 embouts de serrage/vissage de 4 mm. Ce kit a été conçu pour travailler...

33.90 €
Ajouter au panier 33.9 €

Instructions

1 - Définition de la commande PWM 10 Minute(s)

Le PWM (Pulse Width Modulation) ou MLI (Modulation en Largeur d’impulsions) est un signal numérique carré de période T où la tension ne peut prendre que les logiques “0” et “1”. Le niveau bas “0” correspond généralement à 0 Volt et le niveau haut “1” correspond à V Max. La durée de l’impulsion pour laquelle la tension est à l’état haut est notée Th .

La modulation de largeur d'impulsion, ou PWM, est une technique permettant d'obtenir des résultats analogiques avec des moyens numériques. Le contrôle numérique est utilisé pour créer une onde carrée, un signal activé ou désactivé. Ce motif tout ou rien peut simuler des tensions entre la pleine tension (5 volts) et la désactivation (0 volt) en changeant la partie du temps pendant laquelle le signal passe. La durée de "mise à un" s'appelle la largeur d'impulsion. Pour obtenir des valeurs analogiques variables, vous modifiez ou modulez cette largeur d'impulsion.

VuCfuj4sMYIypfWFhjZrr3TDNO27uzW4XDgn_K4_

  • V(t) = VMax           si 0 ≤ t ≤ Th

  • V(t) = 0                  si Th < t ≤ T

Avec :

T :             Période du signal
Th :           Durée du signal à l’état haut
VMax :       Tension maximale
VMoy :       Tension moyenne

2VQOgnhk-WRv83vLzM6zYtCdiYGVceWQd0QqGc4i

on définit le rapport cyclique て = ThT[%]
donc 0 ≤ て ≤ 1 ; alors VMoy = て.VMax

 5nhUDHbigJVJpZ-VojV52FiRAIF3ZWNAKl9jxOev

2 - La PWM sur Arduino 10 Minute(s)

Les broches de la PWM

Sur votre carte Arduino, vous devriez disposer de 6 broches qui sont compatibles avec la génération d’une PWM. Elles sont repérées par le symbole tilde ~ . Voici les broches générant une PWM : 3, 5, 6, 9, 10 et 11.

La fréquence de la PWM

Cette fréquence est fixe, elle ne varie pas au cours du temps. Pour votre carte Arduino elle est de environ 490Hz.

La fonction analogWrite()

La carte Arduino intègre une fonction toute prête pour utiliser la PWM. En fait, les commandes données par le microcontrôleur sont les paramètres passés dans la fonction qui génère la PWM, maintenant la fonction permettant de réaliser ce signal : analogWrite() . Elle prend deux arguments :

  • Le premier est le numéro de la broche où l’on veut générer la PWM

  • Le second argument représente la valeur du rapport cyclique à appliquer. On n’exprime pas cette valeur en pourcentage, mais avec un nombre entier compris entre 0 et 255.

Le rapport cyclique s’exprime de 0 à 100 % de la période. Cependant, dans cette fonction il s’exprimera de 0 à 255 (sur 8 bits). Ainsi, pour un rapport cyclique de 0% nous enverrons la valeur 0, pour un rapport de 50%, nous enverrons 127 et pour 100% ce sera 255. Les autres valeurs sont bien entendu considérées de manière proportionnelle entre les deux. Il vous faudra faire un petit calcul pour savoir quel est le pourcentage du rapport cyclique plutôt que l’argument passé dans la fonction.

Le rapport cyclique est mesuré en pourcentage (%). Plus le pourcentage est élevé, plus le niveau logique 1 est présent dans la période et moins le niveau logique 0 l’est. Et inversement. Le rapport cyclique du signal est donc le pourcentage de temps de la période durant lequel le signal est au niveau logique 1.

Dans le graphique ci-dessous, les lignes vertes représentent une période de temps normale. Cette durée ou période est l'inverse de la fréquence PWM. En d'autres termes, avec la fréquence PWM d'Arduino à environ 490 Hz, les lignes vertes mesureraient chacune 2 millisecondes. Un appel à la fonction analogWrite () est sur une échelle de 0 à 255, de sorte que analogWrite (255) demande un cycle de service de 100% (toujours activé) et analogWrite (127) un cycle de service de 50% (sur la moitié du temps) pour exemple.

 qDTUlATzVZI38_1-lK7RLfTH2D6lGw1USa6ADEdo

3 - Application de la commande PWM sur une diode RGB 15 Minute(s)

La LED RGB ou RVB

RGB pour Red-Green-Blue en anglais. Cette LED est composée de trois LED de couleurs précédemment énoncées. Elle possède donc 4 broches et existe sous deux modèles : à anode commune et à cathode commune. Exactement comme les afficheurs 7 segments. Choisissez-en une à anode commune.

Mixer les couleurs

La base de toute couleurs est composée de trois couleurs primaires qui sont :

  • Le rouge

  • Le vert

  • Le bleu

À partir de ces trois couleurs, il est possible de créer n’importe quelle autre couleur du spectre lumineux visible en mélangeant ces trois couleurs primaires entre elles. Par exemple, pour faire de l’orange on va mélanger du rouge (2/3 du volume final) et du vert (à 1/3 du volume final). la fonction analogWrite() prend un argument pour la PWM qui va de 0 à 255. Tout comme la proportion de couleur dans les logiciels de dessin ! On parle de "norme RGB" faisant référence aux trois couleurs primaires. Pour connaître les valeurs RGB d’une couleur, on vous propose de regarder avec le logiciel Gimp (gratuit et multiplateforme) . Pour cela, il suffit de deux observations/clics :

  1. Tout d’abord on sélectionne la "boîte à couleurs" dans la boîte à outils

  2. Ensuite, en jouant sur les valeurs R, G et B on peut voir la couleur obtenue

KB2V8RdWEWMqHT4MMYvJ7xyxLYwmxqj4dzUuz9xN

Afin de faire différentes couleurs, nous utiliserons analogWrite() trois fois (une pour chaque LED). Prenons tout de suite un exemple avec du orange et regardons sa composition dans Gimp :

ftN0dsSX-DTpn7cq0VKOySrhlTvzuKULb8bNZSlW

À partir de cette image nous pouvons voir qu’il faut :

  • 100 % de rouge (255)

  • 56 % de vert (144)

  • 0% de bleu (0)

Nous allons donc pouvoir simplement utiliser ces valeurs pour faire une jolie couleur sur notre LED RGB . Souvenez-vous que c’est une LED à anode commune, or lorsqu’on met une tension de 5V en sortie du microcontrôleur, la LED sera éteinte. Les LED sont donc pilotées à l’état bas . Autrement dit, ce n’est pas la durée de l’état haut qui est importante mais plutôt celle de l’état bas. Afin de pallier cela, il va donc falloir mettre la valeur "inverse" de chaque couleur sur chaque broche en faisant l’opération comme suit ValeurReelle=255−ValeurTheorique.

Le montage à réaliser

Pour réaliser ce schéma on aura besoin des éléments suivants :

  • Une carte RobotDyn UNO

  • 3 résistances 220 Ohms

  • Une diode RGB (anode commune)

  • Des cavaliers pour faire la liaison entre les différents composants du montage

H16TiCsRY_HM8v9kyjLGp5vmtRgGl2DkXTwMu1Dk

Exemple de jeu de couleur

L’objectif est assez simple, vous allez générer trois PWM différentes (une pour chaque LED de couleur) et créer 7 couleurs distinctes qui sont les suivantes :

  • rouge

  • vert

  • bleu

  • jaune

  • bleu ciel

  • violet

  • blanc

Ces couleurs devront "défiler" une par une (dans l’ordre que vous voudrez) toutes les 500ms.

4 - Application sur un moteur à aimant permanent (MCC) 20 Minute(s)

Principe de fonctionnement

La modulation de largeur d'impulsion ou PWM est une technique qui nous permet d'ajuster la valeur moyenne de la tension transmise au dispositif électronique en allumant et en éteignant rapidement le courant. La tension moyenne dépend du rapport cyclique ou de la durée pendant laquelle le signal est activé par rapport à la durée pendant laquelle le signal est désactivé sur une période donnée.

La variation de la vitesse d’un MCC se fait par la variation de la tension d’alimentation aux bornes de l’induit. Cependant, pour les faibles valeurs de la tension, le moteur a du mal à démarrer et à conserver sa vitesse. En effet, les MCC exigent une tension minimale afin de vaincre le couple résistant (couple des pertes Tp) : frottement mécaniques et résistances ferromagnétiques. Il devient donc difficile d’ajuster les faibles vitesses de façon précise. La solution à ce problème consiste à utiliser une commande par PWM. Il suffit de fournir au moteur la tension maximale qui ne sera appliquée que par de très courts instants. En ajustant le rapport cyclique て , on arrive à faire varier la vitesse du MCC, même pour les faibles vitesses. Selon le type des moteurs (temps de réponse), la fréquence du signal PWM varie de 100 Hz à 30 KHz. Si la fréquence du signal PWM devient importante, le MCC risque de ne pas fonctionner correctement vu son faible temps de réponse.

Modélisation d’un moteur à courant continu

U = E + R.I  ⇒ E = U - R.I

E = K.Φ.Ω ⇒  Ω = E/K.Φ ⇒ Ω = (U - R.I )/ K.Φ

Puisque U = UMoy = て .UMax donc Ω = (て. UMax - R.I )/ K.Φ

si て (largeur d’impulsion)  augmente alors Ω augmente et vice versa .

  • I est le courant traversant l'induit (A);

  • U est la tension aux bornes de l'induit (V);

  • R est la résistance électrique interne du moteur (Ohm);

  • E est la force contre-électromotrice ;

  • Ω est la vitesse du moteur ;

  • Φ est le flux magnétique du moteur ;

Le pont H

1. Définition

Le pont en H est une structure électronique servant à contrôler la polarité aux bornes d’un dipôle. Il est composé de quatre éléments de commutation généralement disposés schématiquement en une forme de H d’où le nom. Les commutateurs peuvent être des relais, des transistors, ou autres éléments de commutation en fonction de l’application visée.

Cette structure se retrouve dans plusieurs applications, de l’électronique de puissance incluant le contrôle des moteurs, les convertisseurs et hacheurs, ainsi que les onduleurs. Il se présente sous différentes formes passant par les circuits intégrés pour les applications de faibles et moyennes puissances, les circuits discrets ainsi que les modules intégrés pour les moyennes et hautes puissances.

BbyB3ro7cnJq6Q6CNJ5PdMtcvnbVhoR_nd_rAkdy

2. Le principe

Les interrupteurs fonctionnent deux par deux. Le A est associé au D et le B est associé au C. Dans le schéma ci-dessus, rien ne se passe car tous les interrupteurs sont ouverts (ils ne laissent pas passer le courant). Le moteur est arrêté. On utilise le pont en activant les commutateurs de différentes combinaisons pour obtenir le branchement voulu. On actionne en même temps les interrupteurs A et D (schéma de gauche), ou les interrupteurs B et C (schéma de droite) :

Od7ji2R8ERj6_z9kIk-qEcdT7i9E3Hbjzt0ds53O

3. Explication

Sur le schéma de gauche : les interrupteurs A et D sont fermés. Le courant entre par la patte gauche du moteur et sort par sa droite. Le moteur tourne dans un sens. Sur le schéma de droite : les interrupteurs B et C sont fermés. Le courant entre par la patte droite du moteur et sort par sa gauche. Le moteur tourne donc dans le sens inverse.

64xOYTl8m857ZkJgdIttE6FIgGiaH9rCgECbaz6C

 

Module L298N

Le L298N est un pilote de moteur double H-Bridge qui permet le contrôle de la vitesse et de la direction de deux moteurs CC en même temps. Le module peut piloter des moteurs à courant continu ayant des tensions comprises entre 5 et 35V, avec un courant de crête allant jusqu’à 2A.

tiKx5xiQuwL1JOLtEHqlVEqGQdgcUk9DO7ix6kJb

Le module dispose de deux borniers à vis pour le moteur A et B et d'un autre bornier à vis pour la broche de masse, le VCC pour le moteur et une broche 5V qui peut être une entrée ou une sortie.

Rr4_pXeXdqIax_7ErTxbd_xX05gP8uANGuW4Co_v

 

Cela dépend de la tension utilisée sur les moteurs VCC. Le module dispose d'un régulateur 5V intégré qui est activé ou désactivé à l'aide d'un cavalier. Si la tension d'alimentation du moteur est jusqu'à 12 V, nous pouvons activer le régulateur 5 V et la broche 5 V peut être utilisée comme sortie, par exemple pour alimenter votre carte Arduino. Mais si la tension du moteur est supérieure à 12 V, nous devons déconnecter le cavalier car ces tensions endommageront le régulateur 5 V intégré. Dans ce cas, la broche 5V sera utilisée comme entrée car nous avons besoin de la connecter à une alimentation 5V afin que le circuit intégré fonctionne correctement.

Nous pouvons noter ici que ce module fait une chute de tension d’environ 2V. Par exemple, si nous utilisons une alimentation 12V, la tension aux bornes des moteurs sera d'environ 10V, ce qui signifie que nous ne pourrons pas obtenir la vitesse maximale de notre moteur 12V DC.

Les entrées de contrôle logique du module L298

Les broches Enable A et Enable B sont utilisées pour activer et contrôler la vitesse du moteur. Si un cavalier est présent sur cette broche, le moteur sera activé et fonctionnera à la vitesse maximale. Si nous retirons le cavalier, nous pouvons connecter une entrée PWM à cette broche et contrôler ainsi la vitesse du moteur. Si nous connectons cette broche à la masse, le moteur sera désactivé.

MTNpxsGrfqJEi2y7Q5IL2yW6w26ifyFGnyuEoqn6

 

Exemple d’utilisation du module L298N

Faisons maintenant des applications pratiques. Dans le premier exemple, nous allons contrôler la vitesse du moteur à l'aide d'un potentiomètre et modifier le sens de rotation à l'aide d'un bouton-poussoir. Voici les schémas du circuit.

ecqRkbwIT0eHoR6SuS7WcPvDt-ww10B8Jl8UJeLJ

Pour réaliser le montage ci-dessus, on aura besoin des éléments suivants :

  • Carte RobotDyn UNO

  • Bouton poussoir

  • Un potentiomètre 10K Ohms

  • Une résistance 220 Ohms

  • Une alimentation 12 V DC pour alimenter le moteur

  • Un module L298N

  • Un Moteur à courant continu

  • Des cavaliers pour câbler le montage

Description

Nous devons donc d'abord définir les broches et certaines variables nécessaires au programme. Dans la section de configuration, nous devons définir les modes de broche et le sens de rotation initial du moteur.

Dans la section de la boucle, nous commençons par lire la valeur du potentiomètre, puis nous mappons la valeur obtenue de 0 à 1023 à une valeur de 0 à 255 pour le signal PWM ou un rapport cyclique de 0 à 100% du signal. Ensuite, en utilisant la fonction analogWrite (), nous envoyons le signal PWM à la broche Enable de la carte L298N, qui pilote le moteur.

Puis, nous vérifions si nous avons appuyé sur le bouton, et si cela est vrai, nous changerons le sens de rotation du moteur en réglant (inversant) les états des entrées 1 et 2. Le bouton-poussoir fonctionnera comme un bouton à bascule et à chaque pression, il changera le sens de rotation du moteur.

 


Vous en avez fait une copie?