Kawalan DC dan Stepper Motors Dengan L298N Dual Motor Controller Modules dan Arduino

Anda tidak perlu menghabiskan banyak wang untuk mengawal motor dengan Arduino atau papan serasi. Selepas beberapa memburu kami mendapati modul kawalan motor yang kemas berdasarkan kepada L298N H-bridge IC yang membolehkan anda mengawal kelajuan dan arah dua motor DC, atau mengawal satu motor stepper bipolar dengan mudah.

Modul H-bridge L298N boleh digunakan dengan motor yang mempunyai voltan antara 5 dan 35V DC. Dengan modul yang digunakan dalam tutorial ini, terdapat juga pengawal selia 5V onboard, jadi jika voltan bekalan anda sehingga 12V anda juga boleh sumber 5V dari papan.

Jadi mari kita mulakan!

Langkah 1: Memahami Sambungan Modul L298

Mula-mula kita akan melalui sambungan, kemudian jelaskan bagaimana untuk mengawal motor DC kemudian motor stepper. Pada ketika ini, semak semula sambungan pada modul jambatan L298N H.

Pertimbangkan imej - padan angka-angka terhadap senarai di bawah imej:

  1. DC motor 1 "+" atau motor stepper A +
  2. DC motor 1 "-" atau stepper motor A-
  3. Pelompat 12V - keluarkan ini jika menggunakan voltan bekalan lebih besar daripada 12V DC. Ini membolehkan kuasa untuk pengatur 5V onboard

  4. Sambungkan voltan bekalan motor anda di sini, maksimum 35V DC. Keluarkan 12V jumper jika> 12V DC

  5. GND

  6. Output 5V jika jumper 12V di tempat, sesuai untuk menyalakan Arduino anda (dsb)

  7. DC motor 1 membolehkan jumper. Biarkan ini di tempat apabila menggunakan motor stepper. Sambungkan ke output PWM untuk kawalan kelajuan motor DC.

  8. IN1

  9. IN2

  10. IN3

  11. IN4

  12. DC motor 2 membolehkan jumper. Biarkan ini di tempat apabila menggunakan motor stepper. Sambungkan ke output PWM untuk kawalan kelajuan motor DC

  13. DC motor 2 "+" atau motor stepper B +

  14. DC motor 2 "-" atau stepper motor B-

Langkah 2: Mengendalikan DC Motors

Untuk mengawal satu atau dua motor DC agak mudah dengan modul H-bridge L298N. Pertama sambungkan setiap motor ke sambungan A dan B pada modul L298N.

Sekiranya anda menggunakan dua motosikal untuk robot (dan sebagainya) pastikan bahawa polariti motor adalah sama pada kedua-dua input. Jika tidak, anda mungkin perlu menukarnya apabila anda menetapkan kedua-dua motor ke hadapan dan satu ke belakang!

Seterusnya, sambungkan bekalan kuasa anda - positif untuk pin 4 pada modul dan negatif / GND ke pin 5. Jika anda membekalkan sehingga 12V anda boleh meninggalkan dalam jumper 12V (titik 3 pada imej di atas) dan 5V akan disediakan dari pin 6 pada modul.

Ini boleh disalurkan ke pin 5V Arduino untuk menyalurkannya dari bekalan kuasa motor. Jangan lupa untuk menyambungkan Arduino GND ke pin 5 pada modul ini juga untuk menyelesaikan litar. Kini anda memerlukan enam pin output digital pada Arduino anda, dua daripadanya perlu PWM (modulasi lebar pulse) pin.

PWM pin dilabel oleh tilde ("~") di sebelah nombor pin, contohnya dalam imej pin digital Arduino Uno.

Akhir sekali, sambungkan pin output digital Arduino ke modul pemacu. Dalam contoh kami, kami mempunyai dua motor DC, jadi pin digital D9, D8, D7 dan D6 akan disambungkan kepada pin IN1, IN2, IN3 dan IN4 masing-masing. Kemudian hubungkan D10 ke mod 7 pin (alih jumper pertama) dan D5 ke modul pin 12 (sekali lagi, keluarkan jumper).

Arah motor dikawal dengan menghantar isyarat HIGH atau LOW ke pemacu untuk setiap motor (atau saluran). Contohnya untuk motor, TINGGI ke IN1 dan RENDAH untuk IN2 akan menyebabkannya berpaling ke satu arah, dan LOW dan TINGGI akan menyebabkannya berpaling ke arah yang lain.

Walau bagaimanapun, motors tidak akan bertukar sehingga TINGGI ditetapkan untuk mengaktifkan pin (7 untuk motor satu, 12 untuk motor dua). Dan mereka boleh dimatikan dengan LOW dengan pin yang sama. Bagaimanapun, jika anda perlu mengawal kelajuan motor, isyarat PWM dari pin digital yang disambungkan ke pin yang membolehkannya dapat mengurusnya.

Inilah yang kami lakukan dengan lakaran demonstrasi motosikal DC. Dua motor DC dan Arduino Uno disambungkan seperti yang dinyatakan di atas, bersama-sama dengan bekalan kuasa luaran. Kemudian masukkan dan muat naik lakaran berikut:

 // sambungkan pengawal motor pin kepada Arduino digital pins // motor satu int enA = 10; int in1 = 9; int in2 = 8; // motor dua int enB = 5; int in3 = 7; int in4 = 6; void setup () {// set semua pin kawalan motor ke output pinMode (enA, OUTPUT); pinMode (enB, OUTPUT); pinMode (in1, OUTPUT); pinMode (in2, OUTPUT); pinMode (in3, OUTPUT); pinMode (in4, OUTPUT); } void demoOne () {// fungsi ini akan menjalankan motor pada kedua-dua arah pada kelajuan tetap // putar motor A digitalWrite (in1, HIGH); digitalWrite (in2, LOW); / / kelajuan set ke 200 daripada kemungkinan kemungkinan 0 ~ 255 analogWrite (enA, 200); // menghidupkan motor B digitalWrite (in3, HIGH); digitalWrite (in4, LOW); / / kelajuan set ke 200 daripada kemungkinan kemungkinan 0 ~ 255 analogWrite (enB, 200); kelewatan (2000); // Sekarang ubah arah motor digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); kelewatan (2000); / // kini mematikan motor digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void demoTwo () {// fungsi ini akan menjalankan motor di seluruh julat kelajuan yang mungkin / // nota bahawa kelajuan maksimum ditentukan oleh motor itu sendiri dan voltan operasi // nilai PWM yang dihantar oleh analogWrite () adalah pecahan dari kelajuan maksima mungkin // oleh perkakasan anda // menghidupkan motor digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); // mempercepatkan dari sifar ke kelajuan maksimum untuk (int i = 0; i <256; i ++) {analogWrite (enA, i); analogWrite (enB, i); kelewatan (20); } // menurunkan kelajuan maksimum kepada sifar untuk (int i = 255; i> = 0; - i) {analogWrite (enA, i); analogWrite (enB, i); kelewatan (20); } // sekarang matikan motor digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void loop () {demoOne (); kelewatan (1000); demoTwo (); kelewatan (1000); } 

Jadi apa yang berlaku dalam lakaran itu? Dalam fungsi demoOne () kami menghidupkan motor dan menjalankannya pada nilai PWM sebanyak 200. Ini bukan nilai kelajuan, malah kuasa digunakan untuk 200/255 jumlah masa sekaligus.


Kemudian selepas seketika, motor beroperasi dalam arah yang terbalik (lihat bagaimana kita mengubah TINGGI dan RENDAH dalam fungsi digitaldigital ()?). Untuk mendapatkan idea mengenai kelajuan kelajuan perkakasan anda, kami menjalankan seluruh rangkaian PWM dalam fungsi demoTwo () yang menghidupkan motor dan mereka berjalan melalui nilai PWM sifar hingga 255 dan kembali kepada sifar dengan kedua-dua gelung .

Akhirnya ini ditunjukkan dalam video di halaman ini - menggunakan casis tangki yang dipakai dengan dua motor DC.

Langkah 3: Mengawal Motor Stepper Dengan Arduino dan L298N

Motor stepper mungkin kelihatan rumit, tetapi tidak ada yang lebih jauh daripada kebenaran. Dalam contoh ini, kita mengawal motor stepper NEMA-17 biasa yang mempunyai empat wayar, seperti yang ditunjukkan pada imej pada langkah ini.

Ia mempunyai 200 langkah setiap revolusi, dan boleh beroperasi pada 60 RPM. Jika anda tidak mempunyai langkah dan kelajuan kelajuan motor anda, cari sekarang dan anda perlukannya untuk lakaran.

Kunci kawalan motor stepper yang berjaya adalah mengenal pasti wayar - yang mana ia adalah. Anda perlu menentukan wayar A +, A-, B + dan B. Dengan motor contoh kami ini berwarna merah, hijau, kuning dan biru. Sekarang mari kita dapatkan pendawaian.

Sambungkan kabel A +, A-, B + dan B dari motor stepper ke sambungan modul 1, 2, 13 dan 14. Letakkan jumper disertakan dengan modul L298N di atas pasangan pada titik modul 7 dan 12. Kemudian sambungkan bekalan kuasa seperti yang diperlukan untuk mata 4 (positif) dan 5 (negatif / GND).

Sekali lagi jika bekalan kuasa motor stepper anda kurang daripada 12V, muat jumper ke modul pada titik 3 yang memberikan anda bekalan kuasa 5V yang kemas untuk Arduino anda. Seterusnya, sambungkan pin modul L298N IN1, IN2, IN3 dan IN4 ke pin digital Arduino D8, D9, D10 dan D11 masing-masing.

Akhir sekali, sambungkan Arduino GND ke titik 5 pada modul, dan Arduino 5V ke titik 6 jika sumber 5V dari modul. Mengawal motor stepper dari lakaran anda adalah sangat mudah, terima kasih kepada perpustakaan Stepper Arduino yang disertakan dengan Arduino IDE sebagai standard.

Untuk menunjukkan motor anda, cukup muatkan lakaran stepper_oneRevolution yang disertakan dengan perpustakaan Stepper. Untuk mencari ini, klik Fail> Contoh> menu Stepper di Arduino IDE.

Akhir sekali, semak nilai untuk

 int int stepsPerRevolution = 200; 
dalam lakaran dan tukar 200 kepada bilangan langkah per revolusi untuk motor stepper anda, dan juga kelajuan yang dipratetap hingga 60 RPM dalam baris berikut:
 myStepper.setSpeed ​​(60); 

Sekarang anda boleh menyimpan dan memuat naik sketsa, yang akan menghantar motor stepper anda sekitar satu revolusi, kemudian kembali lagi. Ini dicapai dengan fungsi ini

myStepper.step (stepsPerRevolution); / / untuk searah jarum jam

myStepper.step (-stepsPerRevolution); / // untuk anti arah jam

Akhirnya, demonstrasi perkakasan ujian kami ditunjukkan dalam video pada langkah ini.

Jadi di sana anda mempunyai, mudah cara yang murah untuk mengawal motor dengan Arduino atau papan serasi anda. Dan jika anda menikmati artikel ini, atau ingin memperkenalkan orang lain kepada dunia Arduino yang menarik - semak buku saya (kini dalam percetakan keempat!) "Arduino Workshop".

Artikel Berkaitan