LOCODUINO

Commande de moteur à courant continu

.
Par : Christian

DIFFICULTÉ :

Les moteurs électriques à courant continu (moteurs CC) sont extrêmement présents sur nos réseaux de trains miniatures, avec par exemple le moteur lent d’aiguillage, les barrières de passage à niveau, la plaque tournante, la roue de moulin à eau, le rotor d’hélicoptère prêt à décoller, l’entraînement du câble de téléférique, la grue ou l’engin de chantier, etc. Nous allons étudier dans ce chapitre comment commander ces moteurs avec Arduino.

Article mis à jour le 19 mars 2024 pour prendre en compte la différence de brochage entre les deux versions de boîtier du circuit L298

Nous savons tous utiliser un moteur CC ; il suffit de relier ses deux pôles à une alimentation en courant continu (une pile électrique par exemple) pour le faire tourner. Si on inverse la polarité de l’alimentation, le moteur tourne dans l’autre sens. Plus la tension de l’alimentation est forte (sans dépasser ce que peut admettre le moteur), plus la vitesse de rotation est élevée, et inversement. C’est sur ce principe que nos trains sont commandés en technologie analogique, le transformateur d’alimentation délivrant une tension réglable et inversable sur les deux rails.

Commander un moteur signifie donc pouvoir régler sa vitesse et son sens de rotation. Parfois, les deux ne sont pas nécessaires : la roue d’un moulin à eau tourne toujours dans le même sens, le câble de téléférique tourne toujours à la même vitesse, mais un coup dans un sens (montée de la cabine) et un coup en sens opposé (descente de la cabine). Arduino peut parfaitement commander un moteur CC et ainsi créer des animations sur le réseau. Néanmoins, le courant qu’il peut délivrer (au maximum 20 mA sur une sortie) est insuffisant et il faut donc lui adjoindre un peu d’électronique. Plusieurs solutions existent et sont extrêmement simples à mettre en œuvre.

Commande de la vitesse du moteur

Pour faire varier la vitesse d’un moteur CC, il faut faire varier la tension d’alimentation aux bornes du moteur. Mais Arduino ne sait délivrer que des tensions de 5 V sur ses broches avec un courant beaucoup trop faible pour alimenter un moteur. La solution est de faire appel à la PWM et d’amplifier le signal par un transistor (voir l’article La PWM : Qu’est-ce que c’est ? (2)) ou un circuit intégré équivalent comme le circuit ULN2803 (voir l’article Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803).

Arduino, grâce à sa fonction analogWrite, crée un signal carré basculant entre niveau bas (LOW = 0 V) et niveau haut (HIGH = + 5 V) de fréquence fixe (sur un Uno, 490 ou 980 Hz approximativement suivant les broches qui délivrent le signal), dont on peut faire varier le rapport cyclique, c’est-à-dire le temps où le signal est au niveau haut sur le temps de la période du signal. Un rapport cyclique de 50% signifie que le signal est au niveau haut 50% du temps. Ceci est résumé sur la figure 1.

Figure 1
Figure 1
Rapport cyclique et PWM

Ce signal est généré sur les broches d’Arduino mentionnées PWM (repérées par un tilde), grâce à la fonction analogWrite qui précise le rapport cyclique à adopter. La valeur est comprise entre 0 (pour un rapport cyclique égal à 0%) et 255 (pour un rapport cyclique égal à 100%), toute valeur intermédiaire pouvant être adoptée (exemple, 127 pour un rapport cyclique de 50%). Le signal est amplifié par un transistor et comme celui-ci travaille en commutation, sa dissipation en puissance est quasi nulle. Le moteur qui reçoit un tel signal est toujours alimenté dans sa tension nominale d’alimentation, ce qui fait que son couple est maximum. Par contre, le moteur perçoit ce signal comme un courant de tension moyenne égale à la tension d’alimentation multipliée par le rapport cyclique ; il tourne donc moins vite. Pour faire varier la vitesse du moteur, il suffit de faire varier le rapport cyclique du signal PWM délivré par Arduino.

Commande du sens de rotation avec un pont en H

Le pont en H va nous permettre de commander le sens de rotation du moteur. La figure 2 en explique le principe grâce à un montage constitué de quatre interrupteurs et du moteur à commander.

Figure 2
Figure 2
Principe du pont en H

Tous les interrupteurs sont ouverts donc le courant de l’alimentation ne peut pas parvenir au moteur ; celui-ci est arrêté. Numérotons de A à D (dans le sens des aiguilles d’une montre) nos interrupteurs (voir figure 2). Il ne faut surtout pas fermer en même temps les interrupteurs A et D, ou bien B et C, car on créerait un court-circuit avec l’alimentation. Commençons par fermer les interrupteurs A et C, B et D restant ouverts. Le courant électrique parvient au moteur en suivant le cheminement figuré en jaune : le moteur tourne dans un sens. Ouvrons A et C : le moteur s’arrête (cas de départ). Fermons maintenant les interrupteurs B et D, A et C restant ouverts. Le courant électrique parvient au moteur en suivant le cheminement figuré en violet : le moteur tourne dans l’autre sens.

Cela vous paraît sans doute compliqué alors qu’un montage inverseur aurait produit le même résultat, mais le pont en H devient intéressant si on remplace les interrupteurs par des interrupteurs électroniques commandés par des courants ou des tensions, comme des transistors par exemple. Pour mieux comprendre comment un transistor peut devenir un interrupteur électronique, reportez-vous au chapitre 5 du cours d’électronique de l’article Démarrer en électronique.

Pont en H avec des transistors

La figure 3 montre un montage classique en électronique, appelé pont en H (H bridge) ou pont double (dual bridge). Il est constitué de 4 transistors NPN appelés A, B, C et D (comme nos interrupteurs du paragraphe précédent). Pour faire tourner le moteur dans le sens 1, le courant doit suivre le cheminement représenté en jaune. Les transistors A et C doivent être passants alors que les transistors B et D doivent être bloqués. C’est l’inverse pour faire tourner le moteur dans le sens 2, le courant doit suivre le cheminement représenté en violet ; les transistors B et D doivent être passants et les transistors A et C doivent être bloqués.

Figure 3
Figure 3
Pont en H

Dans le cours d’électronique mentionné plus haut, on a appris à utiliser des transistors en commutation en appliquant un signal sur sa base. Si on relie les bases des transistors aux sorties numériques 7, 8, 9 et 10 d’Arduino (par exemple), il suffit alors d’appliquer sur ces sorties des signaux HIGH ou LOW pour que nos transistors soient passants ou bloqués. Le tableau suivant résume la situation.

SensABCD78910
1 Passant Bloqué Passant Bloqué HIGH LOW HIGH LOW
2 Bloqué Passant Bloqué Passant LOW HIGH LOW HIGH

Les sorties 9 et 10 d’Arduino peuvent fournir un signal de type PWM ; le montage sert alors à inverser le sens de rotation d’un moteur tout en pilotant sa vitesse de rotation.

Bien entendu, chaque fois qu’on utilise une charge constituée de bobinages (cas d’un moteur), il faut penser à protéger l’électronique de commande (les transistors ou Arduino) par des diodes de roues libre. Celles-ci n’ont pas été représentées sur la figure 3 (pour ne pas surcharger la figure) mais doivent être montées comme indiqué dans les paragraphes suivants, notamment dans les figures 5 et 6. Pour plus d’informations sur les diodes de roue libre, consultez le cours d’électronique de l’article Démarrer en électronique, au chapitre "Les diodes".

Pont en H à base de circuit intégré

Il existe des circuits intégrés équivalents au schéma que nous venons de monter, comme par exemple le L298 qui permet de commander deux moteurs à courant continu. Il existe en deux versions de boitier : Multiwatt15 et PowerSO20 dont le brochage diffère, comme le montre la figure 4A.

Figure 4A
Figure 4A
Brochage du L298 dans ses deux versions de boîtier (source datasheet)

Si vous regardez la notice du constructeur du L298 (figure 4B), vous y retrouverez des similitudes avec la figure 3 ; il y a deux ponts en H puisque le circuit peut commander deux moteurs CC. Pourtant, le circuit intégré L298 est plus sophistiqué que ce que nous avons réalisé, car il possède une logique de commande intégrée.

Figure 4B
Figure 4B
Le circuit L298

La figure 5 (issue de la datasheet du constructeur) montre comment interfacer la moitié d’un circuit L298 pour commander un moteur ; le montage doit être fait en double à partir du même circuit L298 pour commander deux moteurs. On remarque les quatre diodes de roue libre que nous avons évoquées au paragraphe précédent pour protéger le circuit L298 des courants induits par les bobinages du moteur CC. Le petit tableau de la figure 5 résume le comportement du circuit en fonction des niveaux logiques (H pour HIGH et L pour LOW) sur les broches C et D (numérotées) du circuit. Nous avons un sens marche avant (Forward en anglais), un sens marche arrière (Reverse en anglais) et même la possibilité d’un arrêt rapide (Fast motor stop en anglais) si les niveaux logiques sont identiques sur les entrées C et D du circuit. Il faut pour cela que le niveau logique sur la broche « En » (Enable en anglais) soit H. Si le niveau est L, le moteur tourne en roue libre jusqu’à s’arrêter de lui-même (Free running motor stop) et auquel cas, peu importe (Don’t care) les niveaux sur C et D. C’est justement sur l’entrée « En » qu’on peut appliquer un signal PWM pour réguler la vitesse du moteur.

Figure 5
Figure 5
Interfaçage d’une moitié de circuit L298

Remarquez sur la figure 5 comment sont montées les diodes de roue libre D1 à D4.

Cette logique de commande peut bien évidemment être reliée aux sorties d’Arduino et la figure 6 nous montre comment relier le circuit L298 aux sorties d’Arduino. Encore une fois, on remarque les quatre diodes de roue libre aux bornes du moteur.

Figure 6
Figure 6
L298 et Arduino
Les numéros de broches du circuit, inscrites en vert, font référence à la version boîtier Multiwatt15. Si vous utilisez la version en boîtier PowerSO20, reportez-vous à la figure 4A pour obtenir la correspondance en considérant le nom des entrées ou sorties (exemple In1, Out2, etc.).

Les signaux appliqués aux entrées In1 (5) et In2 (7) détermine le sens de rotation du moteur (ou son arrêt rapide). Le signal appliqué à l’entrée EnA (6) commande la vitesse de rotation s’il est du type PWM. Une fois de plus, si on veut commander deux moteurs CC, le montage doit être réalisé en double.

Il existe d’autres circuits intégrés réalisant la même chose que le L298, avec des performances supérieures, comme le circuit LMD18200 qui a la préférence du staff d’Arduino, mais d’autres circuits sont également possibles en fonction des caractéristiques des moteurs à commander.

Carte shield pour commander des moteurs

Pour en revenir au circuit L298, il est d’ailleurs utilisé, dans sa version CMS PowerSO20, par la carte Arduino Motor Shield décrite sur le site d’Arduino, à cette adresse : https://www.arduino.cc/en/Main/Ardu....

Il est parfois plus simple et meilleur marché de faire appel à ce genre de cartes quand on doit commander plusieurs moteurs, mais c’est aussi la solution idéale pour ceux que l’électronique effraie. Il suffit d’enficher la carte shield sur le module Uno ou Mega, de connecter le ou les moteurs ainsi que leur alimentation sur le connecteur prévu à cet effet puis de développer un petit programme ou d’en trouver un tout fait sur les nombreux forums et de l’adapter en fonction de ses besoins.

Figure 7
Figure 7
Carte Arduino Motor Shield

Chaque canal utilise 4 broches du module Arduino : 3 (ou 11) pour la PWM, 12 (ou 13) pour déterminer le sens de rotation, 9 (ou 8) pour la fonction frein (Brake en anglais) et les entrées analogiques A0 (ou A1) pour lire ce que chaque moteur consomme (fonction Current sensing). Si vous n’avez pas besoin des fonctions Brake et Current Sensing, vous pouvez récupérer les broches pour autre chose en coupant un jumper au dos de la carte.

D’autres constructeurs proposent leur carte shield pour commander des moteurs ; quel que soit votre choix, lisez toujours attentivement les précautions d’emploi et regardez s’il existe des forums pour vous venir en aide ; c’est généralement le cas pour les cartes les plus courantes.

Commander la voie

Dans les montages étudiés précédemment, on peut, à la place de relier les deux pôles du moteur, relier les deux rails d’une voie, et ainsi commander l’engin moteur qui se trouve dessus, aussi bien en direction qu’en vitesse. Ce mode d’exploitation qui consiste à commander la voie pour commander la locomotive qui se trouve dessus, est qualifié d’analogique.

Les modélistes qui pratiquent l’exploitation numérique de leur réseau selon la norme DCC prendront certainement beaucoup de plaisir à lire la série d’articles Réalisation de centrales DCC avec le logiciel libre DCC++ (1), et notamment l’article Réalisation de centrales DCC avec le logiciel libre DCC++ (3) qui explique comment choisir et utiliser une carte Motor Shield avec le logiciel DCC++ pour développer sa propre centrale numérique.

Conclusion

Je sais très bien qu’il n’est pas possible de faire le tour de la question dans un article de longueur raisonnable. J’espère simplement vous avoir permis de découvrir quelques techniques simples pour utiliser des moteurs avec Arduino, et surtout vous avoir montré que vous pouvez toujours aller plus loin dans l’utilisation de vos modules Arduino pour agrémenter votre réseau de trains miniatures.

54 Messages

  • Commande de moteur à courant continu 26 octobre 2017 00:04, par Sol

    Bonjour,
    Une question ou plusieurs..
    Je ne sais pas si je suis dans la bonne rubrique et j’avoue ne pas avoir parcouru les milliers
    de pages d’arduino, je suis novice.
    Vous parler toujours de contrôler un moteur en CC par Arduino en PWM et ce système est très simple, mais qu’en est il de la création d’une tension analogique variable 0 à 12v (à 16 ou 28 niveaux par exemple), l’a t’on définitivement oublié ?
    Je souhaite démarrer mes locomotives (SOUND) par Arduino certe mais sans PWM, alors comment faire ?
    (le PWM n’est pas bien compatible avec le DCC).
    En vous remerciant et éventuellement me guider sur la bonne page web.
    Bien cordialement
    olivier Sol

    Répondre

    • Commande de moteur à courant continu 26 octobre 2017 00:24, par Christian

      Il n’est pas possible de créer une tension continue de 0 à 12 V avec une carte Arduino tout simplement parce que le microcontroleur de la carte ne le permet pas. C’est pourquoi on passe par de la PWM mais ce signal est incompatible avec le DCC.
      Je vous invite, puisque vous êtes novice, à lire les articles sur la PWM pour comprendre que ce signal est vu par le moteur comme une tension variable, avec pourtant l’avantage d’être à 12 V crête ce qui donne un couple maximum au moteur d’où des ralentis efficaces.
      Mais comme vous semblez être en numérique je vous invite aussi à lire les articles sur le DCC et la bibliothèque DCC++. Vous devriez trouver votre bonheur.
      Bien entendu, tout cela se trouve sur le site LOCODUINO.
      Je reste à votre disposition si nécessaire.

      Répondre

    • Commande de moteur à courant continu 26 octobre 2017 09:12, par Jean-Luc

      Bonjour,

      pour quelle raison objective voudrait on piloter un moteur avec une tension continue variable ?

      Et (ça s’adresse également à Christian), quel rapport avec le DCC ?

      Répondre

      • Commande de moteur à courant continu 26 octobre 2017 11:30, par Sol

        Bonjour et merci pour vos réponses,
        En fait j’aimerai piloter une boucle ou module analogique pour une expo, permettant d’accepter des locomotives aussi bien en DCC qu’en alimentation traditionnelles, le but est de voir rouler sans se préoccuper de la présence d’un décodeur ou non.
        Sur les machine DCC et Sound, la gestion de la marche analogique est réglée sur une courbe (CV) en pur continu, le PWM n’est pas le mieux interprété par le DCC d’ou un son peut être mal synchronisé.
        Les voies est moteurs d’aujourd’hui fonctionnent toujours très bien avec du pur continu, si l’on tient pas compte du couple moteur bien-sûr.
        Cela est précis et vous me diriez de mettre une simple alim variable, mais je voulais profiter des qualités de l’Arduino dans sa possibilité de commande radio avec potentiomètre à 0 central.
        Plus simplement , peut-on crée avec Arduino un transfo sans fil o-12V à 28niveaux, un peu comme avait réalisé Jouef avec son Radio Control System d’y a 30ans ? Quel est le moyen d’y parvenir ?
        Merci , je suis un peu rétro avec ma demande.
        olivier

        Répondre

      • Commande de moteur à courant continu 26 octobre 2017 15:27, par christian

        Il n’y a aucun rapport entre l’analogique même en PWM et le DCC. C’est ce que j’ai essayé d’expliquer à Olivier en lui conseillant de lire nos articles sur la PWM d’une part pour clarifier sa compréhension et comme il m’avait semblé comprendre qu’il utilisait du matériel DCC, de lire nos articles sur le DCC qui seront mieux adaptés pour lui.
        Analogique et DCC sont deux moyens de commande différents dans leur philosophie.
        Mon article sur la commande moteur est fait pour de l’analogique et rien d’autre et pour le DCC nous avons d’autres articles mieux adaptés..
        plus clair comme cela ?

        Répondre

        • Commande de moteur à courant continu 26 octobre 2017 16:54, par Sol

          Merci pour vos réponses Jean Luc et Christian .
          C’est exactement cela, je souhaite passer du PWM fournit pas Arduino a une tension continu pur, je vais regarder le lien que j’ignorais jusqu’à présent.
          Je constate que les possibilité d’Arduino ne sont pas totales comme cela est souvent dit, dans ce cas il faudra alors passer par de l’électronique.
          Nos trains électriques ont toujours fonctionnés pour du 12V sans modulation d’impulsion, je ne vois pas pourquoi on s’en passerai dès à présent.
          Dans quelques temps, si j’aboutis à la réalisation de cette commande radio à main fonctionnelle je n’hésiterais pas à faire partager ce projet.
          merci pour votre attention.
          olivier

          Répondre

          • Commande de moteur à courant continu 26 octobre 2017 19:27, par Jean-Luc

            1) C’est ce que l’on pense mais c’est inexact.

            J’ai récemment branché un oscilloscope sur un transfo Arnold acheté au début des années 90. Jusqu’à mi-réglage la tension est une tension alternative redressée mono alternance dont l’amplitude augmente au fur et à mesure que l’on tourne le bouton. Au delà de mi-réglage ça passe en double alternance avec toujours augmentation de l’amplitude. Ce n’est donc pas du tout du continu, sinon les ralentis seraient très mauvais.

            2) la PWM est plus efficace et demande moins d’électronique additionnelle.

            Dans le montage avec le transistor en sortie, ce dernier va considérablement chauffer avec des pertes d’énergie importantes. Avec un hacheur, très peu d’énergie est perdue. Ça permet de plus des commandes sophistiquées avec mesure de vitesse et asservissement. Tous les décodeurs DCC commandent le moteur en PWM. 

            Répondre

          • Commande de moteur à courant continu 26 octobre 2017 19:48, par christian

            On peut bien sûr rester en 12 V sans modulation, mais la PWM apporte plus de souplesse à basse vitesse.
            Apres, chacun fait comme il l’entend, mais quand une nouvelle technique fait son apparition pourquoi ne pas s’y intéresser ? Les Shields conçus pour commander des moteurs par Arduino font appel à la PWM, ce n’est sans doute pas pour rien...

            Répondre

  • Commande de moteur à courant continu 8 janvier 2018 11:50, par Quentin

    Bonjour,

    Je suis actuellement élève en terminale S, sciences de l’ingénieur et pour mon projet de fin d’année porte sur le fonctionnement d’un robot sans fil. En effet le robot existe mais il fonctionne avec une télécommande et il est branché sur secteur. Le but du projet est de reprendre le robot existant (créé l’année dernière) et de supprimer presque la totalité des câbles. J’ai créé l’application via AppInventor mais maintenant je dois programmer les 4 moteurs 12V CC pour que le robot avance, recule et tourne.
    Je me suis renseigné sur divers codes et sur un fonctionnement PWM mais je n’ai pas beaucoup d’informations.
    Serait-il possible d’obtenir de l’aide de votre part concernant le code Arduino ?
    Merci d’avance
    Cordialement
    Quentin

    Voir en ligne : http://www.locoduino.org/spip.php++cs_INTERRO++a...

    Répondre

    • Commande de moteur à courant continu 8 janvier 2018 12:54, par Christian

      Bonjour Quentin,

      C’est bien tenté, mais cela n’ira pas très loin concernant notre aide... Tes devoirs ne sont pas nos devoirs ;-).

      Bon, tout d’abord, félicitations pour être en terminale S, science de l’ingénieur : c’est du sérieux qui t’a déjà demandé pas mal d’efforts. Alors, bravo !
      Pour l’équipe de LOCODUINO, c’est maintenant bien loin tout cela et nous avons enfin l’âge de jouer au train électrique (LOL). Et c’est justement de cela qu’il s’agit sur ce site, de train électrique et rien d’autre, pas de Robotique ou de Domotique ! Nous ne répondons donc pas aux demandes en Robotique ou autre, mais il y a des sites très bien faits dans ces domaines.
      Tu peux aussi trouver beaucoup d’informations sur NOTRE site, car la PWM a été décrite dans de nombreux articles, ainsi que des techniques de programmation qui trouvent leur utilité dans d’autres domaines que le train miniature. Et cet article fait le point sur ce qu’il y a à savoir pour commander des moteurs continus (le L298 peut être remplacé par des circuits plus récent et plus performants).
      Je suppose que ton projet se fait à plusieurs, alors répartissez-vous le travail de consultation, puis décidez de la bonne architecture. Un train, ce n’est jamais qu’un robot qu’on laisse sur des rails, non ?
      Bon courage et bonne réalisation.

      Christian

      Répondre

  • Commande de moteur à courant continu 28 février 2018 02:43, par NANA

    BONSOIR

    Je voudrais utiliser une librairie déjà en place que d’utiliser chaque broche de la carte pour commander mes moteurs et j’aimerais savoir si quelqu’un connait une librairie à jour qui me permettrait de commander mes moteurs avec ma carte arduino shield REV 3.

    merci,

    Franck

    Répondre

  • Commande de moteur à courant continu 28 février 2018 10:57, par Christian

    Bonjour,

    Voici un lien mais je n’ai jamais testé :
    https://github.com/hanseartic/Motor...
    Cordialement.

    Christian

    Répondre

  • Commande de moteur à courant continu + interaction 13 septembre 2018 14:00, par benjamin

    Bonjour,

    Dans mon projet, je fais tourner deux moteurs à vitesse constante mais differentes et j’aimerai que
    Quand je freine un moteur ou le bloque, recuperer (une tension qui baisse ou monte ou le courant induit je ne sais pas)par le moteur freiné ou bloqué et envoyer cette info dans l’Arduino et augmenter la vitesse de l’autre moteur (en augmentant la PWM de l’Arduino).

    Est ce possible ?

    (peut importe pour moi le moteur)
    Dois je passer par des capteurs de positions ou moteur avec feed back ?
    Merci d’avance.

    Répondre

    • Commande de moteur à courant continu + interaction 13 septembre 2018 21:10, par Dominique

      Bonjour,
      Quel type de projet de modélisme ferroviaire faites-vous ?

      Répondre

      • Commande de moteur à courant continu + interaction 14 septembre 2018 09:07, par benjamin

        Ce n’est pas un projet de modelisme, mais une démarche artistique.
        J’aimerai intergir avec des moteurs de tel manière que quand je freine ou bloque une helice reliéé à un moteur, cela entraine une acceleration sur un autre moteur.
        Je pense que j’ai besoin de capter l’inductance du moteur puis la faire rentrer dans une entrée de l’Arduino, mais je sais pas comment la mesurer.
        Merci de votre aide si vous pouvez.

        Répondre

        • Commande de moteur à courant continu + interaction 14 septembre 2018 12:00, par Jean-Luc

          Bonjour,
           
          Je vais répondre car bien que ça ne soit pas du modélisme ferroviaire, la question et la réponse ont une portée plus large que votre problème.
           
          Tout d’abord, non, l’inductance du moteur ne vous renseignera pas sur sa vitesse de rotation puisqu’elle est une caractéristique intrinsèque du moteur.
           
          Donc soit vous mesurez la vitesse de rotation du moteur, soit avec un encodeur (une roue avec des fentes et un capteur photoélectrique qui donne des top lorsque les fentes passent devant ou bien un aimant et un capteur à effet hall), soit en mesurant la force contre électromotrice (nécessite de l’électronique : ampli op). C’est précis mais compliqué. Soit vous mesurez le courant (si le moteur produit un effort supplémentaire le courant augmente). Il suffit de faire passer l’alimentation du moteur dans une résistance en série et de mesurer la chute de tension. Ça ne sera pas précis mais ça peut suffire pour ce que vous voulez faire. Pour cette dernière technique, il faut une résistance faible pour ne pas trop manger de puissance et qui dissipe suffisamment d’énergie (à voir selon la consommation du moteur). Il faut également synchroniser la mesure avec la PWM : si on mesure alors que la PWM est Off on trouve 0. Il faut également s’assurer que la PWM est On suffisamment longtemps au regard du temps de conversion analogique->numérique.

          Répondre

    • Commande de moteur à courant continu + interaction 15 septembre 2018 12:49, par Christian

      Bonjour benjamin,

      Les solutions décrites par Jean-Luc vous permettront de résoudre votre problème, mais elles nécessitent de votre part un peu de mécanique (roue codeuse) et d’électronique (ampli-op) en plus du logiciel de traitement.
      Comme vous voulez commander deux moteurs, je pense que le mieux est d’utiliser le shield Arduino Motor Shield qui est conçu pour deux moteurs et dispose d’une fonction permettant de mesurer une tension proportionnelle au courant consommé par le moteur. Il suffit de lire cette tension sur les pins A0 et A1 et de corriger en conséquence les PWM des moteurs. Je vous invite à consulter la documentation du shield sur le site arduino.cc.
      Ce shield vous évite toute électronique et devrait vous permettre de mener votre projet simplement par logiciel.
      Cordialement.

      Christian

      Répondre

  • Commande de moteur à courant continu 20 décembre 2018 16:03, par HEDI

    j’aurai voulu un exemple de programme moteur courant continu

    Merci

    Répondre

    • Commande de moteur à courant continu 20 décembre 2018 17:06, par Christian

      Si vous avez lu cet article, vous êtes capable d’écrire vous-même ce programme...
      Et tout d’abord, cela dépend de ce que vous voulez faire et de l’électronique que vous voulez mettre derrière Arduino. Comme vous l’avez compris, les signaux d’Arduino sont trop faibles pour faire tourner un moteur. Il faut donc les amplifier, ce qui demande un peu d’électronique. La complexité de cette électronique dépend de plus du type de mouvement qu’on veut obtenir (un seul sens de rotation ou deux sens, vitesse constante ou variable).
      J’ai publié un article sur ce sujet avec des exemples concrets dans Loco-Revue N°811 de février 2015. Je montre comment piloter un moteur à courant continu avec un CI ULN2803, ou bien avec des transistors NPN 2N2222. Aujourd’hui, je pense qu’il est préférable d’acheter un shield comme celui présenté dans l’article, ce qui évite justement d’avoir à fabriquer une interface électronique. Et là, vous pouvez piloter deux moteurs à courant continu dans leur deux sens de rotation et avec des vitesses variables. Cela permet déjà pas mal de choses comme animation de réseau (grue, pelleteuse, etc.)
      Dès que j’aurai le temps, je compléterai cet article en décrivant une grue de déchargement à deux moteurs commandée par le Motor shield d’Arduino, mais ce ne sera pas pour tout de suite car j’ai déjà beaucoup de projets à terminer (pour LR Presse et pour Locoduino, et accessoirement pour moi-même...).
      C’est pourquoi je suggérais au tout début de vous lancer à écrire ce programme vous-même (ou alors, il faudra attendre un peu...)
      Cordialement.

      Christian

      Répondre

  • Commande de moteur à courant continu 11 janvier 2019 12:09, par Tom Elbaz Wahl

    bonjour je suis actuellement en terminale S SI et nous avons comme projet de réaliser une poubelle auto trieuse de bouteille et canettes donc nous avons 3 compartiments , 1 pour le verre ,1 pour le plastique et carton et 1 pour le métal donc les canettes. nous avons donc un plateau rotatif que ns devons faire tourner pour se diriger vers les 3 trappes des trois compartiments donc ma question c’est comment puis je faire pour faire un programme qui controlle le moteur et qu’il tourbe de 60 degré ou 180 degré en faisait un allé retour . en sachant que nous avons un moteur a courant continue .merci de votre réponse

    Répondre

    • Commande de moteur à courant continu 11 janvier 2019 17:21, par Christian

      Bonjour,

      Désolé de te répondre qu’ici, nous ne traitons que ce qui concerne le train miniature et surtout pas les projets donnés aux étudiants.
      Mais tu peux trouver sur ce site beaucoup d’informations et très certainement la réponse à ton problème.
      Nous te souhaitons bon courage.

      Christian

      Répondre

  • Commande de moteur à courant continu 29 mars 2019 08:38, par Rodier

    bonjour, actuellement la carte de commande des deux moteurs 12 volts continu est HS j’ai vérifié le bon fonctionnement des moteurs en les branchant directement sur les batteries respectives c’est bon ,le fonctionnement se faisait par l’intermédiaire d’une télécommande a bouton poussoir maintenu pendant l’ouverture totale ou fermeture totale de mon abri piscine .
    ce système a 20 ans et quand j’ai voulu recontacter la société celle-ci a été racheté....vous voyez la galère , aussi pouvez vous m’indiquer comment je peux être dépanner et éventuellement par qui .

    Merci et bonne journée

    Répondre

    • Commande de moteur à courant continu 29 mars 2019 11:34, par Christian

      Bonjour,

      Si j’ai bien compris, votre problème est de faire réparer une carte moteur de 20 ans servant à votre abri de piscine.
      Cela n’a donc pas grand chose à voir avec notre sujet de préoccupation qui est le modélisme ferroviaire et Arduino. Sur ce site, nous ne faisons que cela...
      Je pense qu’avec une recherche sur internet, dans la catégorie entretien de piscines, vous pourrez trouver une entreprise qui saura mieux que nous vous conseiller sur le système adapté à votre cas personnel.
      Cordialement.

      Christian

      Répondre

  • Commande de moteur à courant continu 28 mai 2019 14:50, par SIMON

    bonjour,
    drôle de phénomène !
    Je débute, j’ai reçu mon kit Arduino il y a un mois, compris que ça pouvait faire des merveilles, que ça en ferait à coup sûr avec le train électrique qui dor(mai)t au grenier, redécouvert quelques bases bien lointaines d’électricité, écris un bout de code (qui marche !!) pour "piloter" au joystick à base de PWM Arduino + L298N...
    Mais voilà l’os ; sur mon bout de rail d’essai, la loco broute, cale, redémarre à la poussette, se traîne, re-cale...
    Au voltmètre, la tension varie bien avec la consigne, sauf qu’avec une tension transfo de 14v je récupère un maxi de 8V sur les rails. Chute de tension due aux diodes du pont je me disais ? mais pas dans les normes !
    Jusqu’à ce que je m’aperçoive que je pouvais régler tout ça, je veux dire la chute de tension (et donc l’anémie de la loco) simplement en touchant le rail côté négatif ! Facile et pas cher... mais pas commode !!
    Bon OK, je fais masse (même avec une planche en bois sous les pieds !). Mais un mystère baptisé n’est pas un mystère résolu et j’avoue ne pas comprendre même le début de ce qui se passe. Ni donc, et surtout, la façon de le régler sans y laisser un doigt.
    Si ça vous fait marrer, je comprends. Mais si ça vous parle... ça me ferait plaisir de savoir ce que vous répondez !
    Merci par avance
    Philippe

    Répondre

    • Commande de moteur à courant continu 29 mai 2019 09:12, par Dominique

      Ce n’est pas l’endroit idéal pour débogguer un réseau mal décrit. Inscrivez-vous sur le forum et décrivez y votre réseau et ses branchements. Ce sera plus rigolo en effet !

      Répondre

      • Commande de moteur à courant continu 29 mai 2019 10:35, par Philippe

        entendu, merci (mais il n’y a pas encore de réseau ! juste 2m de rails pour tester la PWM)

        Répondre

        • Commande de moteur à courant continu 30 mai 2019 21:33, par msport

          Vous parlez de masse, vérifiez que votre L298 partage bien sa masse avec l’Arduino. Au passage comment alimentez vous votre Arduino ? Quid du 5 volts du L298 ?

          Répondre

          • Commande de moteur à courant continu 30 mai 2019 21:54, par Philippe

            Bonsoir,
            c’est résolu, merci, en bonne part grâce au fil "Le booster L298 ne booste pas".
            Je vais donc m’inscrire au forum locoduino et y rapporter mes conclusions et "au passage", le bon choix à faire pour ce qui est, en effet, du 5V.
            Encore merci
            Philippe

            Répondre

            • Interférences alimentation / PWM 14 juin 2019 19:25, par msport

              [quote author=simontpellier]
              ... forme plus ou moins propre de l’onde 100hz du courant CC source, qui intervient fatalement, il me semble, sur l’allure qu’à le courant final découpé par la PMW ...
              [/quote]
              Pour ne pas rencontrer d’hypothétiques interférences entre alimentation et PWM, il suffit d’utiliser une alimentation "propre", indépendante et largement dimensionnée. Peut-être une ancienne alimentation de PC. Vous trouverez sur internet comment la mettre sous tension sans ordinateur.
              Mieux vaut laisser au musée celles qui ont bien mérité leur retraite.
              Cordialement.

              Répondre

  • Commande de moteur à courant continu 28 novembre 2020 10:10, par haddad celine

    bonjour est ce que je peut commander un moteur cc de 24 v et 67A et 1600W avec le l298 et arduino

    Répondre

    • Commande de moteur à courant continu 28 novembre 2020 10:42, par msport

      Non, mais votre projet en modélisme ferroviaire doit être très intéressant, postez le dans "Projets" du forum.
      Par ailleurs la lecture de https://www.locoduino.org/spip.php?... vous sera certainement profitable.

      Voir en ligne : L298

      Répondre

      • Commande de moteur à courant continu 28 novembre 2020 11:51, par Christian

        Je ne pense pas que votre projet concerne le modélisme ferroviaire car qui peut avoir besoin d’un moteur de 1600 W sur un réseau de trains miniatures ? Sauf si vous pratiquez le train réel et non miniature !
        La notice du shield dont il est question dans l’article le précise bien : 2 A max par canal, soit 4 A max pour la carte shield. On est loin des 67 A nécessaires à votre moteur.
        Votre projet est plutôt dans la catégorie "industrielle" et il existe peut-être un pont en H capable de commander un tel moteur, mais je ne peux en dire plus car ici, on se contente de commander des petits trains. Une recherche sur internet dans les solutions pour l’industrie vous permettra sans doute de trouver...

        Répondre

  • Commande de moteur à courant continu 19 janvier 2021 11:16, par Babskwal

    Bonjour,
    Article très intéressant !
    Ma question : peut-on réaliser des ponts en H à base d’ULN2803 ?

    Répondre

    • Commande de moteur à courant continu 19 janvier 2021 14:15, par Christian

      Pourquoi se compliquer la vie alors que des circuits Pont en H existent pour toutes les gammes de puissances de moteurs ? Il suffit de choisir le sien en fonction de ce qu’on veut faire, et vouloir le réaliser soi-même ne permettra pas de faire une économie. La figure 3 de l’article qui montre un Pont en H réalisé avec quatre transistors identiques, n’est là que pour expliquer le principe d’un Pont en H, pas pour inciter à les réaliser soi-même. Après, libre à vous d’essayer...

      Répondre

      • Mon idée est d’utiliser des ULN 2803 dont il me reste un certain nombre d’exemplaires avant d’acheter des L298 (par exemple). Il me semble que le problème avec les ULN2803 est que les émetteurs sont mutualisés sur la masse du circuit imprimé, ce qui ne permet pas de faire un pont en H ?
        Pour les L298, faut-il passer par des modules montés, ou utiliser les circuits imprimés seuls est-il possible ?

        Répondre

        • Commande de moteur à courant continu 19 janvier 2021 18:44, par Christian

          Le paragraphe 8.2 Functional Block Diagram de la datasheet du composant ULN2803 montre effectivement que les Darlington ont leur émetteur à la masse, ce qui permet d’avoir les transistors C et D de la figure 3, mais ne convient pas pour les transistors A et B. Vous ne pourrez donc pas utiliser les 2803 pour faire votre pont en H.
          Pour le L298 les deux solutions sont possibles : on trouve des shields ou des cartes montées qui permettent d’éviter de l’électronique, mais on peut aussi aimer concevoir sa propre carte et souder les composants dessus.
          Concevoir son circuit imprimé présente un risque d’erreur de conception (dépend de votre expérience en la matière) ; le faire réaliser ensuite peut devenir plus cher qu’une carte toute montée vendue en grande quantité.
          Généralement, on réserve la solution du circuit imprimé quand on ne trouve pas l’équivalent de ce qu’on veut faire dans le commerce (prototype) ; ici, cela existe déjà. Mais encore une fois, vous avez le choix.

          Répondre

        • Commande de moteur à courant continu 19 janvier 2021 18:44, par msport

          ULN2803 : vous posez la question et vous donnez réponse et explication.
          Pour les L298, bien sur que les deux options sont possibles en fonction du montage que vous envisagez et de ce que vous savez faire.

          Répondre

  • gérer l’alimentation de plusieurs manèges 31 mai 2022 10:30, par Dumond

    Bonjour,
    Je suis novice dans ce domaine et j’aimerai savoir comment je peu gérer l’alimentation de plusieurs manège motorisés en 5v, avec Arduino, ainsi que le montage si possible.
    Je dois faire une expo de village de noël, et je voudrai pouvoir alimenter par alternance les différents manèges, de façon à ce qu’ils ne fonctionnent pas tout le temps, l’expo va durer au moins un mois et demi.
    Je vous remercie d’avance.

    Répondre

    • gérer l’alimentation de plusieurs manèges 31 mai 2022 10:45, par msport

      Bonjour,
      si Dominique passe par là, il pourra peut-être vous en dire plus sur ce que son Club a réalisé en 2015.
      Mais avant de vous lancer, il vaudrait mieux acquérir les notions nécessaires :
      https://forum.locoduino.org/index.p...
      Cordialement

      Voir en ligne : Le module Fête Foraine du CMFA

      Répondre

    • gérer l’alimentation de plusieurs manèges 31 mai 2022 10:49, par Christian

      Les signaux de sortie d’Arduino sont en 5 V, mais le courant n’est pas assez fort pour alimenter un moteur DC 5 V. Il faut donc amplifier le signal de sortie afin de commander le (ou les) moteur(s).
      Comme un manège ne tourne que dans un seul sens, cette amplification peut se faire avec un transistor (bipolaire ou MOSFET) ou bien avec un CI du type ULN2803 (voir l’article qui en parle) si on a plusieurs moteurs à commander.
      Pour un moteur qui tournerait dans les deux sens, il faudrait un CI du type LN298 (driver pont en H) dont on parle aussi abondamment sur ce site, ou bien la carte shield Arduino Motor Shield.
      Il faudra bien sûr prévoir une alimentation 5 V à part pour les moteurs.
      Toutes ces techniques sont bien décrites dans LOCODUINO, alors prenez le temps de les découvrir. Ensuite, commencez par commander un seul moteur, puis quand ça fonctionne, vous passez à deux, puis trois, etc.
      Il n’y a rien de compliqué dans votre projet et vous devriez vous en sortir facilement.

      Répondre

  • Commande de moteur à courant continu 17 janvier 2023 12:06, par pierre

    Bonjour,

    Je suis très intéressé par la commande de locomotive en courant pulsé via des Aduino et des L298N, 2 questions cependant :

    • on lit beaucoup que les moteurs à Rotor Sans Fer sont incompatibles avec la PWM, voir que ce serait dangeureux pour eux.
      Qu’en pensez-vous ?
    • que se passe-t-il si je pose une loco digitalisée(avec le bon CV29) sur une voie analogique alimentée en PWM ?

    Cordialement

    Répondre

    • Commande de moteur à courant continu 17 janvier 2023 13:50, par Jean-Luc

      Bonjour,

      Concernant les moteurs RSF, c’est une question de fréquence de la PWM. Plus c’est haut, mieux c’est. Voir ici.

      Répondre

      • Commande de moteur à courant continu 17 janvier 2023 14:38, par pierre

        Bonjour,

        Merci de cette réponse rapide.

        Mon problème c’est que je veux commander de nombreux L298N
        1 pour chaque canton, par l’intermédiaire de PCA9685.
        Mais ceux ci sont limités en fréquence, guère plus de 1000hz je crois.

        Répondre

    • Commande de moteur à courant continu 17 janvier 2023 14:09, par Christian

      Jean-Luc a été plus rapide que moi pour répondre, et de toute façon, je vous aurais renvoyé aussi vers cet article sur son blog. On peut faire de la PWM à haute fréquence avec Arduino et c’est expliqué sur ce site éditorial.

      Répondre

  • Commande de moteur à courant continu 17 janvier 2023 14:21, par msport

    Bonjour,

    les décodeurs sont munis d’une partie redressement filtrage du DCC : c’est à dire qu’ils sont capables de fonctionner avec une tension redressée de fréquence 5 KHz avec des absences (cas du Railcom)
    Cela dit, certains décodeurs non prévus n’aiment justement pas le Railcom.
    Ça devrait donc passer avec des fréquences d’au moins 5 KHz, mais mieux vaut s’assurer qu’on n’envoie pas de surtensions sur la voie.

    Cordialement

    Répondre

  • Commande de moteur à courant continu 22 novembre 2023 10:49, par Vannier

    Bonjour,
    Je cherche à faire fonctionner un moteur me permettant avec un réducteur associé de faire tourner un broyeur afin de recycler du plastique. Je n’ai pas trop de connaissance en électronique. J’ai besoin d’un couple minimum de 300Nm. Le couple étant lié à la puissance, je cherche à savoir comment contrôler mon moteur. Est-ce que je peux le contrôler avec Arduino en pwm ? J’ai peur que ce système ne soit pas assez puissant pour obtenir le résultat souhaité. Sinon existe-t-il un autre moyen (principe d’interrupteur marché/arrêt), car je n’ai pas besoin de faire varier la vitesse de mon moteur. Aussi si je veux faire tourner le moteur dans l’autre sens, je suis obligée d’utiliser un pont en H ?
    Merci d’avance pour votre aide
    Elisa

    Répondre

    • Commande de moteur à courant continu 22 novembre 2023 12:33, par Christian

      Puisqu’il n’est pas nécessaire de faire varier la vitesse du moteur, je pense qu’un Arduino ne sera pas utile. Par contre, la solution dépend du type de moteur :

      • pour un moteur à courant continu, il suffit d’intervertir la polarité de son alimentation et un simple interrupteur inverseur suffit.
      • pour un moteur pas à pas, il suffit d’inverser la séquence des pas, mais il faut aussi amplifier le signal émis par Arduino.
      • si le moteur est alimenté en 220 V, alors cela dépend de son type qui peut être monophasé (moteur d’aspirateur par exemple) ou triphasé (moteur de machine outil, fraiseuse, tour).
        Il existe de nombreuses vidéos sur YouTube qui montrent comment inverser le sens de rotation d’un moteur, et ce pour tous les types de moteur.
        Une carte électronique avec pont en H est possible pour un moteur à courant continu, mais vu que votre moteur réclame une certaine puissance, il faudra choisir cette carte en conséquence. Une telle carte ne servirait à rien pour un moteur monophasé ou triphasé.

      Répondre

      • Commande de moteur à courant continu 22 novembre 2023 13:58, par vannier

        Merci pour votre réponse.
        Je pense alors qu’un simple interrupteur inverseur suffit. Savez-vous aussi si je veux par exemple avoir 2 modes de vitesse fixes si cela peut se faire hors Arduino ?
        Les moteurs que je regarde sont des moteurs continus qui doivent être alimentés en 12V ou 24V. Pouvez-vous me confirmer que j’ai bine compris ? :
        - sans arduino : je commande mon moteur en l’alimentant avec une alimentation 12V ou 24V et j’utilise un interrupteur pour changer le sens de rotation uniquement
        - avec arduino : utiliser un transistor pour obtenir une tension 12V ou 24V et utiliser un pont en H pour inverser le sens de rotation

        Répondre

        • Commande de moteur à courant continu 22 novembre 2023 15:42, par Christian

          Sans Arduino : il s’agit d’un simple problème électrique. Deux tensions pour avoir deux vitesses différentes (par exemple la tension maxi d’alimentation pour vitesse rapide et une tension moitié pour vitesse plus lente. Le sens de marche est obtenu avec un inverseur (interrupteur à six broches).
          Avec Arduino : il existe la carte shield de motorisation qui accepte une alimentation moteur de 12 V et qui permet de commander deux moteurs en sens et en vitesse.
          Comme l’a dit msport, vous obtiendriez plus de réponses sur des forums d’électrotechnique ou de domotique (motorisation d’une porte de garage par exemple).

          Répondre

  • Commande de moteur à courant continu 22 novembre 2023 15:01, par msport

    Bonjour,
    Votre question concerne l’électrotechnique et non l’électronique
    En fait la question est quelle est la puissance du moteur dont vous avez besoin.
    La puissance, le couple et la vitesse sont liés par la relation fondamentale : P = T × Ω P : puissance en watts (W), T : Couple en newtons-mètres (Nm), Ω : vitesse angulaire en radians par seconde (rd/s).
    A 1500t/mn et 300 Nm ça fait 50 KW soit un moteur de plus de 400 Kg (100KW à 3000 t/mn)
    Clairement ce sera un moteur asynchrone, bien moins cher qu’un moteur à courant continu.
    Cela dit, le réducteur diminuera le couple appliqué au moteur et donc la puissance dans le même rapport.
    Locoduino n’est probablement pas le meilleur endroit pour poser ce type de question qui ne concerne pas le modélisme ferroviaire.

    Voir en ligne : puissance du moteur

    Répondre

Réagissez à « Commande de moteur à courant continu »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Les derniers articles

Les articles les plus lus