Litar Kawalan Motor Arus Tinggi menggunakan Arduino

Litar Kawalan Motor Arus Tinggi menggunakan Arduino

Dalam projek ini, kita membincangkan bagaimana mengawal kelajuan motor menggunakan litar Arduino PWM, dan bagaimana melaksanakan kawalan maju atau arah terbalik dalam motor DC menggunakan Arduino melalui beberapa suis butang tekan. Mana-mana motor arus tinggi hingga 30 amp boleh dikawal menggunakan penyediaan ini



OlehAnkit Negi

Motor adalah komponen yang sangat penting dalam elektrik dan elektronik kerana ia digunakan sebagai penggerak di banyak kawasan.





Kami memerlukan motor untuk aplikasi kecil seperti robotik dan juga di kawasan di mana motor berat digunakan (industri dll).

Kini motor yang digunakan untuk aplikasi kecil dapat dikendalikan dengan mudah kerana tidak mengambil arus yang banyak (kurang dari 2amp).



Dan motor ini dapat dikawal dengan mudah dengan menggunakan mikrokontroler seperti arduino dengan ic pemandu motor seperti L298 atau L293D .

Tetapi motor yang digunakan untuk tujuan berat (lebih besar daripada 10amp), tidak dapat dikawal menggunakan ic ini kerana mereka dapat membekalkan arus terhad (maksimum 2amp). Jadi bagaimana motor ini dikawal daripada?

Jawapannya mudah: menggunakan Relay , yang bertindak sebagai suis iaitu menukar arus besar menggunakan arus kecil. Dengan cara ini dua perkara dapat dicapai:

1. Menjalankan motor arus tinggi kita sendiri.

2. Mengasingkan litar, dengan itu mengelakkan kejutan.

Sekarang mana-mana mikrokontroler dapat digunakan untuk menukar relay ini. Kami akan menggunakan arduino UNO di sini.

KOMPONEN DIPERLUKAN UNTUK PROJEK INI:

1. ARDUINO UNO: untuk memberi logik input ke sisi utama relay.

2. SPDT RELAY -2: dua relay diperlukan untuk putaran pada kedua arah. Kenalan mesti dinilai untuk menangani spesifikasi motor semasa yang tinggi

Warna biru gambar relay geganti menunjukkan butiran N / O N / C dan tiang3.Power Mosfet: Anda boleh menggunakan mosfet IRF1010 tekan tombol mikroskop

4. BATERAI (12v): untuk membekalkan kuasa ke motor.

5. DUA TOMBOL: memberi input kepada arduino (iaitu ketika ditekan dan ketika tidak ditekan)

Perintang 10k 1/4 watt

6. DUA RESISTOR 10K: untuk penyingkiran (dijelaskan di bawah)

Litar Kawalan Motor Arus Tinggi menggunakan Arduino

7. MENGHUBUNGKAN KAWASAN: untuk membuat sambungan.

SKIMATIK:

Litar Kawalan Motor PWM Arduino

Buat sambungan seperti yang ditunjukkan dalam gambar.

1. Sambungkan terminal terbuka kedua-dua relay ke terminal positif bateri dan terminal yang biasanya ditutup ke terminal negatif bateri.

2. Sambungkan motor di antara terminal yang tersisa (daripada tiga) setiap geganti.

3. Sambungkan satu terminal sisi utama geganti ke pin output arduino seperti yang ditentukan dalam kod dan terminal lain ke tanah.

4. Sambungkan satu terminal kedua-dua tombol tekan ke pin arvino 5v dan terminal lain ke pin input seperti yang ditentukan dalam kod.

4. ** Jangan lupa sambungkan perintang kerana ia sangat penting untuk berfungsi dengan betul rangkaian ini, seperti yang dijelaskan di bawah:

KENAPA RESISTOR BERHUBUNG?

Anda mungkin mendapati bahawa sama sekali tidak ada yang terhubung ke pin input Arduino, tetapi itu tidak bermaksud pinout ini mungkin sifar logik apabila suis yang ditunjukkan terbuka

Sebaliknya ini menyiratkan bahawa apabila suis terbuka arduino dapat mengambil nilai rawak antara logik 0 dan logik 1, yang sama sekali tidak baik (ini disebut memantul).

Oleh itu, apa yang kita mahukan di sini adalah bahawa apabila tidak ada yang tersambung ke pin input iaitu butang tekan terbuka, arduino mengambil 0 input dari pin.

Untuk mencapai ini, pin disambungkan secara langsung ke tanah sebelum butang tekan melalui perintang. Sekiranya ia disambungkan terus ke tanah tanpa perintang ada kemungkinan besar ia akan terbakar kerana pin akan dipendekkan ke tanah dan sejumlah besar arus akan mengalir. Untuk mengelakkan ini, perintang disambungkan di antara.

Perintang ini disebut resistor pulldown kerana ia menarik logik pada pin ke 0. Dan proses ini disebut debouncing.

KOD:

Masukkan kod ini ke dalam arduino anda.

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)
}
}

Berfungsi (memahami kod):

• KAWALAN ARAH:

A. Apabila kedua-dua butang tekan tidak ditekan:

Dalam keadaan ini, arduino mengambil 0 input dari kedua pin. Seperti yang dinyatakan dalam kod dalam keadaan ini, kedua pin output memberikan 0 logik (RENDAH):

jika (x == 0 && y == 0) {digitalWrite (6, RENDAH)

digitalWrite (9, RENDAH)}

Oleh kerana voltan input ke primer kedua-dua relay adalah terminal sekunder sifar kedua-duanya tetap pada kedudukan tertutup biasanya. Oleh itu, terdapat voltan sifar di kedua-dua terminal motor, tidak menyebabkan putaran.

B. Semasa butang tekan X ditekan tetapi Y tidak ditekan:

Dalam keadaan ini, arduino mengambil 0 input dari pin 4 tetapi input1 dari pin3. Seperti yang dinyatakan dalam kod dalam keadaan ini pin 6 harus berada pada logik 1 (TINGGI) sedangkan pin 9 pada logik 0 (RENDAH):

jika (x == 1 && y == 0) {digitalWrite (6, TINGGI)

digitalWrite (9, RENDAH)}

Oleh kerana voltan masukan ke geganti # 1 tinggi, suis geganti ini dilemparkan ke keadaan terbuka biasanya sedangkan voltan masukan ke geganti 2 rendah, suis geganti ini kekal dalam keadaan tertutup biasanya menyebabkan masing-masing 12v dan 0v merentasi terminal motor, menyebabkan putaran motor dalam satu arah.

C. Semasa butang tekan Y ditekan tetapi X tidak ditekan:

Dalam keadaan ini, arduino mengambil 1 input dari pin 4 tetapi input0 dari pin3. Seperti yang dinyatakan dalam kod dalam keadaan ini pin 6 harus berada pada logik 0 (RENDAH) sedangkan pin 9 pada logik 1 (TINGGI):

jika (x == 1 && y == 0) {digitalWrite (6, RENDAH)

digitalWrite (9, TINGGI)}

Oleh kerana voltan input ke geganti # 2 tinggi kali ini, suis geganti ini dilemparkan ke keadaan terbuka biasanya sedangkan voltan masukan ke geganti # 1 rendah, suis geganti ini kekal dalam keadaan tertutup biasanya menyebabkan masing-masing 12v dan 0v merentasi motor terminal, menyebabkan putaran motor ke arah lain.

D. Apabila kedua-dua butang tekan ditekan:

Dalam keadaan ini, arduino mengambil 1 input dari kedua pin. Seperti yang dinyatakan dalam kod dalam keadaan ini, kedua pin output memberikan 0 logik (RENDAH):

jika (x == 0 && y == 0) {digitalWrite (6, RENDAH)

digitalWrite (9, RENDAH)}

Oleh kerana voltan input ke primer kedua-dua relay adalah terminal sekunder sifar kedua-duanya tetap pada kedudukan tertutup biasanya. Oleh itu, terdapat voltan sifar di kedua-dua terminal motor, tidak menyebabkan putaran.

• PENGENDALIAN SPEED:

Katakanlah potensiometer berada pada posisi sedemikian ketika memberikan 0 volt sebagai input ke pin A0 arduino. Oleh kerana itu, arduino memetakan nilai ini sebagai 0 dan dengan demikian memberikan 0 sebagai output PWM pada pin # 10 iaitu,

analogWrite (10,0) // tuliskan nilai yang dipetakan ke pin ke-10 sebagai output

Oleh itu gerbang mosfet mendapat 0 arus kerana ia tetap mati dan motor berada dalam kedudukan MATI.

Namun, ketika periuk diputar dan nilai pot bervariasi, voltan pada pin A0 juga bervariasi, dan nilai ini dipetakan pada pin # 10 dengan lebar PWM yang meningkat secara proporsional, menyebabkan arus lebih banyak mengalir melalui motor dan mosfet longkang, yang seterusnya membolehkan motor memperoleh lebih banyak kelajuan secara berkadar, dan hal yang sama berlaku sebaliknya.

Oleh itu dari perbincangan di atas kita dapat melihat bagaimana Arduino dapat digunakan untuk mengawal kelajuan serta arah (mundur ke depan) motor DC arus tinggi hanya dengan menyesuaikan periuk yang ditentukan dan melalui beberapa butang tekan.

Kemas kini : Untuk motor arus tinggi, gunakan relai 12V / 30 amp dan tahap pemacu BJT untuk mengendalikan relai kuasa tinggi ini seperti yang ditunjukkan dalam rajah yang diubah suai berikut:




Sebelumnya: Litar Sensor Tempat Letak Kereta Terbalik dengan Penggera Seterusnya: Litar Generator Arduino PWM