No products
Prices are tax included
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.
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.
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
on définit le rapport cyclique て = ThT[%]
donc 0 ≤ て ≤ 1 ; alors VMoy = て.VMax
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.
Cette fréquence est fixe, elle ne varie pas au cours du temps. Pour votre carte Arduino elle est de environ 490Hz.
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.
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.
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 :
Tout d’abord on sélectionne la "boîte à couleurs" dans la boîte à outils
Ensuite, en jouant sur les valeurs R, G et B on peut voir la couleur obtenue
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 :
À 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.
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
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.
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.
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 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.
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) :
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.
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.
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.
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 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é.
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.
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
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.