Verwendung eines IRF5305 E-Switch-Moduls zur Steuerung der Motorgeschwindigkeit
Dieser Leitfaden untersucht das IRF5305 E-Switch-Modul, eine leistungsstarke und vielseitige Komponente, die einen P-Kanal-MOSFET verwendet, um Gleichstromlasten mit hohem Strom über ein Niederspannungssignal von einem Arduino zu steuern. Im Gegensatz zu einem mechanischen Relais bietet dieser Festkörperschalter schnelleres Schalten, längere Lebensdauer und keinen physischen Kontaktverschleiß. Sein praktischer Wert liegt in der Fähigkeit, Lasten sicher und effizient zu schalten oder zu dimmen, die weit mehr Strom ziehen, als ein Arduino-Pin liefern kann.
Dieses Modul ist ideal für eine Vielzahl von Projekten, darunter:
- Steuerung der Geschwindigkeit von Gleichstrommotoren mit hohem Strom in der Robotik oder bei kundenspezifischen Elektrowerkzeugen.
- Dimmen von Hochleistungs-LED-Beleuchtungssystemen für Automobil- oder Architekturanwendungen.
- Aufbau eines zuverlässigen, langlebigen Energiemanagementsystems, das Lasten ein- und ausschaltet, ohne den Verschleiß eines Relais.
- Erstellen einer isolierten Schnittstelle zur Steuerung von Hochspannungskreisen (bis zu 36 V) über einen Niederspannungs-Mikrocontroller.
Hardware-Übersicht
Das IRF5305 E-Switch-Modul ist für eine einfache Integration ausgelegt. Es verfügt über eine Klemmleiste für die Hochleistungsseite und zwei Pins für das Steuersignal. Das Modul enthält einen Optokoppler, der eine vollständige elektrische Trennung zwischen Ihrem Arduino und dem Hochleistungskreis gewährleistet und Ihren Mikrocontroller vor möglichen Schäden schützt. Der Haupt-MOSFET (IRF5305) fungiert als nahezu idealer Schalter mit einem extrem niedrigen Einschaltwiderstand von nur 65 Milliohm, was einen minimalen Spannungsabfall und Leistungsverlust gewährleistet (im Video bei 01:47).
Die physischen Abmessungen des Moduls betragen 40 mm Länge, 30,1 mm Breite und 16,4 mm Tiefe (im Video bei 05:09).
Hardware/Komponenten
- Arduino Uno oder ähnliches Board
- IRF5305 E-Switch-Modul
- Gleichstrommotor oder eine Hochleistungs-Glühbirne
- Externes Netzteil (bis zu 36 V)
- Jumper-Kabel
Verdrahtungsanleitung
Der Anschluss des Moduls ist unkompliziert. Die beiden Pins auf der Signalseite sind mit Positive und Ground beschriftet. Verbinden Sie den Ground-Pin mit einem GND-Pin am Arduino. Verbinden Sie den Positive-Pin mit einem digitalen Pin am Arduino, z. B. Pin 9 (im Video bei 07:53).
Verbinden Sie auf der Hochleistungsseite den positiven Anschluss Ihres externen Netzteils mit dem +-Anschluss und den negativen Anschluss mit dem --Anschluss auf der Eingangsseite des Moduls. Verbinden Sie dann Ihre Last (z. B. einen Motor) mit den +- und --Anschlüssen auf der Ausgangsseite (im Video bei 07:24).
Wichtig: Beim Ansteuern einer induktiven Last wie einem Motor ist es entscheidend, eine Freilaufdiode parallel zur Last zu platzieren. Diese Diode schützt den MOSFET vor Spannungsspitzen, die beim Ausschalten des Motors entstehen (im Video bei 09:52).
Code-Erklärung
Dieses Tutorial bietet drei verschiedene Programme, die jeweils eine andere Steuerungsebene demonstrieren. Der Code für jedes Programm ist unten im Artikel verfügbar.
Grundcode, um das IRF5305-Modul dauerhaft eingeschaltet zu halten
Dieser erste Sketch ist der einfachste. Er ist darauf ausgelegt, die Last einzuschalten und dauerhaft eingeschaltet zu lassen. Der Schlüsselteil dieses Codes ist die Pin-Definition am Anfang.
int loadPin =9;// Last-Pin
Diese Zeile definiert, welcher digitale Pin am Arduino mit dem "Positive"-Signalpin des Moduls verbunden ist. Sie können die Zahl 9 in einen beliebigen anderen digitalen Pin ändern, wenn Sie ihn woanders angeschlossen haben. Die setup()-Funktion setzt diesen Pin als Ausgang, und die loop()-Funktion enthält die Logik, um die Last einzuschalten und für immer zu warten.
Grundcode für das IRF5305-Modul, EIN/AUS-Schaltung
Dieser Sketch demonstriert zeitbasiertes Schalten, indem er die Last für 3 Sekunden einschaltet und dann für 3 Sekunden ausschaltet. Die benutzerkonfigurierbaren Teile sind die Pin-Definition und die Verzögerungszeiten.
int cont = HIGH;
int loadPin = 9;
Die Variable loadPin dient demselben Zweck wie im ersten Programm. Die Variable cont ist ein Zustandsflag, das das Programm prüft, um zu entscheiden, ob die Last ein- oder ausgeschaltet werden soll. Um die Ein-/Aus-Zeiten zu ändern, können Sie die delay(3000);-Befehle innerhalb der if- und else-Blöcke ändern. Die Verzögerung wird in Millisekunden gemessen, daher entspricht 3000 3 Sekunden.
Grundcode zur Steuerung der Motorgeschwindigkeit oder Lichtintensität mit dem IRF5305
Das letzte Programm verwendet Pulsweitenmodulation (PWM), um die Geschwindigkeit eines Motors oder die Helligkeit eines Lichts zu steuern. Es erhöht und verringert die Leistung allmählich in einer Schleife. Die wichtigsten Variablen befinden sich alle am Anfang des Sketches.
int motorPin =9;// Pin zum Verbinden mit dem Motor-Modul
int mSpeed = 0;// Variable zur Speicherung des Geschwindigkeitswerts
int mStep = 15;// Inkrement-/Dekrement-Schritt für die PWM-MotorgeschwindigkeitmotorPin: Dies definiert den PWM-fähigen Pin, der mit dem Modul verbunden ist. Es ist entscheidend, einen Pin zu verwenden, der PWM unterstützt (auf dem Arduino-Board oft mit einem~-Symbol markiert).mSpeed: Diese Variable enthält den aktuellen PWM-Wert, der von 0 (aus) bis 255 (volle Geschwindigkeit) reicht.mStep: Dies ist die Schrittweite, um die sich die Geschwindigkeit pro Zyklus ändert. Ein größerer Wert (z. B. 25) lässt die Geschwindigkeit schneller hoch- und herunterfahren, während ein kleinerer Wert (z. B. 5) den Übergang sanfter und langsamer macht.
Um die Geschwindigkeit des Hoch-/Herunterfahrens zu ändern, passen Sie den Wert delay(200); am Ende der Schleife an. Dies ist die Zeit in Millisekunden zwischen jedem Geschwindigkeitsschritt.
Live-Projekt/Demonstration
Im Video werden alle drei Programme demonstriert. Das erste Programm hält den Motor erfolgreich kontinuierlich am Laufen. Das zweite Programm wird dann hochgeladen, und der Motor wird gezeigt, wie er drei Sekunden lang eingeschaltet und drei Sekunden lang ausgeschaltet wird. Schließlich wird das PWM-Programm demonstriert, das den Motor langsam auf Höchstgeschwindigkeit beschleunigt und dann wieder bis zum Stillstand abbremst, wobei dieser Zyklus kontinuierlich wiederholt wird (im Video bei 15:42).
Das Video enthält auch einen umfassenden Strombelastungstest. Das Modul wurde an eine elektronische Last angeschlossen, um seine realen Grenzen ohne zusätzlichen Kühlkörper zu ermitteln. Die Ergebnisse zeigten, dass das Modul bei höheren Spannungen (bis zu 24 V) bis zu 10 Ampere verarbeiten konnte. Bei niedrigeren Spannungen (etwa 5 V) sank die Strombelastbarkeit jedoch erheblich, und das Modul begann bei Strömen über 10 Ampere zu überhitzen und zu rauchen (im Video bei 21:49). Die Schlussfolgerung ist, dass für kontinuierliche Anwendungen mit hohem Strom ein Kühlkörper erforderlich ist, um das Modul kühl zu halten und Schäden zu verhindern.
zu verhindern.
Kapitel
- [00:00] Einführung und Modulübersicht
- [01:13] Warum ein MOSFET-E-Switch verwenden
- [03:45] Modulanschlüsse und physische Abmessungen
- [05:24] IRF5305-Datenblatt-Überprüfung
- [07:03] Verdrahtung des Moduls mit dem Arduino
- [08:06] Erklärung des Schaltplans
- [10:29] Code-Durchlauf: Immer-an-Programm
- [11:04] Code-Durchlauf: Ein/Aus-Steuerungsprogramm
- [12:03] Code-Durchlauf: PWM-Geschwindigkeitssteuerungsprogramm
- [14:34] Live-Demonstration aller drei Programme
- [17:02] Strombelastungs- und Lasttest
- [23:34] Fazit und Zusammenfassung der Testergebnisse
Bilder
/*
* This is an Arduino sketch for a tutorial video
* explaining the 5305 MOSFET used as a switch
* This sketch turns the MOSFET ON and keeps it ON forever
* Download and resource page https://robojax.com/RJT125
* Written by Ahmad Shamshiri on Sep 12, 2018 in Ajax, Ontario, Canada
* For Robojax.com
* Watch instruction video for this code: https://youtu.be/eAANkWDvusU
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
int loadPin =9;// load pin
void setup() {
// Robojax.com demo
pinMode(loadPin,OUTPUT);
Serial.begin(9600);
Serial.println("Robojax Demo");
}
void loop() {
// Robojax.com tutorial
digitalWrite(loadPin, HIGH);
while(1);// wait forever
}
/*
* This is an Arduino sketch for a tutorial video
* explaining the 5305 MOSFET used as a switch
* This sketch turns the MOSFET ON for 3 seconds then turns it OFF for 3 seconds.
* Download and resource page https://robojax.com/RJT125
* Written by Ahmad Shamshiri on Sep 12, 2018 at 17:36 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/eAANkWDvusU
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
int cont = HIGH;
int loadPin = 9;
void setup() {
// Robojax.com demo
pinMode(loadPin,OUTPUT);
Serial.begin(9600);
Serial.println("Robojax Demo");
}
void loop() {
// Robojax.com tutorial
if(cont == HIGH)
{
Serial.println("OUTPUT is HIGH");
digitalWrite(loadPin,HIGH);
delay(3000);
cont = LOW;
}else{
Serial.println("OUTPUT is LOW");
digitalWrite(loadPin,LOW);
delay(3000);
cont = HIGH;
}
}
/*
* This is an Arduino sketch for a tutorial video
* explaining the 5305 MOSFET used as a switch
* This sketch will control the speed of a motor or the intensity of a light using PWM
* Download and resource page https://robojax.com/RJT125
* Written by Ahmad Shamshiri on Sep 12, 2018 at 23:23 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/eAANkWDvusU
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
int motorPin =9;// pin to connect to motor module
int mSpeed = 0;// variable to hold speed value
int mStep = 15;// increment/decrement step for PWM motor speed
void setup() {
// Robojax.com demo
pinMode(motorPin,OUTPUT);// set mtorPin as output
Serial.begin(9600);// initialize serial motor
Serial.println("Robojax Demo");
}
void loop() {
// Robojax.com tutorial
analogWrite(motorPin, mSpeed);// send mSpeed value to motor
Serial.print("Speed: ");
Serial.println(mSpeed);// print mSpeed value on Serial monitor (click on Tools->Serial Monitor)
mSpeed = mSpeed + mStep;
// See the video for details.
if (mSpeed <= 0 || mSpeed >= 255) {
mStep = -mStep;
}
delay(200);
}
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Andere Dateien
-
XY-T01 Relais-Timer: Paket verkauft
robojax_e-switch_IRF5305_datasheet.pdf0.16 MB