LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mercredi 29 mars 2017

49 visiteurs en ce moment

La PWM : Qu’est-ce que c’est ? (2)

Piloter un moteur

. Par : Dominique, Guillaume, Jean-Luc

Dans le premier article concernant la PWM  , « La PWM : Qu’est-ce que c’est ? (1) », nous avons abordé l’alimentation d’une DEL   par une tension hachée. Nous allons maintenant aborder la commande d’un moteur à courant continu, c’est à dire le type de moteur qui équipe nos locomotives, par une PWM  

La manière de s’y prendre diffère pour plusieurs raisons :

  • les moteurs employés en modélisme ferroviaire ont une tension d’alimentation qui est plus élevée que la tension de l’Arduino, généralement 12V ;
  • le courant nécessaire est également plus élevé, environ 10 fois, que ce que peut fournir une sortie de l’Arduino ;
  • contrairement à une DEL  , un moteur est une charge dite inductive. C’est à dire que lorsque l’alimentation du moteur est coupée, le courant ne s’arrête pas instantanément de circuler. Il diminue progressivement.

La conséquence directe est qu’une sortie PWM de l’Arduino ne peut pas commander directement un moteur. Il est nécessaire d’amplifier le signal, à la fois en tension et en courant. L’amplificateur doit être adaptée au courant consommé par le moteur et doit fournir la tension nécessaire. Elle doit aussi être capable de suivre la fréquence de la PWM.

Deux possibilités s’offrent à nous : utiliser un transistor MOSFET de puissance ou bien un pont en H. Nous allons tout d’abord examiner la première solution.

Amplification via un transistor MOSFET

Il existe 2 types de MOSFET, ceux à canal N et ceux à canal P. Les MOSFET sont des composants à 3 broches : le Drain (D), la Source (S) et la Grille (G). Voici le symbole des deux types de MOSFET.

PNG - 12.3 ko

Dans l’emploi que nous allons en faire, on peut voir ces transistors comme des interrupteurs. D et S sont les deux bornes de l’interrupteur et la tension de G détermine la position de l’interrupteur. Contrairement à un interrupteur mécanique, les MOSFET on un sens. Pour un MOSFET canal N, la tension de S doit être plus faible que la tension de D. On connectera donc S côté masse et D côté +12V. Pour un MOSFET canal P, c’est l’inverse. S doit être connecté côté +12V et D côté masse. La tension qui est appliquée entre G et S détermine si l’interrupteur est fermé ou non. Un MOSFET possède une tension de seuil. Pour un MOSFET canal N si la tension entre G et S est plus grande que la tension de seuil, l’interrupteur est fermé (le MOSFET est passant) et le courant circule sinon l’interrupteur est ouvert (le MOSFET est bloqué). Pour un MOSFET canal P, si la tension entre S et G est plus petite que la tension de seuil, l’interrupteur est fermé et le courant circule.

Les transistors MOSFET sont extrêmement sensibles à l’électricité statique. Les manipuler sans précaution peut aboutir à les endommager voire à les détruire. Il est impératif de s’équiper d’un bracelet antistatique qui sera relié à la terre. Les stations de soudage possèdent une prise de terre destinée à recevoir le câble du bracelet antistatique. De manière générale, il est préférable de procéder de même pour les circuits intégrés. Si la plupart des composants à base de transistor MOSFET sont protégés contre l’électricité statique, le risque de casse existe.

Commençons par un MOSFET canal N. Un des modèles les plus répandus est l’IRF540N. Le courant maximum est de 33A et la tension maximum de 100V. très largement suffisant pour nos usages. Sa tension de seuil est comprise entre 2 et 4V. On peut donc en mettant 5V sur la grille fermer l’interrupteur de manière fiable.

JPEG - 44.5 ko

On trouve de nombreux exemple de connexion pour l’Arduino, par exemple celui-ci :

PNG - 29.9 ko

Vous pouvez remarquer la diode en parallèle avec le moteur, il s’agit d’une diode roue libre. Ce type de montage a déjà été présenté dans « Les diodes classiques » pour une commande de relais. Comme cela a été dit plus haut le moteur est une charge inductive et lorsque le MOSFET cesse de conduire le courant ne s’arrête pas instantanément de circuler. Comme il doit aller quelque part, la diode lui offre un chemin. Le courant circule donc en boucle dans le moteur via la diode jusqu’à ce que la résistance du moteur le dissipe sous forme de chaleur. En l’absence de diode roue libre ce courant provoquerait une augmentation de tension importante sur le Drain du MOSFET avec le risque de l’endommager.

La résistance de 100kΩ a pour rôle de maintenir le MOSFET bloqué en tirant G à la masse tant que la broche de l’Arduino n’est pas programmée. En son absence G flotterait et selon la charge électrique présente le MOSFET pourrait devenir passant avec un démarrage intempestif du moteur.

La résistance de 270Ω évite que trop de courant ne soit tiré de la broche de l’Arduino. En effet, les MOSFET ont sur G l’équivalent d’un condensateur de valeur assez importante. Sans cette résistance le courant serait ponctuellement important et dépasserait les capacités de l’Arduino. Avec 270Ω, le courant instantané ne dépasse pas 19mA.

On choisit la broche 3 comme PWM. Le montage sur breadboard est le suivant :

PNG - 240.8 ko

Tout se passe très bien avec la fréquence par défaut de la PWM de l’Arduino, soit 490Hz sur la broche 3. Ici la PWM est réglée à 20, soit un rapport cyclique d’un peu moins de 8%. Le programme de test est réduit à sa plus simple expression.

  1. void setup()
  2. {
  3. analogWrite(3, 20);
  4. }
  5.  
  6. void loop()
  7. {
  8. }

Le signal jaune est pris sur la broche 3 de l’Arduino et le signal bleu entre le MOSFET et le moteur, c’est à dire au niveau de drain. Quand le signal jaune est à l’état haut, le MOSFET est passant et le drain est tiré à 0. Le moteur est alimenté. Quand le signal jaune est à l’état bas, le drain flotte et le moteur n’est pas alimenté. Le MOSFET agit donc comme un interrupteur commandé par la PWM de l’Arduino.

JPEG - 152.7 ko

Dans un prochain article, nous augmenterons la fréquence de la PWM afin de remédier à deux problèmes :

  • le bruit. À 490Hz, le moteur émet un Si légèrement faux et assez agaçant ;
  • le problème de dissipation thermique dans le moteur à cette fréquence. Ce problème est exposé sur mon blog : Tension hachée et pertes par effet Joule. Si vous exploitez en N ou en H0e, ce problème vous concerne et n’est pas à prendre à la légère.

9 Messages

Réagissez à « La PWM : Qu’est-ce que c’est ? (2) »

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 « Projets »

Un chenillard de DEL

Enseigne de magasin

Feux tricolores

Multi-animations lumineuses

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Une barrière infrarouge

Un capteur RFID

Un TCO xpressnet

Une animation sonore

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Calcul de la vitesse d’un train miniature avec l’Arduino

La génèse d’un réseau 100% Arduino

Une horloge à échelle H0

Simulateur de soudure à arc

Un automatisme de Passage à Niveau

La rétro-signalisation sur Arduino

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"

Réalisation d’un affichage de gare ARRIVEE DEPART

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Contrôleur à télécommande infrarouge pour centrale DCC++

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

Les derniers articles

La PWM : Qu’est ce que c’est ? (4)


Jean-Luc

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"


Christian Bézanger

Réalisation d’un affichage de gare ARRIVEE DEPART


Gilbert

Contrôleur à télécommande infrarouge pour centrale DCC++


Daniel

La PWM : Qu’est ce que c’est ? (3)


Jean-Luc

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)


bobyAndCo

Un gestionnaire en C++ pour votre réseau (4)


Pierre59

Un décodeur DCC pour 16 feux tricolores


Dominique, JPClaude, Thierry

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)


bobyAndCo

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)


Dominique

Les articles les plus lus

La PWM : Qu’est-ce que c’est ? (1)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

La PWM : Qu’est ce que c’est ? (4)

Une barrière infrarouge

Comment piloter trains et accessoires en DCC avec un Arduino (4)

L’Arduino et le système de commande numérique DCC

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

La PWM : Qu’est-ce que c’est ? (2)