Raspberry Pi - Moteur DC
Ce tutoriel vous explique comment utiliser Raspberry Pi pour contrôler un moteur à courant continu. En détail, nous apprendrons :
- Comment fonctionne un moteur à courant continu
- Comment utiliser Raspberry Pi et un pilote L298N pour contrôler un moteur à courant continu
- Comment programmer un Raspberry Pi pour contrôler la vitesse et la direction d'un moteur à courant continu
- Comment programmer un Raspberry Pi pour contrôler simultanément deux moteurs à courant continu
Préparation du matériel
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos du moteur à courant continu
Brochage du moteur à courant continu
Le moteur à courant continu a deux fils, le fil positif est généralement rouge et le fil négatif est généralement noir.
Comment ça marche
Lors de l'achat d'un moteur à courant continu, il est essentiel de comprendre la tension à laquelle il fonctionne. Par exemple, considérons un moteur à courant continu de 12V.
Lorsque vous alimentez le moteur à courant continu de 12V avec une source d'alimentation de 12V :
- Connectez 12V et GND au fil positif et au fil négatif, respectivement : le moteur à courant continu tournera à vitesse maximale dans le sens horaire.
- Connectez 12V et GND au fil négatif et au fil positif, respectivement : le moteur à courant continu tournera à vitesse maximale dans le sens antihoraire.
Comme indiqué précédemment, échanger le pôle d'alimentation entre deux fils du moteur à courant continu inversera sa rotation. C’est une façon de contrôler la direction du moteur à courant continu, mais pas par une modification manuelle, mais plutôt par la programmation.
Si la tension de l'alimentation d'un moteur à courant continu est inférieure à 12V, il tournera toujours, mais pas à sa vitesse maximale. Cela signifie qu'en modifiant la tension, nous pouvons altérer la vitesse du moteur à courant continu. Cependant, cette approche n'est généralement pas utilisée en raison de la difficulté à contrôler la tension de la source d'alimentation. Par conséquent, la tension de la source d'alimentation est maintenue constante et la vitesse du moteur à courant continu est régulée par un signal PWM. Plus le cycle de travail du PWM est important, plus le moteur à courant continu tournera vite.
Comment contrôler un moteur à courant continu avec un Raspberry Pi
Le contrôle d'un moteur à courant continu implique deux facteurs : la vitesse et la direction. Le Raspberry Pi peut produire un signal PWM, mais ce signal a une tension et un courant faibles, il ne peut donc pas être utilisé pour contrôler le moteur. Nous devons utiliser un pilote matériel entre le Raspberry Pi et le moteur à courant continu. Le pilote effectue deux tâches :
- Amplification du signal PWM du Raspberry Pi (en termes de courant et de tension) pour le contrôle de la vitesse
- Réception du signal de commande du Raspberry Pi pour inverser la polarité de l'alimentation pour le contrôle de direction.
※ Note:
- Ce tutoriel peut être utilisé pour n'importe quel moteur à courant continu. Nous utiliserons un moteur à courant continu de 12V comme exemple.
- Lors du contrôle d'un moteur à courant continu de 5V, bien que la broche du Raspberry Pi délivre 5V (ce qui est la même tension que le moteur à courant continu), un pilote est toujours nécessaire entre le Raspberry Pi et le moteur à courant continu car la broche du Raspberry Pi ne peut pas fournir assez de courant pour le moteur à courant continu.
Il existe plusieurs types de puces et de modules qui peuvent être utilisés comme pilotes pour contrôler les moteurs à courant continu. Dans ce tutoriel, nous allons utiliser un module appelé L298N.
À propos du pilote L298N
Le pilote L298N peut être utilisé pour manipuler un moteur à courant continu et un moteur pas à pas. Ce tutoriel vous explique comment l'utiliser pour gérer le moteur à courant continu.
Brochage du pilote L298N
Le pilote L298N est capable de contrôler simultanément et indépendamment deux moteurs à courant continu, appelés moteur A et moteur B. Ce pilote a un total de 13 broches.
Les broches communes pour les deux moteurs :
- Broche VCC : Cette broche fournit de l'énergie au moteur et peut aller de 5V à 35V.
- Broche GND : Cette broche est connectée à la masse (0V) et sert de masse commune.
- Broche 5V : Cette broche alimente le module L298N et peut être alimentée par la sortie 5V d'un Raspberry Pi.
Broches du moteur A (Canal A):
- Broches ENA : Ces broches sont utilisées pour réguler la vitesse du moteur A. En retirant le cavalier et en connectant cette broche à une entrée PWM, nous pouvons contrôler la vitesse du moteur A.
- Broches IN1 & IN2 : Ces broches sont responsables du contrôle de la direction de rotation du moteur A. Lorsque l'une d'elles est réglée sur HIGH et l'autre sur LOW, le moteur A tourne. Si les deux entrées sont soit HIGH soit LOW, le moteur A cesse de bouger.
- Broches OUT1 & OUT2 : Ces broches sont connectées au moteur A.
Broches du moteur B (Canal B) :
- Lorsque les entrées IN3 et IN4 sont HAUTES ou BASSES, le moteur B tournera et les broches OUT3 et OUT4 fourniront le courant au moteur.
- Broches ENB : peuvent être utilisées pour gérer la vitesse du moteur B. En retirant le cavalier et en connectant cette broche à l'entrée PWM, nous pouvons contrôler la vitesse du moteur B.
- Broches IN3 et IN4 : sont responsables du contrôle de la direction de rotation du moteur B. Lorsque l'une d'elles est HAUTE et l'autre est BASSE, le moteur B tournera. Si les deux entrées sont soit HAUTES, soit BASSES, le moteur B cesse de bouger.
- Broches OUT3 et OUT4 : sont reliées au moteur B. Lorsque les entrées IN3 et IN4 sont HAUTES ou BASSES, le moteur B tournera et les broches OUT3 et OUT4 fourniront le courant au moteur.
Le pilote L298N a deux sources d'alimentation d'entrée :
- Un pour le moteur à courant continu (broches VCC et GND) allant de 5 à 35 V.
- Un pour le fonctionnement interne du module L298N (broches 5V et GND) avec une plage de tension de 5 à 7 V.
Retirez tous les cavaliers du pilote L298N pour plus de simplicité. Cela est nécessaire car les cavaliers sont utilisés pour des usages avancés ou à d'autres fins.
Nous pouvons gérer deux moteurs à courant continu de manière indépendante et simultanée en utilisant un Raspberry Pi et un pilote L298N. Pour gérer chaque moteur, nous avons seulement besoin de trois broches du Raspberry Pi.
※ Note:
Le reste de ce tutoriel se concentrera sur le contrôle d'un moteur à courant continu en utilisant le canal A. Des étapes similaires peuvent être suivies pour contrôler l'autre moteur à courant continu.
Comment contrôler la vitesse d'un moteur à courant continu via un pilote L298N
Il est facile d'ajuster la vitesse d'un moteur à courant continu en produisant un signal PWM vers la broche ENA du L298N. Cela peut être fait en :
- Connecter une broche Raspberry Pi à l'ENA du L298N
- Générer un signal PWM vers la broche ENA en utilisant la fonction pwm.ChangeDutyCycle(). Le pilote L298N amplifie le signal PWM pour le moteur à courant continu.
La vitesse est comprise entre 0 et 100. Lorsque la vitesse est de 0, le moteur ne bouge pas. Lorsque la vitesse est de 100, le moteur tourne à sa vitesse maximale.
Comment contrôler la direction d'un moteur à courant continu via un pilote L298N
La rotation d'un moteur peut être gérée en appliquant une logique HAUTE/BASSE aux broches IN1 et IN2. Le tableau ci-dessous montre comment contrôler la direction dans les deux canaux.
IN1 pin | IN2 pin | Direction |
---|---|---|
LOW | LOW | Motor A stops |
HIGH | HIGH | Motor A stops |
HIGH | LOW | Motor A spins Clockwise |
LOW | HIGH | Motor A spins Anti-Clockwise |
En conséquence :
- Raspberry Pi pour contrôler le moteur A dans le sens horaire.
- Raspberry Pi pour contrôler le moteur A dans le sens antihoraire.
※ Note:
La rotation du moteur peut être inversée en connectant les broches OUT1 et OUT2 à deux broches du moteur à courant continu de manière opposée. Pour ce faire, il est nécessaire soit d'inverser les broches OUT1 et OUT2, soit de modifier le signal de contrôle sur les broches IN1 et IN2 dans le code.
Comment arrêter la rotation d'un moteur à courant continu
Deux méthodes pour arrêter un moteur à courant continu sont :
- Réduire la vitesse à zéro
- Définit les broches IN1 et IN2 sur la même valeur, soit BASSE, soit HAUTE.
- Ou
Comment contrôler un moteur à courant continu à l'aide d'un pilote L298N.
Schéma de Câblage
Retirez les trois cavaliers du module L298N avant de le connecter.
This image is created using Fritzing. Click to enlarge image
Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :
Code de Raspberry Pi
Nous allons écrire du code Python qui s'exécute sur un Raspberry Pi pour effectuer les actions suivantes :
- Augmente la vitesse d'un moteur à courant continu
- Modifie la direction
- Diminue la vitesse d'un moteur à courant continu
- Arrête le moteur
Étapes rapides
- Retirez les trois cavaliers du module L298N.
- Assurez-vous d'avoir Raspbian ou tout autre système d'exploitation compatible avec le Raspberry Pi installé sur votre Pi.
- Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
- Assurez-vous que votre Raspberry Pi est connecté à Internet si vous avez besoin d'installer des bibliothèques.
- Si c'est la première fois que vous utilisez un Raspberry Pi, consultez Installation du logiciel - Raspberry Pi..
- Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sous Linux et macOS ou PuTTY sous Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
- Assurez-vous que vous avez la bibliothèque RPi.GPIO installée. Si ce n'est pas le cas, installez-la en utilisant la commande suivante :
- Créez un fichier de script Python dc_motor.py et ajoutez le code suivant :
- Enregistrez le fichier et exécutez le script Python en entrant la commande suivante dans le terminal :
Le script s'exécute en boucle infinie jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.
Vous observerez :
- Le moteur à courant continu va accélérer, puis tourner à sa vitesse maximale pendant 1 seconde.
- La direction du moteur à courant continu sera changée.
- Le moteur à courant continu tournera à sa vitesse maximale dans le sens opposé pendant 1 seconde.
- Le moteur à courant continu va décélérer.
- Le moteur à courant continu restera immobile pendant 1 seconde.
- Ce processus sera répété en continu.
※ Note:
Ce tutoriel vous explique comment ajuster la vitesse d'un moteur à courant continu par rapport à sa vitesse maximale. Pour contrôler la vitesse absolue (rotations par seconde), nous devons utiliser un contrôleur PID et un encodeur. Le contrôle de la vitesse absolue du moteur à courant continu sera abordé dans un autre tutoriel.