LOCODUINO

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

mardi 19 mars 2024

Visiteurs connectés : 22

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

Piloter un moteur

.
Par : Dominique, Guillaume, Jean-Luc

DIFFICULTÉ :

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 kio

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 kio

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

PNG - 29.9 kio

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 kio

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.

void setup()
{
  analogWrite(3, 20);
}

void loop()
{
}

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 kio

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.

13 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 »

LaBox, Une Centrale DCC polyvalente et abordable (1)

LaBox, Une Centrale DCC polyvalente et abordable (2)

LaBox, Une Centrale DCC polyvalente et abordable (3)

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)

La carte Satellite V1 (1)

La carte Satellite V1 (2)

La carte Satellite V1 (3)

La carte Satellite V1 (4)

La carte Satellite V1 (5)

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

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Etude d’un passage à niveau multivoies

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

Ménage à trois (Ordinateur, Arduino, réseau)

Réalisation d’un va-et-vient automatique et réaliste

Souris et centrale sans fil

Communications entre JMRI et Arduino

Annonces en gare avec la RFID

Une croix de pharmacie animée avec Arduino UNO

Réalisation d’un wagon de mesure (distance et vitesse)

Passage à niveau géré par Arduino (1)

Passage à niveau géré par Arduino (2)

Passage à niveau géré par Arduino (3)

Passage à niveau géré par Arduino (4)

Passage à niveau géré par Arduino (5)

Une manette simple et autonome pour LaBox

Éclairer le réseau (1)

Éclairer le réseau (2)

Block Automatique Lumineux à 8 cantons analogiques

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco

Éclairer le réseau (3)

Éclairer le réseau (4)

Éclairer le réseau (5)

JMRI pour Ma première centrale DCC

Rocrail pour Ma première centrale DCC

CDM-Rail pour Ma première centrale DCC (1)

CDM-Rail pour Ma première centrale DCC (2)

Banc de test pour les décodeurs DCC

Ma première manette pour les aiguillages DCC

Mon premier décodeur pour les aiguillages DCC

Boitier 3D pour la station DCC minimale

Va-et-vient pour deux trains

Un programme pour régler facilement les servos moteurs avec un ESP32

Affichage publicitaire avec Arduino (1)

Affichage publicitaire avec Arduino (2)

TCO Web interactif avec des ESP32 et des ESP8266 (1)

TCO Web interactif avec des ESP32 et des ESP8266 (2)

TCO Web interactif avec des ESP32 et des ESP8266 (3)

TCO Web interactif avec des ESP32 et des ESP8266 (4)

TCO Web interactif avec des ESP32 et des ESP8266 (5)

Les derniers articles

LaBox, Une Centrale DCC polyvalente et abordable (3)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (1)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (2)


Dominique, msport, Thierry

Un programme pour régler facilement les servos moteurs avec un ESP32


bobyAndCo

TCO Web interactif avec des ESP32 et des ESP8266 (5)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (4)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (3)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (2)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (1)


utpeca

Affichage publicitaire avec Arduino (2)


catplus, Christian

Les articles les plus lus

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

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

Mon premier décodeur pour les aiguillages DCC

La rétro-signalisation sur Arduino

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

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

Chenillard de DEL

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

LaBox, Une Centrale DCC polyvalente et abordable (1)

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