Branchement moteurs sur Arduino

a marqué ce sujet comme résolu.

Bonjour à tous,

Alors pour commencer je suis vraiment débutant dans l’électronique mais j’aimerais changer ça et en apprendre d’avantage, car je souhaite réalisé des projets avec des composants électrique qui jusqu’a maintenant me bloque.

Alors, voici mon projet; je souhaite réaliser un fusil NERF automatique le plus simple possible, car il n’y a pas beaucoup de place. Les composants que je souhaite utiliser sont :

  • 2 Moteurs brushless avec ESC (pour tirer les balles)
  • un petit moteur électrique basique (pour pousser les balles)
  • un bouton on/off (pour allumer/éteindre le système)
  • capteur de fin de courses (qui va servir de gachette)
  • une batterie Lipo (surement 3S)
  • et un Arduino Nano

Le principe est simple, quand le capteur fin de courses est en contact, les trois moteurs tourne afin de tirer. Je n’ai pas besoin de gérer la vitesse des moteur brushless, pleine puissance ça me convient.

Ma question est la suivante, comment je branche tout ça?

Voila, j’espère que j’ai été claire, merci d’avance pour l’intention que vous allez apporter.

Merci, cordialement.

Bonjour,

L’arduino (et les microproc en général) n’est pas fait pour débiter un courant directement dans le moteur, dès lors il faut passer soit par un transistor (plutôt mosfet que bipo) si la tension n’est pas trop élevée, soit par un relai mécanique. Si le moteur ne doit tourner que dans un sens, le montage est assez simple mais nécessite tout de même une diode de roue libre afin d’éviter de claquer le transistor, je te renvoie vers le tuto d’Eskimon pour plus de détails https://eskimon.fr/tuto-arduino-601-le-moteur-%C3%A0-courant-continu#alimenter-un-moteur sur le fonctionnement et l’alimentation des moteurs.

Pour le reste c’est du dimensionnement, alimenter le moteur avec la bonne tension (un régulateur si nécessaire), s’assurer de prendre un transistor qui supporte… tout cela se trouve dans les datasheet des composants.

Cordialement

Bonjour tholo18,

Ok je vois un peu près ce que tu veux dire. Mais même pour des moteur brushless avec ESC j’ai besoin de transistor? Et aussi une diode de roue libre?

J’ai mis en pièce jointe un exemple de séchama d’une personne qui a réalisé un peu près le même projet mais avec plus d’option. Exemple Projet.png

+0 -0

Bonjour,

Après quelques recherches sur les ESC, il me semble que ce sont des implémentations du transistor et de la diode, donc effectivement il ne faut pas mettre de transistor, il faut contrôler directement l’ESC. Après pour les branchements de l’ESC, il faut regarder sur la datasheet.

Pardon, j’ai dû mal m’exprimer, en fait l’ESC est une implémentation d’un mosfet et d’une roue libre, ils n’est donc pas nécessaire d’en rajouter. Pour le branchement de l’ESC il faudrait regarder dans sa datasheet, mais pour cela il faudrait sa référence.

Bonjour,

Nan nan vous vous êtes très bien exprimé, comme vous dites pour les 2 moteurs brushless avec ESC je n’ai pas besoin de mosfet et ni de diode de roue libre.

Mais par contre pour mon 3e moteur, qui est un simple moteur à courant continue, la j’ai besoin d’un mosfet et d’une diode de roule libre. C’est bien ça?

Bonjour,

Si le troisième moteur doit tourner uniquement dans un seul sens, oui, un mosfet et une diode Schottky suffisent.

Pour le schéma de montage Eskimon l’a donné sur son blog (https://eskimon.fr/tuto-arduino-601-le-moteur-%C3%A0-courant-continu#prot%C3%A9geons-lensemble-la-diode-de-roue-libre), il rajoute aussi une résistance de pull-down (assure le niveau bas si la sortie de l’Arduino est à haute impédance) et un condensateur antiparasite, selon les moteurs il peut déjà y avoir un condensateur présent dessus.

Bonjour,

Il est assez difficile de commenter votre schéma car ce n’est pas vraiment un schéma électrique, plutôt une représentation du système câblé avec les composants choisis. Je vais diviser mes remarques en deux, d’abord le système (le schéma en gros) et ensuite la façon dont sont branchés les composants sur votre image.

J’ai rajouté après des informations sur les composants, ainsi que les choix à faire dans le cas du moteur (et j’en ai profité pour m’amuser avec l’éditeur de ZdS).

Tout d’abord, le système :

  • il manquerait une résistance de pull-down au niveau du transistor (cf. schéma joins) ;
  • de plus, il est inutile de contrôler le transistor avec une sortie analogique de l’arduino, une sortie numérique fonctionne très bien ;
  • de même je ne pense pas qu’il soit nécessaire de lire la tension du capteur de fin de course, il suffit là aussi d’utiliser une entrée numérique ;
  • il y a aussi l’alimentation du moteur, vous prenez le 5V directement depuis le convertisseur de l’arduino, je ne sais pas si celui-ci à la puissance d’alimenter un moteur, il serait peut-être préférable de rajouter un convertisseur directement depuis la batterie pour ce moteur, voire aussi pour les ESC.
Schéma du moteur et du capteur de fin de course
Schéma du moteur et du capteur de fin de course

En ce qui concerne les branchements des composants sur votre image, il y a quelques détails :

  • la diode est inversée, là elle court-circuite le moteur (et le régulateur de tension de l’Arduino au passage), l’Arduino risque d’y passer ;
  • pour le transistor, souvent les composants ont leur grille sur la patte centrale (qui est aussi reliée sur certains boîtiers à la partie en métal où peut être insérée une vis), donc attention ici aussi.

Quelques explications supplémentaires

Comme vous vous dites débutant, je vais rajouter quelques explications sur les différents composants.

La diode :

C’est un composant qui à deux états possibles, soit bloqué si la tension à ses bornes est négative, soit passant si elle est positive ; tout du moins d’un point de vue assez grossier, en pratique la diode est plus complexe que ça, par exemple elle à une tension de seuil avant d’être passante (0,6V sur les 1N4148 de mémoire). Si jamais la tension est « trop » négative, la diode risque de claquer.

Les deux états de la diode
Les deux états de la diode

Les trois principaux types de diode sont les diodes classiques (par ex. la 1N4148), la diode Schottky qui est plus rapide et avec une tension de seuil plus faible, et la diode Zener qui est passante en-dessous d’une certaine tension négative en plus de la partie positive (effet d’avalanche).

La diode de roue libre :

Dans le cas d’un moteur, lorsqu’on va le faire tourner, il acquiert de l’énergie cinétique qui va le faire tourner encore un peu après l’arrêt de l’alimentation. Mais un moteur non alimenté dont l’arbre tourne provoque un effet dynamo, qui va générer un courant électrique dans les fils, ces fils passent par le transistor qui n’est pas un isolant (c’est un semi-conducteur), le courant peut alors détruire le transistor. Pour éviter ça, on met une diode qui va fermer le circuit quand il y a de l’effet dynamo, le courant va alors s’épuiser dans les fils.

Le choix pour le moteur

Il faut que la diode soit rapide en commutation, pour que le transistor n’ait pas à supporter une charge trop longtemps, on prend donc une diode Schottky.

Les transistors :

Ce sont un peu comme des interrupteurs commandés par de l’électronique, je dis un peu parce qu’en réalité, on peut utiliser certains transistors (les bipolaires) pour amplifier un signal électrique, ou pour bien d’autres choses. En fait, ils peuvent fonctionner soit en bloqué/saturé (ouvert ou fermé comme un interrupteur), soit en amplification dans leur zone linéaire.

Il y a deux types de transistors, les bipolaires et les transistors à effets de champs (FET pour field effect transistor).

Les transistors ont trois broches : chez le bipolaire ce sont le collecteur, l’émetteur et la base ; chez les FET ce sont le drain, la source et la grille. Les broches ne sont pas interchangeables, notamment entre l’émetteur et le collecteur (resp. entre le drain et la source). Les brochages se trouvent dans les docs techniques (datasheet) des composants.

Les bipolaires sont commandés en courant, ils sont soit NPN, soit PNP. Les transistors à effets de champs (JFET, MOSFET…) sont commandés en tension, ils sont soit à canal N, soit à canal P.

Les histoires de NPN/Canal N (resp. PNP/Canal P) sont liées au fait que le transistor est commandé par un courant/une tension positif(ve) (resp. négatif(ve)).

MOSFET, avec le placement de ses pattes, et ses deux états en fonctionnement bloqué/saturé
MOSFET, avec le placement de ses pattes, et ses deux états en fonctionnement bloqué/saturé

Avec des transistors on peut réaliser les premières portes logiques, et en les accumulant, on arrive à faire des processeurs. Comme la diode c’est un semi-conducteur.

Petite remarque sur le lien avec la diode : une diode est une jonction (semi-conductrice) PN, le transistor bipolaire est une jonction NPN ou PNP, c’est donc comme si c’était deux diodes qui se font face par l’avant ou par l’arrière. Le transistor à l’avantage d’être contrôlable contrairement aux diodes, ce sont deux usages différents.

Le choix pour le moteur

Pour se simplifier la vie on va dire qu’on prend un MOSFET à canal N, donc commandé par une tension positive. Ici, la tension positive sera du 5V (état HAUT) issu d’une sortie numérique de l’arduino, et un 0V (état BAS) bloque le transistor.

Les entrées/sorties (I/O) analogiques :

Sur le schéma de l’arduino, les I/O sont soit numériques (D0 à D13) pour avoir des 0 (0V) ou des 1 (5V) binaires, soit analogiques (A0 à A7) pour mesurer ou produire des tensions électriques entre 0 et 5V.

Au-delà ça n’a plus grande importance, j’y détaille le fonctionnement en interne qui permet de transformer des tensions analogiques en valeurs numériques.

Quand on veut mesurer la tension d’un signal électrique (par exemple du son), on a besoin d’un composant appelé convertisseur analogique-numérique (CAN ou ADC pour analog-digital converter), c’est un composant qui va donner en binaire la valeur de la tension. Par exemple, si l’ADC est alimenté en 0V-5V, avec une résolution de 10 bits, une tension d’entrée de 0V vaudra 0 en binaire, et une tension de 5V vaut 1023 (21012^{10}-1), il suffit ensuite de faire un produit en croix pour avoir les valeurs intermédiaires (tension=valeur×5V1023tension = \frac{valeur \times 5V}{1023}). 10 bits c’est la résolution de l’ADC de l’arduino nano.

Dans l’autre sens, si on souhaite passer d’une valeur binaire à une valeur analogique, on utilise un convertisseur numérique-analogique (CNA ou DAC pour digital-analog converter), le fonctionnement est le même, mais dans l’autre sens (au point même que certains ADC sont en réalité des DAC).

Le problème avec la conversion, c’est que c’est assez lent, on est donc limité aux nombres de conversions qu’on peut faire par seconde. Les ADC/DAC sont caractérisés par leur fréquence (nombre d’acquisition par seconde), mais il y a un théorème (théorème de Shannon-Nyquist) qui dit aussi que la fréquence d’un signal doit être au maximum de la moitié de la fréquence d’acquisition (appelée fréquence d’échantillonnage FeF_e). Si ce théorème n’est pas respecté, on obtient un phénomène appelé repliement de spectre qui dénature le signal (en gros les fréquences supérieurs à FeF_e sont replacées dans la bande [0 ;Fe2]\left[ 0~; \frac{F_e}{2}\right]).

En anglais on parle d’aliasing, notamment connu dans les jeux vidéos, car cet effet apparaît aussi sur des images, ou des séquences d’image (par exemple sur une vidéo de l’hélice d’un avion qui démarre, on a l’impression qu’à un moment, l’hélice change de sens de rotation).

Dans le cas de l’arduino, il n’y a qu’un seul ADC et un seul DAC malgré la présence de plusieurs I/O analogiques, en fait lors de la demande de conversion, le microcontrôleur (µC) redirige l’I/O concerné vers l’ADC/DAC. Il ne peut donc n’y avoir qu’une seule conversion à la fois.

Je m’arrête là car je m’égare un peu ^^.

Les résistances de pull-up/pull-down :

Quand on utilise des circuits intégrés, il arrive parfois qu’une I/O du circuit n’est pas d’état défini (HAUT ou BAS), on dit dans ce cas qu’elle est à haute impédance (HiZ pour high impedance), cela signifie simplement que la résistance interne est trop élevée pour pouvoir assurer l’un des deux états si on ajoute de l’électronique derrière. Pour faire simple, l’impédance d’un résistor c’est sa résistance, c’est plus complexe pour les condensateurs et les bobines.

Dans ce genre de cas on ajoute donc une résistance qui va assurer l’un des deux états. Ça arrive notamment quand une I/O d’un µC est configurée en entrée, ce qui est possible en cas de mauvaise configuration du µC.

Le choix pour le moteur

J’ai mis une résistance de 10 kΩ10~k\Omega, c’est une valeur un peu bateau, il faudrait plutôt vérifier dans la documentation du µC de l’arduino, mais 10 kΩ10~k\Omega devrait fonctionner.

J’ai mis la résistance en pull-down plutôt qu’en pull-up, ça signifie que l’état par défaut est 0, donc que le moteur est à l’arrêt.

Pour terminer

Voilà quelques informations sur les divers composants, je ne sais pas si j’ai été très clair ni si ça te sera très utile, j’ai été un peu long ça c’est sûr. Au fait, je m’excuse pour la qualité des schémas, j’ai fait avec les moyens du bord.

Bonjour Tholo18,

Déjà pour commencer, un grand merci pour vos réponses précises et détaillées, pour l’attention que vous apportez pour mon projet, encore merci.

J’ai retravaillé mon projet afin de le rendre plus simple, après plusieurs recherches j’ai découvert un composant que je ne connaissais pas, le Solénoïde. Donc je pense utiliser le solénoïde à la place du moteur CC pour pousser les balles.

Et aussi remplacer les moteurs brushless par des micros moteurs (voir photo). image.png

Et aussi je vais supprimer le bouton on/off.

Voici ma nouvelle liste de composant:

  • 2 micros moteurs
  • un solénoide
  • un capteur de fin de course (gâchette)
  • et une Batterie lipo

Avec cette nouvelle liste je me pose plusieurs questions.

  • Est-ce que je peux utiliser ces composant sans utiliser une carte arduino?
  • Pour utiliser les micros moteurs, ai-je besoin de diodes et d’un transistor?
+0 -0

Bonjour,

Le moteur que vous présentez est un moteur à courant continu, spécialisé pour le modélisme je pense, il faut voir si sa puissance est suffisante. Pour le branchement, ça dépend, j’y reviens après.

J’ai du mal à voir ce que vous appelez un solénoïde, un solénoïde en électronique c’est une bobine (aussi appelée inductance), j’ai du mal à cerner comment vous voulez l’utiliser.

Pour l’utilisation d’une carte Arduino (ou de tout autre µC), c’est je pense inutile ici, vu que les moteurs ne sont activés que par appuie d’une gâchette, on peut très bien fermer le circuit avec l’interrupteur pour alimenter les moteurs. Dans ce cas pas besoin de passer par un transistor, placer l’interrupteur directement sur le circuit fonctionne aussi. Pour la diode de roue libre, c’est un peu plus difficile à dire, il n’y a plus de transistor donc plus de composant à protéger. En me basant sur cette page Wikipédia, la majorité de l’énergie se dissipe lorsque le contact s’ouvre, donc je dirais qu’on peut très bien se passer de la diode.

Bonjour,

J’ai trouvé un moteur qui peut correspondre a ce que je souhaite.![]

Pour le solénoïde, je parle de cette appareil (voir photo). Il va me servir pour pousser les balles au moteur afin de les tirer.

Et du coup je pense que je vais avoir besoin d’une carte arduino pour controler le solénoïde et ainsi d’autres composants, j’ai regardé sur internet quelque exemple et je suis tombé sur ça.

Bonjour,

Si je comprends bien, vous voulez utiliser l’actionneur push pour la propulsion, et le moteur CC pour le rechargement ?

Pour le branchement du push, c’est exactement comme pour un moteur (sauf que la polarisation doit être importante). Le moteur comme le solénoïde linéaire sont en réalité des bobines, utilisées dans des conditions différentes. Donc le schéma est bon, si ce n’est que le transistor est un bipolaire et non un mosfet, d’où la présence d’une résistance à sa base. Je ne pense pas que l’arduino soit nécessaire, comme pour le moteur on peut simplement fermer le circuit avec un interrupteur lorsqu’il faut l’alimenter.

Bonjour,

Non pas tout à fait, l’actionneur push va pousser la balle aux moteurs CC qui vont ensuite la propulser avec leurs rotation.

Oui mais si garde le circuit fermer, le push va seulement faire une pousser et non une raffale de pousser, nan?

Parce que ce que je cherche, c’est quand je maintient le courant fermé le push s’actionne en "mode rafale", pour faire un genre de pistolet automatique. Et pour ça je pense qu’il faut que je le programme avec l’arduino ainsi que la vitesse de push, si je me trompe pas.

Bonjour,

Oui je vois ce que vous voulez dire, dans ce cas effectivement une Arduino sera plus simple à mettre en place. Sinon des solutions pourraient être un générateur de pwm comme le ne555, ou bien simplement programmer un µC pour utiliser l’un de ses timers. Mais je pense que ce serait se compliquer la vie dans le cadre d’un petit projet comme le votre.

Le programme Arduino consistera juste en une inversion de l’état d’une des broches de sortie dirigée vers le transistor du push, de mémoire ça ressemblerait à un truc comme ça :

bool push; // Contient l'état actuel de l'actionneur

// Pins de l'Arduino
const unsigned short trig_in = 2;
const unsigned short act_out = 13;

void setup(void) {
  pinMode(act_out, OUTPUT);
  pinMode(trig_in, INPUT);
  digitalWrite(trig_in, HIGH); // Résistance de pull-up interne de l'Arduino
  
  push = 0;
}

void loop(void) {
  if(digitalRead(trig_in)) {
    push = !push; // Inversion de l'état de l'actionneur
    digitalWrite(act_out, push); // Écriture de l'état sur la sortie
  }
  
  pause(0.1); // À déterminer
}

C’est une possibilité pour le code, il y en a d’autres, certainement mieux que celle-ci (peut-être avec les PWM de l’Arduino si elles ne sont pas trop rapides, ou alors timers/interruptions…).

Bonsoir,

Si les deux moteurs CC ont besoin d’être commandé dans un minimum de conditions (seulement par appui sur une gâchette par exemple), alors le passage par l’Arduino n’est pas forcément nécessaire. Par contre s’il faut s’assurer, par exemple, que l’actionneur n’est pas activé en même temps, alors le plus simple est de passer par l’Arduino.

Après, il faut voir combien consomme les moteurs en courant, si c’est assez faible, on peut directement brancher le moteur sur l’Arduino sans passer par un transistor. Dans ce cas, on met le moteur entre le +5/3.3V de l’Arduino et le pin d’IO, les états seront inversés (haut <-> moteur à l’arrêt, bas <-> moteur tourne) mais c’est plus sain pour le microcontrôleur (il préfère absorber le courant que l’émettre). Par contre ça ne dispense pas de la diode, il y a un risque (peut-être faible, je ne sais pas) que l’inertie du moteur au moment de l’arrêt grille l’arduino.

C’est un choix un peu risqué, mais en contre-partie ça réduit le nombre de composants à souder, une autre solution étant d’embarquer une mini breadboard pour éviter les soudures, dans ce cas ajouter des composants ne complique pas les choses et je dirais que le principe de précaution l’emporte. En plus les composants sont souvent vendus en paquet, donc on en a souvent en stock, au cas où l’idée initiale ne fonctionnerait pas lors de la mise en pratique et qu’il faudrait revoir le montage. Donc rien n’empêche d’essayer un premier montage, puis si ça ne fonctionne pas correctement, de passer sur une seconde option (sauf si un truc a cramé et qu’il faut le remplacer :) ).

Bonsoir,

Alors oui j’ai juste besoin de faire tourner les moteurs en appuiant sur la gâchette mais de même pour le solénoïde pusheur. Mais j’ai du mal a voir comment je peux faire actionner les deux, sachant que les deux moteurs CC n’ont pas forcément le besoin d’être reliés a l’arduino alors que le solénoide si.

Et oui la mini breadboard peut être une solution pour tester le système si il fonctionne correctement, a voir.

Bonsoir,

Vous voulez un seul bouton qui agit à la fois sur l’Arduino (pour le solénoïde) et sur les deux moteurs CC ? Si c’est ça, dans ce cas (en supposant le boutant placé au niveau du Vdd, mais il pourrait aussi être à la masse) la sortie de l’interrupteur est reliée d’un côté à l’IO de l’Arduino, de l’autre à un mosfet qui contrôle les deux moteurs (il n’y a donc besoin que d’une seule diode de roue libre, en parallèle des deux moteurs).

Je ne suis pas sûr de ce qui va suivre, mais je pense qu’il vaut mieux éviter de relier directement le bouton aux moteurs sans transistor, car je pense que le courant du moteur va chercher à rentrer dans le microcontrôleur pour clore son circuit, ce qui pourrait poser « quelques » soucis. En fait ça dépend de la structure interne, j’ai un peu cherché (notamment sur la doc de l’atmega328p) mais il y a un composant sur la ligne que je n’arrive pas à identifier, ça dépendrait surtout de lui. Par contre je suis un peu plus sûr d’une chose, en plaçant le bouton au niveau du rail de 5V, la pull-up interne de l’Arduino pose problème, elle ferme le circuit même quand le bouton est levé. Dans le cas où le bouton est sur le rail de masse, je sais pas, c’est ce que je disais précédemment ^^ . Au pire on peut tester avec une led, le microcontrôleur ne risquerait rien.

La breadboard est nécessaire pour tester le système, sinon il faut s’amuser à souder/dessouder, je pensais plutôt à carrément embarquer la breadboard dans le système final, c’est moins propre que la soudure, mais si tout est empaqueté ça se voit pas. Et si il y a un risque que ça se décroche, un peu de colle chaude (pas sur la tête des transistors, ils doivent respirer) et tout tiens. J’admets que c’est une solution de flemmard :) .

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte