Moteur DC et contrôleur L293D¶
Introduction¶
Dans cette leçon, nous allons voir comment contrôler un moteur DC avec un contrôleur de moteur de type "pont en H".
Votre kit Arduino contient un contrôleur de moteur L293D ainsi qu'un moteur DC.


Tu en veux plus ou tu n'en a plus?
Si ces pièces ne sont pas dans votre kit, vous pouvez les acheter en ligne ou dans un magasin d'électronique. Voici des liens pour les acheter :
Le moteur DC¶
Le moteur DC (Direct Current) est un moteur électrique qui fonctionne avec un courant continu. Il est composé d'un rotor et d'un stator. Le rotor est la partie mobile du moteur et le stator est la partie fixe. Le moteur DC est utilisé dans de nombreux appareils électriques tels que les ventilateurs, les jouets, les robots, les voitures, etc.
Dans votre kit, il s'agit d'un moteur DC 130. Il est petit, léger et peu coûteux. Il est parfait pour les débutants.
Remarque
Comme indiqué, ce moteur est très économique pour faire des petits projets. Voici une capture d'écran prise en 2026 où l'on peut se procurer 10 moteurs DC 130 pour environ 10 CAD.


Le moteur DC 130 a deux fils : un fil rouge et un fil noir. Le fil rouge est le fil positif et le fil noir est le fil négatif.
On peut inverser le sens de rotation du moteur en inversant les fils de branchement.
Le contrôleur de moteur L293D¶
Le contrôleur de moteur L293D est un circuit intégré qui permet de contrôler un moteur DC. Il est composé de deux ponts en H. Chaque pont en H est composé de quatre transistors. Le L293D peut contrôler deux moteurs DC ou un moteur pas à pas.
Premièrement, qu'est-ce qu'un pont en H?¶
Un pont en H est un circuit électronique qui permet de contrôler la direction du courant électrique. Il est composé de quatre transistors. Deux transistors sont utilisés pour contrôler le courant dans un sens et les deux autres transistors sont utilisés pour contrôler le courant dans l'autre sens.

Ainsi selon ce schéma, si l'on met du courant sur S1 et S4, le moteur tournera dans un sens. Si l'on met du courant sur S3 et S2, le moteur tournera dans l'autre sens.

Perle de culture
Les symboles avec une flèche représente des transistors.

Les transistors peuvent être utilisés, entre autres, pour contrôler le courant électrique. Ils peuvent être utilisés pour fermer ou ouvrir un circuit électrique comme un interrupteur. Ils sont contrôlés par un signal électrique envoyé sur leur base. Lorsque le signal est présent, le transistor est ouvert et le courant peut circuler. Lorsque le signal est absent, le transistor est fermé et le courant ne peut pas circuler.
Dans le cadre du cours, nous n'irons pas plus en détail sur les transistors. Nous nous contenterons de les utiliser comme des interrupteurs.
Voici une animation montrant le fonctionnement d'un pont en H.

Le contrôleur de moteur L293D¶
Maintenant que l'on sait en quoi consiste un pont en H, on peut comprendre comment fonctionne le contrôleur de moteur L293D.

Le L293D est composé de deux ponts en H. Chaque pont en H peut contrôler un moteur DC. Le L293D peut contrôler deux moteurs DC.
Le L293D a 16 broches. Voici le diagramme de brochage du L293D.

VCC: Alimentation du circuit intégré. On branche le +5V de l'Arduino sur cette broche.Ground: Il y a 4 broches deGround, car les moteurs nécessitent beaucoup de courant ce qui dégage beaucoup de chaleur. Il est donc nécessaire de relier ces broches à la masse pour dissiper celle-ci.Enable 1, 2: Permet d'activer ou de désactiver le pont en H. Si on met un signal HIGH sur cette broche, le pont en H est activé. Si on met un signal LOW, le pont en H est désactivé. Si l'on désire de toujours l'avoir activé, on peut simplement le brancher au +5V.Enable 3, 4: Même chose queEnable 1, 2mais pour le deuxième pont en H.Input 1: Permet de contrôler le sens de rotation du moteur 1.Input 2: Permet de contrôler le sens de rotation du moteur 1.Input 3, 4: Même chose queInput 1, 2mais pour le moteur 2.Output 1, 2: Sortie du pont en H pour le moteur 1.Output 3, 4: Sortie du pont en H pour le moteur 2.
Note:
Remarquez sur le L293D, il y a une encoche sur le boîtier. Cette encoche indique le sens de la broche 1. C'est-à-dire que la broche 1 est la broche la plus à gauche lorsque l'encoche est en haut.
Il s'agit d'une convention pour les circuits intégrés. La broche 1 est toujours la broche la plus à gauche lorsque l'encoche est en haut.
Voici un diagramme de branchement pour contrôler un moteur DC avec le L293D et un Arduino Mega.
Tableau logique de contrôle du moteur DC avec le L293D¶
Voici un tableau logique pour contrôler un moteur DC avec le L293D.
Input 1 |
Input 2 |
Sens de rotation |
|---|---|---|
| LOW | LOW | Arrêt |
| HIGH | LOW | Direction 1 |
| LOW | HIGH | Direction 2 |
| HIGH | HIGH | Arrêt |
Exemple de code¶
Suivant le diagramme de branchement précédemment montré, voici un exemple de code pour contrôler le moteur DC.
Voici un autre exemple avec seulement la boucle pour faire accélérer et décélérer le moteur.
Dans l'exemple ci-dessus avec le analogueWrite, on utilise la fonction analogWrite pour contrôler la vitesse du moteur. La fonction analogWrite permet de contrôler la vitesse du moteur en modulant la largeur d'impulsion (PWM). La valeur de i varie de 0 à 255. Plus la valeur est grande, plus le moteur tourne vite.
Note importante¶
Les moteurs ne fonctionnent pas comme des LED. Les moteurs ont une inertie. C'est-à-dire qu'ils ne démarrent pas ou ne s'arrêtent pas instantanément.
Valeur minimale de démarrage (seuil mort) : Si on met une valeur PWM trop faible, le moteur ne tournera pas mais continuera à consommer du courant, ce qui le fera chauffer inutilement. Pour le moteur DC 130, cette valeur se situe généralement entre 50 et 80 (sur 255), mais elle peut varier selon le moteur et la charge. Il est donc recommandé de tester votre moteur pour trouver sa valeur minimale.
Exemple de démarrage progressif sécuritaire :
Exercices¶
- Branchez le moteur DC et le contrôleur de moteur L293D à votre Arduino. Utilisez le code précédent pour faire tourner le moteur dans un sens, puis dans l'autre sens, puis arrêtez-le.
- Modifiez le code pour permettre d'arrêter ou activer le moteur via le port série. Par exemple, si l'utilisateur tape
1, le moteur tourne dans un sens, si l'utilisateur tape2, le moteur tourne dans l'autre sens, si l'utilisateur tape0, le moteur s'arrête.