Circuit de control al motorului cu curent mare utilizând Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest proiect, discutăm cum controlează turația motorului folosind circuitul Arduino PWM și cum să implementați controlul inversă sau de direcție într-un motor de curent continuu folosind Arduino prin câteva comutatoare cu buton. Orice motor cu curent ridicat de până la 30 amp poate fi controlat folosind această setare

DeAnkit Negi



Motorul este o componentă foarte esențială în electricitate și electronică, deoarece acestea sunt utilizate ca actuatoare în multe domenii.

Avem nevoie de motoare pentru aplicații mici, cum ar fi robotica, precum și în zonele în care sunt utilizate motoare grele (industrii etc.).



Acum, motoarele care sunt utilizate pentru aplicații mici pot fi controlate cu ușurință, deoarece nu necesită mult curent (mai puțin de 2 amp).

Și aceste motoare pot fi controlate cu ușurință utilizând microcontroler precum arduino cu driverul motorului este ca L298 sau L293D .

Dar motoarele care sunt utilizate în scopuri grele (mai mari de 10 amp) nu pot fi controlate folosind aceste ic-uri deoarece pot furniza curent limitat (max 2amp). Deci, cum sunt controlate aceste motoare decât?

Răspunsul este simplu: folosind relee , care acționează ca întrerupătoare, adică comută curent mare folosind curent mic. În acest fel se pot realiza două lucruri:

1. Rularea motorului nostru cu curent ridicat în sine.

2. Izolarea circuitului, prevenind astfel orice șoc.

Acum orice microcontroler poate fi folosit pentru a comuta aceste relee. Vom folosi arduino UNO aici.

COMPONENTE NECESARE PENTRU ACEST PROIECT:

1. ARDUINO UNO: pentru a da logici de intrare părții primare a releului.

2. SPDT RELAY -2: două relee sunt necesare pentru rotație în ambele sensuri. Contactele trebuie să fie evaluate pentru a face față specificațiilor motorului cu curent mare

Releu culoarea albastră a imaginii releu care arată N / O N / C și detaliile stâlpului3. Power Mosfet: Puteți utiliza IRF1010 mosfet buton microswitch

4. BATERIE (12v): pentru a alimenta motorul.

5. DOUĂ PUTOANE: pentru a da intrări către arduino (adică când este apăsat și când nu este apăsat)

Rezistor de 10k 1/4 watt

6. DOUĂ REZISTENȚE 10K: pentru debouncing (explicat mai jos)

Circuit de control al motorului cu curent mare utilizând Arduino

7. CONEXIUNEA SIRURILOR: pentru realizarea conexiunilor.

SCHEMATIC:

Circuitul de control al motorului PWM Arduino

Faceți conexiuni așa cum se arată în figură.

1. Conectați terminalul normal deschis al ambelor relee la terminalul pozitiv al bateriei și terminalul normal închis la terminalul negativ al bateriei.

2. Conectați motorul între terminalul rămas (din trei) al fiecărui releu.

3. Conectați un terminal al feței primare a releelor ​​la pinii de ieșire ai arduino așa cum se specifică în cod și alt terminal la masă.

4. Conectați un terminal al ambelor butoane la pinul 5v de arduino și alt terminal la pinii de intrare, după cum se specifică în cod.

4. ** Nu uitați să conectați rezistențe, deoarece acestea sunt foarte importante pentru buna funcționare a acestui circuit, așa cum se explică mai jos:

DE CE SUNT CONECTATE REZISTENTELE?

Este posibil să descoperiți că nu există nimic conectat la pinii de intrare ai Arduino, dar asta nu înseamnă că acești pinouts pot fi un zero logic atunci când comutatorul indicat este deschis

Mai degrabă implică faptul că atunci când comutatorul este deschis arduino poate lua orice valoare aleatorie între logica 0 și logica 1, ceea ce nu este deloc bun (acest lucru se numește bouncing).

Deci, ceea ce vrem aici este că atunci când nimic nu este conectat la pinul de intrare, adică butonul este deschis, arduino ia 0 intrare de la pin.

Și pentru a realiza acest lucru, știftul este conectat direct la masă înainte de buton prin intermediul rezistorului. Dacă este conectat direct la masă fără rezistență, există șanse mari să se ardă, deoarece pinul va fi scurtcircuitat la masă și va curge o cantitate imensă de curent. Pentru a preveni acest lucru, un rezistor este conectat între ele.

Acest rezistor se numește rezistență de derulare, deoarece trage logica pe pin la 0. Și acest proces se numește debouncing.

COD:

Înregistrați acest cod în 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)
}
}

De lucru (înțelegerea codului):

• CONTROLUL DIRECȚIEI:

A. Când ambele butoane nu sunt apăsate:

În această condiție, arduino ia 0 intrare de la ambii pini. După cum se specifică în cod în această condiție, ambii pini de ieșire dau 0 logică (LOW):

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

digitalWrite (9, LOW)}

Deoarece tensiunea de intrare la primarul ambelor relee este zero, borna secundară a ambelor rămâne în poziție normal închisă. Astfel, există zero volți la ambele terminale ale motorului, provocând nicio rotație.

B. Când butonul X este apăsat, dar Y nu este apăsat:

În această condiție, arduino ia 0 intrări de la pinul 4, dar input1 de la pin3. După cum se specifică în cod în această condiție pinul 6 ar trebui să fie la logica 1 (HIGH) în timp ce pinul 9 la logic 0 (LOW):

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

digitalWrite (9, LOW)}

Deoarece tensiunea de intrare la releul # 1 este ridicată, comutatorul acestui releu este aruncat într-o stare normal deschisă, în timp ce tensiunea de intrare la releul 2 este scăzută, comutatorul acestui releu rămâne în stare normal închisă, cauzând 12v și respectiv 0v între terminalele motorului, cauzând rotația motorului într-o direcție.

C. Când butonul Y este apăsat, dar X nu este apăsat:

În această condiție, arduino ia 1 intrare de la pinul 4, dar input0 de la pin3. După cum se specifică în cod în această condiție pinul 6 ar trebui să fie la logica 0 (LOW) în timp ce pinul 9 la logic 1 (HIGH):

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

digitalWrite (9, HIGH)}

Deoarece tensiunea de intrare la releul # 2 este ridicată de data aceasta, comutatorul acestui releu este aruncat într-o stare normal deschisă, în timp ce tensiunea de intrare la releul # 1 este scăzută, comutatorul acestui releu rămâne în stare normal închisă, provocând 12v și respectiv 0v pe motor borne, provocând rotația motorului în altă direcție.

D. Când se apasă ambele butoane:

În această condiție, arduino preia 1 intrare de la ambii pini. După cum se specifică în cod în această condiție, ambii pini de ieșire dau 0 logică (LOW):

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

digitalWrite (9, LOW)}

Deoarece tensiunea de intrare la primarul ambelor relee este zero, borna secundară a ambelor rămâne în poziție normal închisă. Astfel, este zero volt la ambele terminale ale motorului, provocând nicio rotație.

• CONTROL DE VITEZA:

Să presupunem că potențiometrul este la o astfel de poziție atunci când dă 0 volți ca intrare la pinul A0 al arduino. Datorită acestui fapt, arduino mapează această valoare ca 0 și astfel dă 0 ca ieșire PWM pe pinul # 10 adică,

analogWrite (10,0) // scrieți valoarea mapată la pinul 10 ca ieșire

Prin urmare, poarta Mosfet primește 0 curent din cauza căreia rămâne oprit și motorul este în poziția OPRIT.

Cu toate acestea, pe măsură ce potul este rotit și valoarea potului este variat, tensiunea pe pinul A0 variază, de asemenea, și această valoare este mapată pe pinul # 10 cu o lățime PWM în creștere proporțională, determinând să curgă mai mult curent prin motor și mosfet. de scurgere, care la rândul său permite motorului să câștige mai multă viteză proporțional și la fel se întâmplă invers.

Astfel, din discuția de mai sus, putem vedea cum un Arduino poate fi utilizat pentru controlul vitezei și direcției (inversă înainte) a unui motor de curent continuu, prin simpla ajustare a potului specificat și prin câteva butoane.

Actualizați : Pentru motorul cu curent mare, utilizați releele de 12V / 30 amperi și treptele driverului BJT pentru acționarea acestor relee de mare putere, așa cum este indicat în următoarea diagramă modificată:




Precedent: Circuit senzor parcare inversă auto cu alarmă Următorul: Circuitul generatorului de semnal Arduino PWM