Mataas na Kasalukuyang Motor Control Circuit gamit ang Arduino

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa proyektong ito, tinatalakay namin kung paano kontrolin ang bilis ng motor gamit ang Arduino PWM circuit, at kung paano ipatupad ang reverse forward o direksyon ng kontrol sa isang motor na DC gamit ang Arduino sa pamamagitan ng isang pares ng mga switch ng push button. Ang anumang mataas na kasalukuyang motor hanggang sa 30 amp ay maaaring makontrol gamit ang set up na ito

NiAnkit Negi



Napakahalagang bahagi ng motor sa elektrikal at electronics dahil ginagamit ang mga ito bilang mga actuator sa maraming mga lugar.

Kailangan namin ng mga motor para sa maliliit na application tulad ng robotics pati na rin sa mga lugar kung saan ginagamit ang mabibigat na motor (industriya atbp.).



Ngayon ang mga motor na ginagamit para sa maliliit na aplikasyon ay madaling makontrol dahil hindi sila kumukuha ng kasalukuyang (mas mababa sa 2amp).

At ang mga motor na ito ay maaaring madaling kontrolin sa pamamagitan ng paggamit ng microcontroller tulad ng arduino na may motor driver ic's tulad ng L298 o L293D .

Ngunit ang mga motor na ginagamit para sa mabibigat na layunin (higit sa 10amp), ay hindi makontrol gamit ang mga ic's dahil maaari nilang ibigay ang limitadong kasalukuyang (max 2amp). Kaya kung paano kontrolado ang mga motor na ito kaysa?

Ang sagot ay simple: gamit ang Relays , na kumikilos bilang mga switch ie ibig sabihin lumipat ng malaking kasalukuyang gamit ang maliit na kasalukuyang. Sa ganitong paraan maaaring makamit ang dalawang bagay:

1. Pagpapatakbo ng aming mismong mataas na kasalukuyang motor.

2. Paghiwalayin ang circuit, kaya pinipigilan ang anumang mga pagkabigla.

Ngayon ang anumang microcontroller ay maaaring magamit upang ilipat ang relay na ito. Gagamitin namin ang arduino UNO dito.

KINAKAILANGAN NG MGA KOMPONENTO PARA SA PROYEKTO NA ITO:

1. ARDUINO UNO: upang magbigay ng mga input logika sa pangunahing bahagi ng relay.

2. SPDT RELAY -2: kinakailangan ng dalawang relay para sa pag-ikot sa parehong direksyon. Ang mga contact ay dapat na na-rate upang mahawakan ang mataas na kasalukuyang mga pagtutukoy ng motor

Relay ng kulay asul na kulay nagpapakita ng relasyong N / O N / C at mga detalye ng poste3. Power Mosfet: Maaari kang gumamit ng IRF1010 mosfet pindutan microscwitch

4. BATTERY (12v): upang magbigay ng lakas sa motor.

5. DALAWANG PUSHBUTTON: upang magbigay ng mga input sa arduino (ibig sabihin kapag pinindot at kapag hindi pinindot)

10k 1/4 watt risistor

6. DALAWANG 10K RESISTORS: para sa pag-debog (ipinaliwanag sa ibaba)

Mataas na Kasalukuyang Motor Control Circuit gamit ang Arduino

7. Nakakonekta na mga WIRES: para sa paggawa ng mga koneksyon.

SKEMATIK:

PWM Arduino Motor Control Circuit

Gumawa ng mga koneksyon tulad ng ipinakita sa figure.

1. Ikonekta ang normal na bukas na terminal ng parehong relay sa positibong terminal ng baterya at karaniwang nakasara na terminal sa negatibong terminal ng baterya.

2. Ikonekta ang motor sa pagitan ng natitirang terminal (labas ng tatlo) ng bawat relay.

3. Ikonekta ang isang terminal ng pangunahing bahagi ng mga relay sa mga output pin ng arduino na tinukoy sa code at iba pang terminal sa lupa.

4. Ikonekta ang isang terminal ng parehong mga pushbutton sa 5v pin ng arduino at iba pang mga terminal sa mga input pin na tinukoy sa code.

4. ** Huwag kalimutan na ikonekta ang mga resistor dahil napakahalaga nila para sa wastong paggana ng circuit na ito, tulad ng ipinaliwanag sa ibaba:

BAKIT MAY KONEKTO ANG MGA RESISTOR?

Maaari mong malaman na walang anuman na nakakonekta sa mga input pin ng Arduino, ngunit hindi ito nangangahulugang ang mga pinout na ito ay maaaring isang lohikal na zero kapag bukas ang ipinahiwatig na switch

Sa halip ipinapahiwatig nito na kapag bukas ang switch ay maaaring tumagal ang arduino ng anumang random na halaga sa pagitan ng lohika 0 at lohika 1, na kung saan ay hindi mabuti (tinatawag itong talbog).

Kaya kung ano ang gusto namin dito ay kapag walang konektado sa input pin ibig sabihin ay bukas ang pushbutton, kukuha ng arduino ang 0 input mula sa pin.

At upang makamit ito, ang pin ay direktang konektado sa lupa bago ang pushbutton sa pamamagitan ng risistor. Kung ito ay direktang konektado sa lupa nang walang risistor may mga magandang pagkakataon na masunog ito dahil ang pin ay maikliit sa lupa at malalaking halaga ng kasalukuyang dumadaloy. Upang maiwasan ito, ang isang risistor ay konektado sa pagitan.

Ang risistor na ito ay tinatawag na pulldown resistor dahil sa paghuhugot ng lohika sa pin sa 0. At ang prosesong ito ay tinatawag na debouncing.

CODE:

Sunugin ang code na ito sa iyong 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)
}
}

Nagtatrabaho (pag-unawa sa code):

• KONTROL SA DIRECTION:

A. Kapag ang parehong mga pindutan ay hindi pinindot:

Sa kondisyong ito, ang arduino ay tumatagal ng 0 input mula sa parehong mga pin. Tulad ng tinukoy sa code sa kondisyong ito kapwa ang mga output pin ay nagbibigay sa 0 lohika (LOW):

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

digitalWrite (9, LOW)}

Dahil ang boltahe ng pag-input sa pangunahing ng parehong mga relay ay zero pangalawang terminal ng parehong nananatili sa normal na saradong posisyon. Sa gayon mayroong zero volts sa parehong mga terminal ng motor, na hindi nagdudulot ng pag-ikot.

B. Kapag ang pindutan ng push X ay pinindot ngunit ang Y ay hindi pinindot:

Sa kondisyong ito, ang arduino ay tumatagal ng 0 na input mula sa pin 4 ngunit ang input1 mula sa pin3. Tulad ng tinukoy sa code sa kondisyong ito ang pin 6 ay dapat na nasa lohika 1 (TAAS) samantalang ang pin 9 sa lohika 0 (LOW):

kung (x == 1 && y == 0) {digitalWrite (6, TAAS)

digitalWrite (9, LOW)}

Dahil ang input boltahe sa relay # 1 ay mataas, ang switch ng relay na ito ay itinapon sa normal na bukas na kondisyon samantalang ang input voltage sa relay 2 ay mababa, ang switch ng relay na ito ay mananatili sa normal na saradong kondisyon na nagdudulot ng 12v at 0v ayon sa mga motor terminal, sanhi pag-ikot ng motor sa isang direksyon.

C. Kapag ang pindutan ng push Y ay pinindot ngunit ang X ay hindi pinindot:

Sa kondisyong ito, ang arduino ay tumatagal ng 1 input mula sa pin 4 ngunit input0 mula sa pin3. Tulad ng tinukoy sa code sa kondisyong ito ang pin 6 ay dapat na nasa lohika 0 (LOW) samantalang ang pin 9 sa lohika 1 (TAAS):

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

digitalWrite (9, TAAS)}

Dahil ang input boltahe sa relay # 2 ay mataas sa oras na ito, ang switch ng relay na ito ay itinapon sa normal na bukas na kondisyon samantalang ang input voltage sa relay # 1 ay mababa, ang switch ng relay na ito ay mananatili sa normal na saradong kondisyon na nagdudulot ng 12v at 0v ayon sa pagkakabanggit sa motor mga terminal, na nagiging sanhi ng pag-ikot ng motor sa ibang direksyon.

D. Kapag ang parehong mga pindutan ay pinindot:

Sa kondisyong ito, ang arduino ay tumatagal ng 1 input mula sa parehong mga pin. Tulad ng tinukoy sa code sa kondisyong ito kapwa ang mga output pin ay nagbibigay sa 0 lohika (LOW):

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

digitalWrite (9, LOW)}

Dahil ang boltahe ng pag-input sa pangunahing ng parehong mga relay ay zero pangalawang terminal ng parehong nananatili sa normal na saradong posisyon. Sa gayon mayroong zero volt sa parehong mga terminal ng motor, na hindi nagdudulot ng pag-ikot.

• KONTROL NG BILIS:

Sabihin nating ang potentiometro ay nasa ganoong posisyon kapag nagbibigay ito ng 0 volts bilang input sa A0 pin ng arduino. Dahil dito, nai-mapa ng arduino ang halagang ito bilang 0 at sa gayon ay nagbibigay ng 0 bilang output PWM sa pin # 10 ibig sabihin,

analogWrite (10,0) // isulat ang na-map na halaga sa ika-10 na pin bilang output

Samakatuwid ang gate ng mosfet ay nakakakuha ng 0 kasalukuyang dahil sa kung saan ito ay nananatiling off at motor ay nasa nakabukas na posisyon na OFF.

Gayunpaman, habang ang palayok ay pinaikot at ang halaga ng palayok ay iba-iba, ang boltahe sa pin A0 ay magkakaiba rin, at ang halagang ito ay nai-map sa pin # 10 na may proporsyonal na pagtaas ng lapad ng PWM, na nagdudulot ng mas maraming kasalukuyang dumaloy sa motor at mosfet alisan ng tubig, na kung saan ay pinapayagan ang motor na makakuha ng mas maraming bilis nang proporsyonal, at ang parehong nangyayari kabaligtaran.

Kaya mula sa nabanggit na talakayan maaari nating makita kung paano maaaring magamit ang isang Arduino para sa pagkontrol ng bilis pati na rin ang direksyon (reverse forward) ng isang mataas na kasalukuyang DC motor sa pamamagitan lamang ng pag-aayos ng tinukoy na palayok at sa pamamagitan ng ilang mga pindutan ng itulak.

Update : Para sa mataas na kasalukuyang motor, mangyaring gumamit ng 12V / 30 amp relay at mga yugto ng driver ng BJT para sa pagpapatakbo ng mga high power relay na tulad ng ipinahiwatig sa sumusunod na binagong diagram:




Nakaraan: Car Reverse Parking Sensor Circuit na may Alarm Susunod: Arduino PWM Signal Generator Circuit