Wie man den MOSFET-Optokoppler HW-532 verwendet, um mit einem Arduino die Drehzahl eines bis zu 30 V DC-Motors oder eine Last zu steuern
Diese Projektanleitung zeigt, wie man einen vielseitigen Drehzahlregler für Gleichstrommotoren mit einem Arduino und dem HW-532-MOSFET-Modul mit Optokoppler baut. Der MOSFET kannFR120N , LR7843 oder D4184.Damit können Sie die Geschwindigkeit und den Ein-/Aus-Zustand eines Gleichstrommotors bei Spannungen bis zu 30 V steuern. Das HW-532-Modul bietet Schutz und Isolation und ist damit sicherer und zuverlässiger als das direkte Anschließen des Motors an den Arduino.

Dieses Projekt ist für verschiedene Anwendungen wertvoll. Hier sind einige Beispiele:
- Präzise Steuerung der Geschwindigkeit eines Roboterarms
- Bau eines drehzahlgeregelten Lüfters für Kühlsysteme
- Entwicklung automatisierter Maschinen mit einstellbarer Bewegung
- Entwicklung einer motorisierten Ventilsteuerung für Flüssigkeitssysteme
Hardware/Komponenten
Die Kernkomponenten sind das Arduino, das HW-532 optokopplierte MOSFET-Modul (mit MOSFET-Optionen wie D4184, LR7843 oder FR120N), ein Gleichstrommotor (Nennspannung ≤ 30 V), Verbindungsdrähte und optional ein Potentiometer sowie ein Drucktastenschalter für erweiterte Steuerung (im Video bei 19:34).
Die Wahl des MOSFETs im HW-532-Modul hängt von Ihren Stromanforderungen ab (im Video bei 01:24). Das Video bietet einen detaillierten Vergleich der verschiedenen MOSFETs (im Video bei 06:50) und deren Eignung für verschiedene Anwendungen (im Video bei 09:45). Denken Sie daran, zum Schutz des Moduls eine Diode für induktive Lasten wie Gleichstrommotoren einzubauen (im Video bei 06:00 und 22:02).
Verdrahtungsanleitung
Die grundlegende Verkabelung verbindet den Pluspol des Motors mit dem Ausgang des HW-532, den Minuspol des Motors mit der Masse des HW-532 und den Steuerpin des HW-532 mit einem digitalen Pin des Arduino (im Video bei 11:16).

Code-Erklärung
Der bereitgestellte Code bietet drei Ebenen der Steuerung:

- Ein/Aus-Steuerung:Dieser einfache Code (im Video bei 15:05) verwendet einen digitalen Pin, um den Motor ein- und auszuschalten. Der vom Benutzer konfigurierbare Teil ist der
MOTOR_OUT_PINKonstante, die definiert, welcher Arduino-Pin das HW-532-Modul steuert. - PWM-Geschwindigkeitsregelung:Dieser Code (im Video bei 15:39) verwendet Pulsweitenmodulation (PWM), um die Drehzahl des Motors zu steuern. Der Benutzer kann Anpassungen vornehmen.
SPEED_MAXundSPEED_MINum die oberen und unteren Grenzen der Geschwindigkeitsregelung festzulegen, und diemotorControl()undstopMotor()Funktionen werden verwendet, um den Motor zu steuern bzw. anzuhalten. - Potentiometer- und Drucktastensteuerung:Dieser Code (im Video bei 22:12) ermöglicht die Steuerung der Motordrehzahl mit einem Potentiometer und das Starten/Stoppen über einen Drucktaster. Vom Benutzer konfigurierbare Teile umfassen
POT_PIN(Anschlussstift des Potentiometers),MOTOR_OUT_PIN(PWM-Steuerpin),START_STOP_PIN(Druckknopfstift),SPEED_MAX, undSPEED_MIN.
Live-Projekt/Demonstration
Das Video demonstriert die Funktionsweise aller drei Codebeispiele. Die Ein-/Aus-Steuerung wird gezeigt (im Video bei 11:41), gefolgt von der PWM-Geschwindigkeitsregelung (im Video bei 16:53) und schließlich der Steuerung mit Potentiometer und Drucktaster (im Video bei 23:02).
Kapitel
- [00:00] Einführung und Projektübersicht
- [01:24] HW-532-Modul und MOSFET-Optionen
- [03:23] Schaltplan und Erklärung
- [05:11] Komponentendetails
- [06:50] Analyse des MOSFET-Datenblatts
- [11:16] Grundlegende Verdrahtung und Ein-/Aus-Demonstration
- [15:05] Arduino-Code für Ein/Aus-Steuerung
- [15:39] Arduino-Code für PWM-Geschwindigkeitsregelung
- [19:34] Verdrahtung mit Potentiometer und Drucktaster
- [22:12] Arduino-Code mit Potentiometer und Drucktaster
/*
* Lektion 108-1: In dieser Lektion lernen wir, wie man das Modul mit FR120N, LR7843 und D4184 MOSFET verwendet, um eine Gleichstromlast von bis zu 10 A ein- und auszuschalten. HW-532 optisch isoliert von 5V bis 30V, Last bis zu 10A, je nach Modul. Schaltplan gezeigt, Verdrahtungsdiagramm erklärt, verschiedene Verdrahtungsmethoden mit Druckknopf und Potentiometer ebenfalls gezeigt. Video https://youtu.be/eqXaqRFAWrA
*
* Geschrieben von Ahmad Shamshiri für RoboJax.com
* // Veröffentlicht am 25. August 2022 in Aajx, ON, Kanada.
*
* Projekt 1: Ein-/Ausschalten eines Motors oder einer Last (dieses Projekt)
* Projekt 2: Geschwindigkeitsregelung mit Arduino-Code
* Projekt 3: Geschwindigkeitsregelung mit Potentiometer und einem Druckknopf
*
* Videoanleitung für diesen Code ansehen: https://youtu.be/eqXaqRFAWrA
*
* Dieser Code ist Teil des Arduino Step by Step Kurses, der hier beginnt: https://youtu.be/-6qSrDUA5a8
*
* Für die Bibliothek dieses Codes besuchen Sie http://robojax.com/
*
* Wenn Sie dieses Tutorial hilfreich fanden, unterstützen Sie mich bitte, damit ich weiterhin Inhalte wie diesen erstellen kann. Machen Sie eine Spende über PayPal mit Kreditkarte https://bit.ly/donate-robojax
*
* Dieser Code ist "AS IS" ohne Gewährleistung oder Haftung. Frei zu verwenden, solange Sie dieses Hinweisblatt unverändert lassen.*
* Dieser Code wurde von Robojax.com heruntergeladen.
* Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU-General Public License, wie sie von der Free Software Foundation veröffentlicht wurde, weiterverteilen und/oder ändern, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) eine spätere Version.
*
* Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird,
* aber OHNE JEDE GARANTIE; sogar ohne die implizierte Garantie der
* VERMARKTBARKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die
* GNU-General Public License für weitere Details.
*
* Sie sollten eine Kopie der GNU-General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, siehe <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()
/*
* Lektion 108-3: Steuerung der Geschwindigkeit eines Motors mit variablen Widerstand (Potentiometer) und Verwendung des Start/Stopp-Tasters mit Arduino.
*
* In dieser Lektion lernen wir, wie man das Modul mit FR120N, LR7843 und D4184 MOSFET verwendet, um eine DC-Last von bis zu 10A ein- und auszuschalten. HW-532 ist optisch isoliert von 5V bis 30V bei einer Last von bis zu 10A, abhängig vom Modul. Das Schaltbild ist gezeigt, das Verdrahtungsdiagramm erklärt, verschiedene Methoden der Verdrahtung mit Taster und Potentiometer sind ebenfalls gezeigt.
* Video https://youtu.be/eqXaqRFAWrA
* Holen Sie sich den Code für dieses Projekt von https://robojax.com/RJT797
* Geschrieben von Ahmad Shamshiri für RoboJax.com
* // Veröffentlicht am 25. August 2022 in Aajx, ON, Kanada.
*
* Projekt 1: Einschalten/Ausschalten eines Motors oder einer Last
* Projekt 2: Steuerung der Geschwindigkeit mit Arduino-Code
* Projekt 3: Steuerung der Geschwindigkeit mit Potentiometer und einem Taster (dieses Projekt)
*
* Sehen Sie sich die Videoanleitung zu diesem Code an: https://youtu.be/eqXaqRFAWrA
*
* Dieser Code ist Teil des Arduino Schritt-für-Schritt-Kurses, der hier beginnt: https://youtu.be/-6qSrDUA5a8
*
* Für die Bibliothek dieses Codes besuchen Sie http://robojax.com/
*
* Wenn Sie dieses Tutorial hilfreich fanden, unterstützen Sie mich bitte, damit ich weiterhin Inhalte wie diesen erstellen kann. Tätigen Sie eine Spende über PayPal mit Kreditkarte https://bit.ly/donate-robojax
*
* Dieser Code ist "WIE BESEHEN" ohne Gewährleistung oder Haftung. Frei verwendbar, solange Sie diese Notiz intakt halten.*
* Dieser Code wurde von Robojax.com heruntergeladen.
* Dieses Programm ist freie Software: Sie können es weiterverteilen und/oder modifizieren
* unter den Bedingungen der GNU General Public License, wie sie von
* der Free Software Foundation veröffentlicht wurde, entweder in der Version 3 der Lizenz oder
* (nach Ihrer Wahl) in jeder späteren Version.
*
* Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird,
* aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne sogar die stillschweigende Garantie für
* MARKTGÄNGLICHKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die
* GNU General Public License für weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License
* mit diesem Programm erhalten haben. Wenn nicht, siehe <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()
Dinge, die Sie vielleicht brauchen
-
AmazonKaufe HW-532 von Amazon.amzn.to
-
eBay
-
AliExpressKaufen Sie den FR120N Motorcontroller bei AliExpress.s.click.aliexpress.com
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Datenblatt (pdf)
-
infineon-IRLR7843 LR7843 MOSFET-Datenblatt
infineon-irlr7843-datasheet-en.pdf0.37 MB
Fritzing-Datei
-
HW-532B Mosfot-Modul
HW-532B.fzpz0.01 MB
Andere Dateien
-
infineon-irfr120n-datasheet-en
infineon-irfr120n-datasheet-en.pdf0.39 MB -
alpha-und-Omega-AOD4184A_Datenblatt
alpha-and-Omega-AOD4184A_datasheet.pdf0.43 MB