Ändern Sie einen 20A DC PWM-Motorsteuerung mit einem Arduino
In diesem Tutorial werden wir lernen, wie man einen 20A DC PWM-Motorsteuerung so modifiziert, dass er nahtlos mit einem Arduino funktioniert. Diese Modifikation ermöglicht eine präzise Geschwindigkeitsregelung eines Motors entweder über einen Potentiometer oder direkte Befehle vom Arduino. Das Ergebnis ist ein vielseitigeres Motorsteuersystem, das in verschiedene Projekte integriert werden kann.
Für dieses Projekt werden wir den PWM-Controller mit dem Arduino verbinden und Code verwenden, um die Motordrehzahl basierend auf den Benutzereingaben zu steuern. Diese Anordnung kann in Anwendungen von Vorteil sein, die eine variable Geschwindigkeitsregelung erfordern, wie z. B. in der Robotik oder in automatisierten Systemen. Zur besseren Verdeutlichung können Sie sich das Video zu diesem Tutorial ansehen (im Video bei 00:00).
Hardware erklärt
Die Hauptkomponenten dieses Projekts umfassen die Arduino-Platine, den 20A DC PWM-Motorgeschwindigkeitsregler und ein Potentiometer. Der Arduino fungiert als das Gehirn des Systems und sendet PWM-Signale an den Motorregler, um die Motorgeschwindigkeit anzupassen. Der Motorgeschwindigkeitsregler selbst nutzt einen 555 Timer-IC, um PWM-Signale zu erzeugen, die das Gate eines MOSFET steuern, der die Leistung des Motors reguliert.
Der Potentiometer fungiert als Eingabegerät und ermöglicht es den Benutzern, die gewünschte Geschwindigkeit manuell einzustellen. Durch Drehen des Potentiometers ändert sich der Widerstand, wodurch eine entsprechende Spannung an das Arduino gesendet wird. Das Arduino liest diese Spannung und passt das PWM-Signal, das an den Motorcontroller gesendet wird, entsprechend an.
Technische Daten
| Hersteller | Unbekannt |
|---|---|
| Teilenummer | 20A DC PWM Motorsteuerung |
| Logik/IO-Spannung | 5 V |
| Versorgungs- spannung | 10-60 V |
| Ausgangsstrom (pro Kanal) | 20 A |
| Spitzenstrom (pro Kanal) | 40 A |
| PWM-Frequenzrichtlinien | Typischerweise 1 kHz |
| Eingangslogikschwellen | 0,2 V (niedrig), 2,0 V (hoch) |
| Spannungsabfall / RDS(on)/ Sättigung | 0,1 V |
| Thermische Grenzen | Bis zu 85 °C |
| Paket | Standard-PCB |
| Notizen / Varianten | Verschiedene Modelle verfügbar |
- Stellen Sie eine ordnungsgemäße Wärmeableitung für Anwendungen mit hohen Strömen sicher.
- Überprüfen Sie die Verdrahtung auf die richtige Polarität, bevor Sie das System mit Strom versorgen.
- Verwenden Sie Entkopplungskondensatoren über den Stromversorgungsterminals.
- Halten Sie die PWM-Frequenz bei etwa 1 kHz für optimale Leistung.
- Achten Sie auf die Eingangs-Spannungsgrenzen (10-60 V).
Verdrahtungsanleitungen
Um den 20A DC PWM-Motorsteuergerät an das Arduino anzuschließen, beginnen Sie mit dem Anschluss der Stromversorgung. Der positive Anschluss der Stromversorgung sollte mit dem V+-Eingang des Motorsteuergeräts verbunden werden, während der negative Anschluss mit dem Ground (GND) des Steuergeräts verbunden wird. Verbinden Sie als Nächstes den Motor mit den Ausgangsanschlüssen des Steuergeräts und achten Sie auf die richtige Polarität für die gewünschte Drehung.
Für das PWM-Signal identifizieren Sie den PWM-Ausgangspin am Controller, den wir mit dem vorgesehenen PWM-Pin am Arduino verbinden werden (in diesem Fall Pin5). Darüber hinaus verbinden Sie die Erde des Arduino mit der Erde des Motorcontrollers, um einen gemeinsamen Bezug sicherzustellen. Schließlich, wenn Sie einen Potentiometer verwenden, verbinden Sie ein Ende mit dem 5V-Pin des Arduino, den mittleren Pin mit einem analogen Pin (wieA0), und den letzten Pin auf GND.
Code-Beispiele und Durchgänge
Der Code beginnt mit der Definition des PWM-Ausgangspins und des Steuerpins für den Potentiometer.setup()Die Funktion initialisiert den PWM-Pin als Ausgang und startet die serielle Kommunikation zur Fehlersuche.
#define pwmPin 5
#define controlPin A0
void setup() {
pinMode(pwmPin, OUTPUT);
Serial.begin(9600);
}
Im derloop()Wir lesen den Wert vom Potentiometer und ordnen ihn einem PWM-Bereich zu, der für den Motorcontroller geeignet ist. Dieser Wert wird dann auf den PWM-Pin geschrieben, der die Motordrehzahl steuert.
void loop() {
int potValue = analogRead(controlPin);
int pwm = map(potValue, 0, 1023, 0, 255);
analogWrite(pwmPin, pwm);
Serial.print("PWM:");
Serial.println(pwm);
delay(500);
}
Zuletzt werden Funktionen definiert, um den PWM-Wert in einen Prozentsatz umzuwandeln, was ein leichteres Verständnis der Motorgeschwindigkeit basierend auf den Benutzereingaben ermöglicht. Der gesamte Code wird unter dem Artikel geladen (im Video bei :00).
Demonstration / Was zu erwarten ist
Sobald alles verkabelt ist und der Code hochgeladen wurde, können Sie erwarten, dass der Motor auf die Position des Potentiometers reagiert. Das Drehen des Potentiometers erhöht oder verringert die Geschwindigkeit des Motors entsprechend dem PWM-Signal, das vom Arduino gesendet wird. Stellen Sie sicher, dass die Stromversorgung im erforderlichen Spannungsbereich liegt und dass der Motor die angelegte Spannung verarbeiten kann.
Häufige Fallstricke sind falsche Verdrahtung, die zu umgekehrter Motorrotation oder Startversagen führen kann. Überprüfen Sie immer die Verbindungen und stellen Sie sicher, dass die Erdungen von Arduino und Motorsteuerung miteinander verbunden sind (im Video bei 04:30).
Videostempel
- 00:00 Start
- 00:40 Einführung
- 04:07 Vorbereitung für die Verdrahtung (Änderung)
- 06:55 Verdrahtung erklärt
- 08:40 Code erklärt
- 13:15 Demonstration
Bilder
/*
* Modify 80NF70 PWM 20A Module to control with Arduino
* Modify the "DC 10-60V 20A Motor Speed Control Regulator PWM Motor Speed Controller Switch"
*
*
* Written by Ahmad Shamshiri
* on Saturday, July 27, 2019 at 18:23
* in Ajax, Ontario, Canada
* www.Robojax.com
* Watch the video instruction: https://youtu.be/ipFxYQkB5uw
* See the module on eBay. Get this module from eBay:
https://www.ebay.com/sch/i.html?&_nkw=20A+DC10-60V+PWM&_sacat=0
* or search for "DC 10-60V 20A Motor Speed Control Regulator PWM Motor Speed Controller"
* Watch full review of this module: https://youtu.be/kgs_FILyppk
*/
#define pwmPin 5
#define controlPin A0
void setup() {
pinMode(pwmPin,OUTPUT);
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(controlPin);
int pwm =map(potValue, 0,1023, 0, 255);
//pwm = toPWM(0);
analogWrite(pwmPin,pwm);
Serial.print("PWM:");
Serial.print(pwm);
Serial.print(" it is:");
Serial.print(pwmToPercent(pwm));
Serial.println("%");
delay(500);
}
/*
* @brief converts % value from 0 to 100% to 0-255
* @param v is integer value representing % from 0-100
* @return will return value from 0 to 255
* Written by Ahmad Shamshiri for robojax.com
* on July 30, 2019 in Ajax, Ontario, Canada
*/
int toPWM(int v){
return map(v, 0,100,0,255);
}//
/*
* @brief converts Arduino PWM value which is 0 to 255 to 0-100%
* @param p is integer value representing from 0-255
* @return will return value from 0 to 255
* Written by Ahmad Shamshiri for robojax.com
* on July 30, 2019 in Ajax, Ontario, Canada
*/
int pwmToPercent(int p)
{
return map(p, 0,255,0,100);
}
Dinge, die Sie vielleicht brauchen
-
eBay
-
AliExpressKaufen Sie 20A DC 10-60V PWM Motorsteuerung von AliExpresss.click.aliexpress.com
-
Banggood
Ressourcen & Referenzen
-
InternÜberprüfung des 20A DC PWM Motorsteuergerätsrobojax.com
Dateien📁
Keine Dateien verfügbar.