Suchcode

Ändern Sie einen 20A DC PWM-Motorsteuerung mit einem Arduino

Ä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.

20A DC PWM Motorsteuerung: Vorderansicht von links
20A DC PWM Motorregelung: Ansicht von der linken Seite vorne

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.

20A DC PWM-Motorsteuerung: Abmessungen
20A DC PWM Motorsteuerung: Abmessungen

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).
20A DC PWM-Motorsteuerung: Potentiometer (verstellbarer Widerstand)
20A DC PWM Motorregler: Potentiometer (verstellbarer Widerstand)

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

20A DC PWM-Motorsteuergerät: Haupt
20A DC PWM-Motorsteuergerät: Haupt
20A DC PWM-Motorgeschwindigkeitsregler: Draufsicht
20A DC PWM-Motorgeschwindigkeitsregler: Draufsicht
20A DC PWM Motorregelung: Abmessungen
20A DC PWM Motorregelung: Abmessungen
20A DC PWM Motorsteuerung: Potentiometer (verstellbarer Widerstand)
20A DC PWM Motorsteuerung: Potentiometer (verstellbarer Widerstand)
20A DC PWM Motorsteuerung: Vorderansicht
20A DC PWM Motorsteuerung: Vorderansicht
20A DC PWM Motorsteuergerät: Vorderansicht von der rechten Seite
20A DC PWM Motorsteuergerät: Vorderansicht von der rechten Seite
20A DC PWM-Motor Geschwindigkeitsregler: linke Seitenansicht
20A DC PWM-Motor Geschwindigkeitsregler: linke Seitenansicht
20A DC PWM Motor Geschwindigkeitsregler:Unterseite PCB Ansicht
20A DC PWM Motor Geschwindigkeitsregler:Unterseite PCB Ansicht
20A DC PWM Motor Geschwindigkeitsregler:Positive Liniengemeinsam
20A DC PWM Motor Geschwindigkeitsregler:Positive Liniengemeinsam
222-Hack: Control a 20A DC Motor with an Arduino using 20A DC 10-60V PWM
Sprache: C++
/*
 * 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); 
}

Dateien📁

Keine Dateien verfügbar.