Hochstrom-Motorsteuerkreis mit Arduino

Hochstrom-Motorsteuerkreis mit Arduino

In diesem Projekt diskutieren wir, wie es geht Motordrehzahl steuern Verwenden der Arduino PWM-Schaltung und Implementieren der Rückwärts- oder Richtungssteuerung in einem Gleichstrommotor mit Arduino über ein paar Drucktastenschalter. Mit dieser Einstellung kann jeder Hochstrommotor mit bis zu 30 Ampere gesteuert werden

DurchAnkit Negi



Der Motor ist ein sehr wichtiger Bestandteil der Elektrik und Elektronik, da er in vielen Bereichen als Aktuatoren eingesetzt wird.



Wir brauchen Motoren für kleine Anwendungen wie die Robotik sowie in Bereichen, in denen schwere Motoren eingesetzt werden (Industrie usw.).

Jetzt können Motoren, die für kleine Anwendungen verwendet werden, einfach gesteuert werden, da sie nicht viel Strom verbrauchen (weniger als 2 Ampere).



Und diese Motoren können einfach mit einem Mikrocontroller wie Arduino mit gesteuert werden Motortreiber wie L298 oder L293D .

Motoren, die für schwere Zwecke (größer als 10 Ampere) verwendet werden, können jedoch nicht gesteuert werden mit diesen ic's da sie begrenzten Strom liefern können (max 2amp). Wie werden diese Motoren dann gesteuert?

Die Antwort ist einfach: mit Relais , der als Schalter wirkt, d. h. großen Strom unter Verwendung eines kleinen Stroms schaltet. Auf diese Weise können zwei Dinge erreicht werden:



1. Lassen Sie unseren Hochstrommotor selbst laufen.

2. Trennen Sie den Stromkreis und verhindern Sie so Stöße.

Jetzt kann jeder Mikrocontroller verwendet werden, um diese Relais zu schalten. Wir werden hier Arduino UNO verwenden.

FÜR DIESES PROJEKT ERFORDERLICHE KOMPONENTEN:

1. ARDUINO UNO: Geben Sie der Primärseite des Relais Eingabelogiken.

2. SPDT-RELAIS -2: Für die Drehung in beide Richtungen sind zwei Relais erforderlich. Die Kontakte müssen für die Hochstrommotorspezifikationen ausgelegt sein

Blaue Farbe des Relaisbildes Relais mit N / O N / C und Poldetails3. Power Mosfet: Sie können IRF1010 Mosfet verwenden Druckknopf-Mikroschalter

4. BATTERIE (12 V): Zur Stromversorgung des Motors.

5. ZWEI DRUCKTASTEN: um Arduino Eingaben zu geben (d. H. Wenn gedrückt und wenn nicht gedrückt)

10k 1/4 Watt Widerstand

6. ZWEI 10K-WIDERSTÄNDE: zum Entprellen (siehe unten)

Hochstrom-Motorsteuerkreis mit Arduino

7. ANSCHLUSSKABEL: Zum Herstellen von Verbindungen.

SCHEMA:

PWM Arduino Motorsteuerkreis

Stellen Sie die Verbindungen wie in der Abbildung gezeigt her.

1. Verbinden Sie den normalerweise offenen Anschluss beider Relais mit dem Pluspol der Batterie und den normalerweise geschlossenen Anschluss mit dem Minuspol der Batterie.

2. Schließen Sie den Motor zwischen die verbleibende Klemme (von drei) jedes Relais an.

3. Verbinden Sie einen Anschluss der Primärseite der Relais mit den Ausgangspins von Arduino, wie im Code angegeben, und den anderen Anschluss mit Masse.

4. Verbinden Sie einen Anschluss beider Drucktasten mit dem 5-V-Pin des Arduino und den anderen Anschluss mit den im Code angegebenen Eingangsstiften.

4. ** Vergessen Sie nicht, Widerstände anzuschließen, da diese für die ordnungsgemäße Funktion dieser Schaltung sehr wichtig sind, wie unten erläutert:

WARUM SIND WIDERSTÄNDE ANGESCHLOSSEN?

Möglicherweise ist an den Eingangsstiften von Arduino überhaupt nichts angeschlossen. Dies bedeutet jedoch nicht, dass diese Pinbelegung eine logische Null sein kann, wenn der angegebene Schalter geöffnet ist

Vielmehr bedeutet dies, dass Arduino bei geöffnetem Schalter einen beliebigen Zufallswert zwischen logisch 0 und logisch 1 annehmen kann, was überhaupt nicht gut ist (dies wird als Bouncing bezeichnet).

Was wir hier also wollen, ist, dass wenn nichts mit dem Eingangspin verbunden ist, d. H. Der Druckknopf offen ist, Arduino 0 Eingang vom Pin nimmt.

Und um dies zu erreichen, wird der Pin vor dem Druckknopf über einen Widerstand direkt mit Masse verbunden. Wenn es ohne Widerstand direkt mit Masse verbunden ist, besteht eine gute Wahrscheinlichkeit, dass es durchbrennt, da der Stift mit Masse kurzgeschlossen wird und eine große Menge Strom fließt. Um dies zu verhindern, ist dazwischen ein Widerstand angeschlossen.

Dieser Widerstand wird als Pulldown-Widerstand bezeichnet, da er die Logik an Pin auf 0 zieht. Dieser Vorgang wird als Entprellen bezeichnet.

CODE:

Brennen Sie diesen Code in Ihr Arduino.

int x// initialise variables
int y
int z
int w
void setup() {
pinMode(6,OUTPUT)//initialise pin 6 as output to RL1
pinMode(9,OUTPUT)//initialise pin 9 as output to RL2
pinMode(3,INPUT)//initialise pin 3 as input
pinMode(4,INPUT)//initialise pin 4 as input
pinMode(10,OUTPUT)//initialise PWM pin 8 as output to gate of mosfet
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
Serial.begin(9600)
}
void loop() {
z=analogRead(A0)// read values from potentiometer in terms of voltage
w= map(z,0,1023,0,255)// map those values from 0 to 255
analogWrite(10,w)// write the mapped value to 10thpin as output
delay(1)//on time period of mosfet
analogWrite(10,w)
delay(1)//off time period of ,mosfet
Serial.println(z)//print value from pot to serial monitor
Serial.println(w)//print mapped value to serial monitor
x= digitalRead(3)
y= digitalRead(4)
if(x==0 && y==0){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)}
if(x==1 && y==0){digitalWrite(6,HIGH)// clockwise rotation of motor
digitalWrite(9,LOW)}
if(x==0 && y==1){digitalWrite(6,LOW)// anticlockwise rotation of motor
digitalWrite(9,HIGH)}
if(x==1 && y==1){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)
}
}

Arbeiten (Code verstehen):

• RICHTUNGSKONTROLLE:

A. Wenn beide Drucktasten nicht gedrückt werden:

In diesem Zustand nimmt Arduino 0 Eingaben von beiden Pins entgegen. Wie im Code unter dieser Bedingung angegeben, ergeben beide Ausgangspins eine 0-Logik (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Da die Eingangsspannung an der Primärwicklung beider Relais Null ist, bleibt die Sekundärklemme beider Relais in der normalerweise geschlossenen Position. Somit gibt es an beiden Klemmen des Motors null Volt, was keine Drehung verursacht.

B. Wenn der Druckknopf X gedrückt wird, Y jedoch nicht gedrückt wird:

In diesem Zustand nimmt Arduino 0 Eingänge von Pin 4, aber Eingang 1 von Pin 3. Wie im Code unter dieser Bedingung angegeben, sollte Pin 6 auf logisch 1 (HIGH) liegen, während Pin 9 auf logisch 0 (LOW) liegt:

if (x == 1 && y == 0) {digitalWrite (6, HIGH)

digitalWrite (9, LOW)}

Da die Eingangsspannung des Relais Nr. 1 hoch ist, wird der Schalter dieses Relais in den normalerweise offenen Zustand versetzt, während die Eingangsspannung des Relais 2 niedrig ist. Der Schalter dieses Relais bleibt im normalerweise geschlossenen Zustand und verursacht 12 V bzw. 0 V an den Motorklemmen Drehung des Motors in eine Richtung.

C. Wenn der Druckknopf Y gedrückt wird, X jedoch nicht gedrückt wird:

In diesem Zustand nimmt Arduino 1 Eingang von Pin 4, aber Eingang 0 von Pin3. Wie im Code unter dieser Bedingung angegeben, sollte Pin 6 auf logisch 0 (LOW) liegen, während Pin 9 auf logisch 1 (HIGH) liegt:

if (x == 1 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, HIGH)}

Da die Eingangsspannung des Relais Nr. 2 diesmal hoch ist, wird der Schalter dieses Relais in den normalerweise offenen Zustand versetzt, während die Eingangsspannung des Relais Nr. 1 niedrig ist. Der Schalter dieses Relais bleibt im normalerweise geschlossenen Zustand und verursacht 12 V bzw. 0 V am Motor Klemmen, die eine Drehung des Motors in eine andere Richtung verursachen.

D. Wenn beide Drucktasten gedrückt werden:

In diesem Zustand nimmt Arduino 1 Eingang von beiden Pins. Wie im Code unter dieser Bedingung angegeben, ergeben beide Ausgangspins eine 0-Logik (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Da die Eingangsspannung an der Primärwicklung beider Relais Null ist, bleibt die Sekundärklemme beider Relais in der normalerweise geschlossenen Position. Somit liegt an beiden Motorklemmen Null Volt an, was keine Drehung verursacht.

• GESCHWINDIGKEITSKONTROLLE:

Nehmen wir an, das Potentiometer befindet sich an einer solchen Position, wenn es 0 Volt als Eingang für den A0-Pin des Arduino liefert. Aus diesem Grund bildet Arduino diesen Wert als 0 ab und gibt somit 0 als Ausgangs-PWM an Pin # 10, d. H.

analogWrite (10,0) // schreibe den zugeordneten Wert als Ausgang auf den 10. Pin

Daher erhält das Mosfet-Gate 0 Strom, wodurch es ausgeschaltet bleibt und sich der Motor in der ausgeschalteten Position befindet.

Wenn jedoch der Topf gedreht und der Wert des Topfes variiert wird, ändert sich auch die Spannung an Pin A0, und dieser Wert wird an Pin 10 mit einer proportional zunehmenden PWM-Breite abgebildet, wodurch mehr Strom durch den Motor und den Mosfet fließt Drain, wodurch der Motor proportional mehr Drehzahl gewinnen kann, und das Gleiche geschieht umgekehrt.

Aus der obigen Diskussion können wir also ersehen, wie ein Arduino zum Steuern der Geschwindigkeit sowie der Richtung (Rückwärts vorwärts) eines Hochstrom-Gleichstrommotors verwendet werden kann, indem einfach der angegebene Topf und einige Drucktasten eingestellt werden.

Aktualisieren : Verwenden Sie für Hochstrommotoren 12V / 30-Ampere-Relais und BJT-Treiberstufen, um diese Hochleistungsrelais zu betreiben, wie in der folgenden modifizierten Abbildung angegeben:




Zurück: Stromkreis des Rückfahrsensors mit Alarm Weiter: Arduino PWM Signal Generator Circuit