High Current Motor Control Circuit met Arduino

Probeer Ons Instrument Voor Het Oplossen Van Problemen





In dit project bespreken we hoe controle motortoerental met behulp van een Arduino PWM-circuit en hoe u met behulp van Arduino via een paar drukknopschakelaars achteruit vooruit- of draairichting kunt implementeren in een DC-motor. Met deze opstelling kan elke motor met hoge stroomsterkte tot 30 ampère worden aangestuurd

DoorAnkit Negi



Motor is een zeer essentieel onderdeel van elektrische en elektronische apparaten, aangezien ze op veel gebieden als actuatoren worden gebruikt.

We hebben motoren nodig voor kleine toepassingen zoals robotica, maar ook in gebieden waar zware motoren worden gebruikt (industrieën etc.).



Nu kunnen motoren die worden gebruikt voor kleine toepassingen eenvoudig worden bestuurd omdat ze niet veel stroom verbruiken (minder dan 2amp).

En deze motoren kunnen eenvoudig worden bestuurd door een microcontroller zoals Arduino te gebruiken motor driver ic's zoals L298 of L293D ​

Maar motoren die voor zware doeleinden worden gebruikt (groter dan 10amp), kunnen niet worden bestuurd met behulp van deze ic's omdat ze een beperkte stroom kunnen leveren (max. 2amp). Dus hoe worden deze motoren dan aangestuurd?

Het antwoord is simpel: met behulp van relais , die fungeert als schakelaars, d.w.z. grote stroom schakelen met kleine stroom. Op deze manier kunnen twee dingen worden bereikt:

1. Onze motor met hoge stroomsterkte zelf laten draaien.

2. Isoleer het circuit om eventuele schokken te voorkomen.

Nu kan elke microcontroller worden gebruikt om deze relais te schakelen. We zullen hier Arduino UNO gebruiken.

COMPONENTEN VEREIST VOOR DIT PROJECT:

1. ARDUINO UNO: om inputlogica te geven aan de primaire zijde van relais.

2. SPDT RELAIS -2: er zijn twee relais nodig voor rotatie in beide richtingen. Contacten moeten geschikt zijn voor de specificaties van de motor met hoge stroomsterkte

Relay afbeelding blauwe kleur relais met N / O N / C en paaldetails3.Power Mosfet: u kunt IRF1010 mosfet gebruiken drukknop microschakelaar

4. BATTERIJ (12v): om de motor van stroom te voorzien.

5. TWEE DRUKKNOPPEN: om invoer te geven aan arduino (d.w.z. wanneer ingedrukt en wanneer niet ingedrukt)

10k 1/4 watt weerstand

6. TWEE 10K WEERSTANDEN: voor debouncing (hieronder uitgelegd)

High Current Motor Control Circuit met Arduino

7. VERBINDINGSDRAAD: voor het maken van verbindingen.

SCHEMATISCH:

PWM Arduino Motorbesturingscircuit

Maak de aansluitingen zoals weergegeven in de afbeelding.

1. Verbind de normaal geopende pool van beide relais met de positieve pool van de accu en de normaal gesloten pool met de negatieve pool van de accu.

2. Sluit de motor aan tussen de resterende klem (van de drie) van elk relais.

3. Verbind een terminal van de primaire zijde van relais met de output pinnen van arduino zoals gespecificeerd in de code en de andere terminal met aarde.

4. Verbind een terminal van beide drukknoppen met de 5v pin van Arduino en een andere terminal met inputpinnen zoals gespecificeerd in de code.

4. ** Vergeet niet om weerstanden aan te sluiten, deze zijn erg belangrijk voor de goede werking van dit circuit, zoals hieronder wordt uitgelegd:

WAAROM WEERSTANDEN ZIJN VERBONDEN?

Mogelijk merkt u dat er helemaal niets is aangesloten op de invoerpinnen van Arduino, maar dat betekent niet dat deze pinouts een logische nul kunnen zijn als de aangegeven schakelaar open is

Het impliceert eerder dat wanneer de schakelaar open is, arduino elke willekeurige waarde tussen logica 0 en logica 1 kan aannemen, wat helemaal niet goed is (dit wordt bouncen genoemd).

Dus wat we hier willen is dat wanneer er niets is aangesloten op de invoerpin, d.w.z. de drukknop is open, de arduino 0 invoer van de pin neemt.

En om dit te bereiken, wordt de pin via een weerstand direct met aarde verbonden voordat de drukknop. Als het rechtstreeks is aangesloten op aarde zonder weerstand, is de kans groot dat het doorbrandt, omdat de pin wordt kortgesloten naar aarde en er een enorme hoeveelheid stroom zal vloeien. Om dit te voorkomen wordt er een weerstand tussen geschakeld.

Deze weerstand wordt pulldown-weerstand genoemd omdat het de logica op pin naar 0 trekt. En dit proces wordt debouncing genoemd.

CODE:

Brand deze code in je arduino.


Werken (code begrijpen):

RICHTINGSCONTROLE:

A. Als beide drukknoppen niet zijn ingedrukt:

In deze toestand neemt arduino 0 input van beide pinnen. Zoals gespecificeerd in de code in deze toestand geven beide uitgangspennen 0 logica (LAAG):

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

digitalWrite (9, LOW)}

Omdat de ingangsspanning naar de primaire van beide relais nul is, blijft de secundaire klem van beide in de normaal gesloten positie. Er is dus nul volt aan beide klemmen van de motor, waardoor er geen rotatie optreedt.

B.Wanneer drukknop X wordt ingedrukt maar Y niet wordt ingedrukt:

In deze toestand neemt arduino 0 inputs van pin 4 maar input1 van pin3. Zoals gespecificeerd in de code in deze toestand moet pin 6 op logica 1 (HOOG) staan, terwijl pin 9 op logica 0 (LAAG):

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

digitalWrite (9, LOW)}

Omdat de ingangsspanning naar relais # 1 hoog is, wordt de schakelaar van dit relais naar normaal open toestand geworpen, terwijl de ingangsspanning naar relais 2 laag is, blijft de schakelaar van dit relais in normaal gesloten toestand waardoor respectievelijk 12v en 0v over de motorklemmen ontstaat. rotatie van de motor in één richting.

C.Wanneer drukknop Y wordt ingedrukt maar X niet wordt ingedrukt:

In deze toestand neemt arduino 1 input van pin 4 maar input0 van pin3. Zoals gespecificeerd in de code in deze toestand moet pin 6 op logisch 0 (LAAG) staan, terwijl pin 9 op logisch 1 (HOOG):

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

digitalWrite (9, HIGH)}

Omdat de ingangsspanning naar relais # 2 deze keer hoog is, wordt de schakelaar van dit relais naar normaal open toestand geworpen, terwijl de ingangsspanning naar relais # 1 laag is, blijft de schakelaar van dit relais in normaal gesloten toestand waardoor respectievelijk 12v en 0v over de motor wordt geleid terminals, waardoor de motor in een andere richting draait.

D. Als beide drukknoppen zijn ingedrukt:

In deze toestand neemt arduino 1 input van beide pinnen. Zoals gespecificeerd in de code in deze toestand geven beide uitgangspennen 0 logica (LAAG):

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

digitalWrite (9, LOW)}

Omdat de ingangsspanning naar de primaire van beide relais nul is, blijft de secundaire klem van beide in de normaal gesloten positie. Er is dus nul volt op beide klemmen van de motor, waardoor er geen rotatie optreedt.

• SNELHEIDSCONTROLE:

Laten we zeggen dat de potentiometer zich op zo'n positie bevindt wanneer hij 0 volt geeft als invoer voor de A0-pin van Arduino. Hierdoor brengt arduino deze waarde in kaart als 0 en geeft dus 0 als uitvoer PWM op pin # 10, d.w.z.

analogWrite (10,0) // schrijf de toegewezen waarde naar de 10e pin als uitvoer

Vandaar dat de poort van mosfet 0 stroom krijgt waardoor deze uit blijft en de motor in de UIT-stand staat.

Als de pot echter wordt gedraaid en de waarde van de pot wordt gevarieerd, varieert de spanning op pin A0 ook, en deze waarde wordt in kaart gebracht op pin # 10 met een proportioneel toenemende PWM-breedte, waardoor er meer stroom door de motor en de mosfet gaat. drain, waardoor de motor op zijn beurt proportioneel meer snelheid kan krijgen, en hetzelfde gebeurt vice versa.

Dus uit de bovenstaande bespreking kunnen we zien hoe een Arduino kan worden gebruikt voor het regelen van zowel de snelheid als de richting (achteruit vooruit) van een gelijkstroommotor met hoge stroomsterkte door simpelweg de gespecificeerde pot aan te passen en met een paar drukknoppen.

Bijwerken : Gebruik voor motoren met hoge stroomsterkte 12 V / 30 A-relais en BJT-drivertrappen voor het bedienen van deze hoogvermogenrelais, zoals aangegeven in het volgende aangepaste diagram:




Een paar: Circuit voor achteruitparkeersensor met alarm Volgende: Arduino PWM-signaalgeneratorcircuit