Comment utiliser le MOSFET optocouplé HW-532 pour contrôler, à l'aide d'un Arduino, la vitesse d'un moteur à courant continu (jusqu'à 30 V) ou une charge
Ce guide de projet explique comment construire un contrôleur de vitesse polyvalent pour moteur à courant continu en utilisant un Arduino et le module MOSFET optocouplé HW-532. Le MOSFET peut êtreFR120N, LR7843 ou D4184.Cela vous permet de contrôler la vitesse et l'état marche/arrêt d'un moteur à courant continu avec des tensions allant jusqu'à 30V. Le module HW-532 offre une protection et une isolation, ce qui le rend plus sûr et plus fiable que de brancher directement le moteur sur l'Arduino.

Ce projet est précieux pour diverses applications. Voici quelques exemples :
- Contrôler précisément la vitesse d'un bras robotique
- Construire un ventilateur à vitesse variable pour les systèmes de refroidissement
- Créer des machines automatisées au mouvement réglable
- Développement d'une commande motorisée de vannes pour des systèmes fluidiques
Matériel/Composants
Les composants principaux sont l'Arduino, le module MOSFET à optocoupleur HW-532 (avec des MOSFETs comme D4184, LR7843 ou FR120N), un moteur à courant continu (tension nominale ≤ 30V), des fils de connexion, et, en option, un potentiomètre et un bouton-poussoir pour un contrôle avancé (dans la vidéo à 19:34).
Le choix du MOSFET dans le module HW-532 dépend de vos besoins en courant (dans la vidéo à 01:24). La vidéo fournit une comparaison détaillée des différents MOSFET (dans la vidéo à 06:50) et de leur adéquation à diverses applications (dans la vidéo à 09:45). N'oubliez pas d'ajouter une diode pour les charges inductives comme les moteurs à courant continu afin de protéger le module (dans la vidéo à 06:00 et 22:02).
Guide de câblage
Le câblage de base relie la borne positive du moteur à la sortie du HW-532, la borne négative du moteur à la masse du HW-532, et la broche de commande du HW-532 à une broche numérique de l'Arduino (dans la vidéo à 11:16).

Explication du code
Le code fourni offre trois niveaux de contrôle :

- Commande marche/arrêt :Ce code simple (dans la vidéo à 15:05) utilise une broche numérique pour activer et désactiver le moteur. La partie configurable par l'utilisateur est le
MOTOR_OUT_PINconstante, qui définit quelle broche Arduino contrôle le module HW-532. - Contrôle de vitesse PWM :Ce code (dans la vidéo à 15:39) utilise la modulation de largeur d'impulsion (PWM) pour contrôler la vitesse du moteur. L'utilisateur peut ajuster
SPEED_MAXetSPEED_MINpour régler les limites supérieures et inférieures du contrôle de vitesse, et lemotorControl()etstopMotor()Des fonctions sont utilisées pour contrôler le moteur et l'arrêter, respectivement. - Contrôle par potentiomètre et bouton-poussoir :Ce code (dans la vidéo à 22:12) permet de contrôler la vitesse du moteur avec un potentiomètre et de le démarrer/arrêter avec un bouton poussoir. Les parties configurables par l'utilisateur incluent
POT_PIN(broche du potentiomètre),MOTOR_OUT_PIN(broche de commande PWM),START_STOP_PIN(goupille du bouton-poussoir),SPEED_MAX, etSPEED_MIN.
Projet en direct/Démonstration
La vidéo montre le fonctionnement des trois exemples de code. Le contrôle marche/arrêt est montré (dans la vidéo à 11:41), suivi du contrôle de vitesse PWM (dans la vidéo à 16:53), et enfin le contrôle par potentiomètre et bouton-poussoir (dans la vidéo à 23:02).
Chapitres
- [00:00] Introduction et présentation du projet
- [01:24] Module HW-532 et options MOSFET
- [03:23] Schéma du circuit et explication
- [05:11] Détails du composant
- [06:50] Analyse de la fiche technique du MOSFET
- [11:16] Câblage de base et démonstration marche/arrêt
- [15:05] Code Arduino pour le contrôle marche/arrêt
- [15:39] Code Arduino pour le contrôle de la vitesse par PWM
- [19:34] Câblage avec potentiomètre et bouton-poussoir
- [22:12] Code Arduino avec potentiomètre et bouton-poussoir
/*
* Leçon 108-1 : Dans cette leçon, nous apprenons à utiliser le module avec les MOSFET FR120N, LR7843 et D4184 pour activer/désactiver une charge CC jusqu'à 10 A. Le HW-532 est opto-isolé pour une charge de 5 V à 30 V jusqu'à 10 A selon le module. Schéma, schéma de câblage expliqué et différentes méthodes de câblage avec bouton-poussoir et potentiomètre.
* Vidéo : https://youtu.be/eqXaqRFAWrA
*
* Rédigé par Ahmad Shamshiri pour RoboJax.com
* // Publié le 25 août 2022 à Aajx, Ontario, Canada.
*
* Projet 1 : Allumer/éteindre un moteur ou une charge (ce projet)
* Projet 2 : Contrôler la vitesse avec un code Arduino
* Projet 3 : Contrôler la vitesse avec un potentiomètre et un bouton-poussoir
*
* Regardez la vidéo d'instructions pour ce code : https://youtu.be/eqXaqRFAWrA
*
* Ce code fait partie du cours Arduino étape par étape, disponible ici : https://youtu.be/-6qSrDUA5a8
*
* Pour accéder à la bibliothèque de ce code, rendez-vous sur http://robojax.com/
*
* Si ce tutoriel vous a été utile, n'hésitez pas à me soutenir pour que je puisse continuer à créer du contenu similaire. Faites un don via PayPal par carte bancaire : https://bit.ly/donate-robojax
*
* Ce code est fourni « EN L'ÉTAT » sans garantie ni responsabilité. Utilisation libre à condition de conserver cette note intacte.*
* Ce code a été téléchargé depuis Robojax.com.
* Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3, soit (à votre choix) toute version ultérieure.
*
* Ce programme est distribué dans l’espoir qu’il soit utile,
* mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
* QUALITÉ MARCHANDE ou d’ADÉQUATION À UN USAGE PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.
*
* Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme. Dans le cas contraire, consultez <https://www.gnu.org/licenses/>.
*/
const int MOTOR_OUT_PIN=2;
void setup() {
// Robojax MOSFET Motor driver code
Serial.begin(9600);
Serial.println("Robojax LR7834 , Arduino");
pinMode(MOTOR_OUT_PIN, OUTPUT);
digitalWrite(MOTOR_OUT_PIN, HIGH);
}
// the loop routine runs over and over again forever:
void loop() {
// Robojax XY-GMOS MOSFET Motor driver code
} // loop end
# include <Arduino_LSM6DS3.h>
/*
* Lesson 108-2: In this lesson we learn how to use the module with FR120N , LR7843 and D4184 MOSFET to turn ON/OFF DC load up to up to 10A. HW-532 optically isolated from 5V to 30V load up to 10A depending on the module. Schematic shown, wiring diagram explained, different
* method of wiring with push button and potentiometer also shown.
* Video https://youtu.be/eqXaqRFAWrA
* Get code for this project from https://robojax.com/RJT797
*
* Written by Ahmad Shamshiri for RoboJax.com
* // Published on Aug 25, 2022 in Aajx, ON, Canada.
*
*
* Project 1: Turning ON/OFF a motor or load (this project)
* Project 2: Controlling Speed using Arduino code
* Project 3: Controlling Speed using potentiometer and a push button
* Watch Video instruction for this code:https://youtu.be/eqXaqRFAWrA
*
* This code is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
*
* for library of this code visit http://robojax.com/
*
* If you found this tutorial helpful, please support me so I can continue creating
* content like this. Make a donation using PayPal by credit card https://bit.ly/donate-robojax
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int MOTOR_OUT_PIN = 3;
const int SPEED_MAX = 100; // in %
const int SPEED_MIN = 0; // in %
const int STOP=0;
const int RUN=1;
int motorState=RUN;
int motorSpeed = 0; // between 0 to 100%.
// video instruction https://youtu.be/eqXaqRFAWrA
void setup() {
// Robojax XY-GMOS MOSFET Motor driver code
Serial.begin(9600);
Serial.println("Robojax XY-GMOS Motor, Arduino");
pinMode(MOTOR_OUT_PIN, OUTPUT);
} // setup ends
// the loop routine runs over and over again forever:
void loop() {
// video https://youtu.be/eqXaqRFAWrA
motorControl(50); // run motor at 50%
delay(5000); // keep it running for 5000ms or 5 seconds
stopMotor(); // stop the motor
delay(3000); // keep it stopped for 5000ms or 5 seconds
for(int i=0; i<100; i++)
{
motorControl(i);
delay(200);
}
stopMotor(); // stop motor
delay(3000); // keep it stopped for 5000ms or 5 seconds
for(int i=100; i >0; i--)
{
motorControl(i);
delay(200);
}
// Robojax LR7843 MOSFET Motor driver code
} // loop end
/*
* motorControl(int s)
* @brief controls the motor with the value s
* @param return nothing
* @param "type" is character
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void motorControl(int s)
{
// Robojax LR7843 MOSFET Motor driver code
// video https://youtu.be/eqXaqRFAWrA
int k = map(s, SPEED_MIN, SPEED_MAX, 0, 255);
Serial.print("Speed: "); Serial.print(s);Serial.println("%");
analogWrite(MOTOR_OUT_PIN, k);
} // motorControl
/*
* stopMotor()
* @brief stops the motor
* @param return nothing
* @param
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void stopMotor(){
// Robojax XY-GMOS MOSFET Motor driver code
analogWrite( MOTOR_OUT_PIN, 0);
Serial.println("STOPPED");
} // stopMotor()
/*
* Leçon 108-3 : Contrôle de la vitesse d'un moteur à l'aide d'une résistance variable (potentiomètre) et d'un bouton-poussoir marche/arrêt avec Arduino.
*
* Dans cette leçon, nous apprenons à utiliser le module avec les MOSFET FR120N, LR7843 et D4184 pour activer/désactiver une charge CC jusqu'à 10 A. Le HW-532 est opto-isolé pour une charge de 5 V à 30 V jusqu'à 10 A selon le module. Schéma, schéma de câblage expliqué et différentes méthodes de câblage avec bouton-poussoir et potentiomètre sont également présentées.
* Vidéo : https://youtu.be/eqXaqRFAWrA
* Récupérez les codes de ce projet sur https://robojax.com/RJT797
* Rédigé par Ahmad Shamshiri pour RoboJax.com
* // Publié le 25 août 2022 à Aajx, ON, Canada.
*
* Projet 1 : Allumer/éteindre un moteur ou une charge
* Projet 2 : Contrôler la vitesse avec un code Arduino
* Projet 3 : Contrôler la vitesse avec un potentiomètre et un bouton-poussoir (ce projet)
*
* Regardez la vidéo explicative pour ce code : https://youtu.be/eqXaqRFAWrA
*
* Ce code fait partie du cours Arduino étape par étape, disponible ici : https://youtu.be/-6qSrDUA5a8
*
* Pour accéder à la bibliothèque de ce code, rendez-vous sur http://robojax.com/
*
* Si ce tutoriel vous a été utile, n'hésitez pas à me soutenir pour que je puisse continuer à créer du contenu similaire. Faites un don via PayPal par carte bancaire : https://bit.ly/donate-robojax
*
* Ce code est fourni « EN L'ÉTAT » sans garantie ni responsabilité. Utilisation libre à condition de conserver cette note intacte.*
* Ce code a été téléchargé depuis Robojax.com.
* Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3, soit (à votre choix) toute version ultérieure.
*
* Ce programme est distribué dans l’espoir qu’il soit utile,
* mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
* QUALITÉ MARCHANDE ou d’ADÉQUATION À UN USAGE PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.
*
* Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme. Dans le cas contraire, consultez <https://www.gnu.org/licenses/>.
*/
const int POT_PIN =A0; // can change
const int MOTOR_OUT_PIN = 3; // ~
const int START_STOP_PIN=2; // for push button switch
const int SPEED_MAX = 100; // in %
const int SPEED_MIN = 0; // in %
// video instruction https://youtu.be/eqXaqRFAWrA
const int STOP=0;
const int RUN=1;
int motorState=RUN;
int motorSpeed = 0; // between 0 to 100%.
void pushButton();
void setup() {
// Robojax XY-GMOS MOSFET Motor driver code
Serial.begin(9600);
Serial.println("Robojax XY-GMOS Motor, Arduino");
pinMode(START_STOP_PIN, INPUT_PULLUP);
pinMode(MOTOR_OUT_PIN, OUTPUT);
// video instruction https://youtu.be/eqXaqRFAWrA
}
// the loop routine runs over and over again forever:
void loop() {
pushButton();
int potValue =analogRead(POT_PIN);
int speedPercent = map(potValue, 0, 1023, 0, 100);
if(motorState ==RUN)
{
motorControl(speedPercent);
}else{
stopMotor();
}
delay(500);
// Robojax XY-GMOS MOSFET Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
} // loop end
/*
* motorControl(int s)
* @brief controls the motor with the value s
* @param return nothing
* @param "type" is character
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void motorControl(int s)
{
// Robojax LR7843 MOSFET Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
int k = map(s, SPEED_MIN, SPEED_MAX, 0, 255);
Serial.print("Speed: "); Serial.print(s);Serial.println("%");
analogWrite(MOTOR_OUT_PIN, k);
} // motorControl
/*
* stopMotor()
* @brief stops the motor
* @param return nothing
* @param
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void stopMotor(){
// Robojax XY-GMOS MOSFET Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
analogWrite( MOTOR_OUT_PIN, 0);
Serial.println("STOPPED");
} // stopMotor()
/*
* pushButton()
* @brief reads the push button
* @param return nothing
* @param
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void pushButton()
{
// Robojax XY-GMOS MOSFET Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
if(digitalRead(START_STOP_PIN) ==LOW)
{
motorState =!motorState;
delay(100);
}
} // pushButton()
Ce dont vous pourriez avoir besoin
-
AmazonAchetez HW-532 sur Amazonamzn.to
-
eBay
-
AliExpressAchetez le pilote de moteur FR120N sur AliExpresss.click.aliexpress.com
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Fiche technique (pdf)
-
fiche technique MOSFET infineon-IRLR7843 LR7843
infineon-irlr7843-datasheet-en.pdf0.37 MB
Fichier Fritzing
-
Module Mosfot HW-532B
HW-532B.fzpz0.01 MB
Autres fichiers
-
infineon-irfr120n-datasheet-en
infineon-irfr120n-datasheet-en.pdf0.39 MB -
alpha-et-Omega-AOD4184A_fiche technique
alpha-and-Omega-AOD4184A_datasheet.pdf0.43 MB