Kontrol DC dan Motor Stepper Dengan Modul Kontrol Motor Ganda L298N dan Arduino

Anda tidak perlu menghabiskan banyak uang untuk mengendalikan motor dengan Arduino atau papan yang kompatibel. Setelah beberapa berburu di sekitar kami menemukan modul kontrol motor rapi berdasarkan pada L298N H-bridge IC yang dapat memungkinkan Anda untuk mengontrol kecepatan dan arah dua motor DC, atau mengontrol satu motor stepper bipolar dengan mudah.

Modul L298N H-bridge dapat digunakan dengan motor yang memiliki tegangan antara 5 dan 35V DC. Dengan modul yang digunakan dalam tutorial ini, ada juga regulator 5V onboard, jadi jika tegangan suplai Anda hingga 12V Anda juga dapat mengambil 5V dari papan.

Jadi mari kita mulai!

Langkah 1: Memahami Koneksi Modul L298

Pertama kita akan menjalankan melalui koneksi, kemudian menjelaskan cara mengontrol motor DC kemudian motor stepper. Pada titik ini, tinjau koneksi pada modul H-bridge L298N.

Pertimbangkan gambar - cocokkan angka dengan daftar di bawah gambar:

  1. Motor DC 1 “+” atau motor stepper A +
  2. Motor DC 1 "-" atau motor stepper A-
  3. 12V jumper - lepaskan ini jika menggunakan tegangan suplai lebih besar dari 12V DC. Ini memungkinkan daya ke regulator 5V onboard

  4. Hubungkan tegangan suplai motor Anda di sini, maksimum 35V DC. Hapus jumper 12V jika> 12V DC

  5. GND

  6. Output 5V jika 12V jumper di tempat, ideal untuk menyalakan Arduino Anda (dll)

  7. Motor DC 1 mengaktifkan jumper. Biarkan ini di tempat ketika menggunakan motor stepper. Hubungkan ke output PWM untuk kontrol kecepatan motor DC.

  8. IN1

  9. IN2

  10. IN3

  11. IN4

  12. Motor DC 2 mengaktifkan jumper. Biarkan ini di tempat ketika menggunakan motor stepper. Hubungkan ke output PWM untuk kontrol kecepatan motor DC

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

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

Langkah 2: Mengontrol Motor DC

Untuk mengontrol satu atau dua motor DC cukup mudah dengan modul H-bridge L298N. Pertama-tama sambungkan setiap motor ke koneksi A dan B pada modul L298N.

Jika Anda menggunakan dua motor untuk robot (dll), pastikan polaritas motornya sama untuk kedua input. Kalau tidak, Anda mungkin perlu menukar mereka ketika Anda mengatur kedua motor untuk maju dan satu mundur!

Selanjutnya, hubungkan catu daya Anda - positif ke pin 4 pada modul dan negatif / GND ke pin 5. Jika Anda memasok hingga 12V Anda dapat meninggalkan dalam jumper 12V (titik 3 pada gambar di atas) dan 5V akan tersedia dari pin 6 pada modul.

Ini dapat diumpankan ke pin 5V Arduino Anda untuk memberinya daya dari catu daya motor. Jangan lupa menghubungkan Arduino GND ke pin 5 pada modul juga untuk menyelesaikan rangkaian. Sekarang Anda akan membutuhkan enam pin keluaran digital pada Arduino Anda, dua di antaranya harus pin PWM (modulasi lebar-pulsa).

Pin PWM dilambangkan dengan tilde (“~”) di sebelah nomor pin, misalnya pada gambar pin digital Arduino Uno.

Terakhir, hubungkan pin output digital Arduino ke modul driver. Dalam contoh kita, kita memiliki dua motor DC, sehingga pin digital D9, D8, D7 dan D6 masing-masing akan dihubungkan ke pin IN1, IN2, IN3 dan IN4. Kemudian hubungkan D10 ke modul pin 7 (lepaskan jumper terlebih dahulu) dan D5 ke modul pin 12 (sekali lagi, lepaskan jumper).

Arah motor dikontrol dengan mengirimkan sinyal TINGGI atau RENDAH ke drive untuk setiap motor (atau saluran). Misalnya untuk motor satu, TINGGI ke IN1 dan RENDAH ke IN2 akan menyebabkannya berbelok ke satu arah, dan RENDAH dan TINGGI akan menyebabkannya berbelok ke arah lain.

Namun motor tidak akan berputar sampai HIGH diatur ke pin aktif (7 untuk motor satu, 12 untuk motor dua). Dan mereka dapat dimatikan dengan RENDAH ke pin yang sama. Namun jika Anda perlu mengontrol kecepatan motor, sinyal PWM dari pin digital yang terhubung ke pin aktif dapat mengatasi hal itu.

Inilah yang kami lakukan dengan sketsa demonstrasi motor DC. Dua motor DC dan Arduino Uno terhubung seperti yang dijelaskan di atas, bersama dengan catu daya eksternal. Lalu masukkan dan unggah sketsa berikut:

 // sambungkan pin pengontrol motor ke pin digital Arduino // motor satu int enA = 10; int in1 = 9; int in2 = 8; // motor dua int enB = 5; int in3 = 7; int in4 = 6; void setup () {// atur semua pin kontrol 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 di kedua arah dengan kecepatan tetap // nyalakan motor A digitalWrite (in1, HIGH); digitalWrite (in2, LOW); // atur kecepatan ke 200 dari kisaran yang dimungkinkan 0 ~ 255 analogWrite (enA, 200); // nyalakan motor B digitalWrite (in3, HIGH); digitalWrite (in4, LOW); // atur kecepatan ke 200 dari kisaran yang dimungkinkan 0 ~ 255 analogWrite (enB, 200); delay (2000); // sekarang ubah arah motor digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); delay (2000); // sekarang matikan motor digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void demoTwo () {// fungsi ini akan menjalankan motor melintasi kisaran kecepatan yang memungkinkan // perhatikan bahwa kecepatan maksimum ditentukan oleh motor itu sendiri dan tegangan operasi // nilai PWM yang dikirim oleh analogWrite () adalah sebagian kecil dari kecepatan maksimum yang dimungkinkan // oleh perangkat keras Anda // nyalakan motor digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, HIGH); // akselerasi dari nol ke kecepatan maksimum untuk (int i = 0; i <256; i ++) {analogWrite (enA, i); analogWrite (enB, i); keterlambatan (20); } // perlambat dari kecepatan maksimum ke nol untuk (int i = 255; i> = 0; --i) {analogWrite (enA, i); analogWrite (enB, i); keterlambatan (20); } // sekarang matikan motor digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, LOW); } void loop () {demoOne (); keterlambatan (1000); demoTwo (); keterlambatan (1000); } 

Jadi apa yang terjadi dalam sketsa itu? Dalam demoOne fungsi () kita menghidupkan motor dan menjalankannya pada nilai PWM 200. Ini bukan nilai kecepatan, alih-alih daya diterapkan untuk 200/255 dari jumlah waktu sekaligus.


Kemudian setelah beberapa saat motor beroperasi ke arah sebaliknya (lihat bagaimana kita mengubah TINGGI dan RENDAH dalam fungsi digitalwrite ()?). Untuk mendapatkan gambaran tentang kisaran kecepatan yang mungkin dari perangkat keras Anda, kami menjalankan seluruh rentang PWM di fungsi demoTwo () yang menghidupkan motor dan mereka berjalan melalui nilai-nilai PWM nol ke 255 dan kembali ke nol dengan dua untuk loop .

Akhirnya ini ditunjukkan dalam video di halaman ini - menggunakan sasis tangki kami yang sudah usang dengan dua motor DC.

Langkah 3: Mengontrol Motor Stepper Dengan Arduino dan L298N

Motor stepper mungkin terlihat rumit, tetapi tidak ada yang lebih dari kebenaran. Dalam contoh ini kita mengendalikan motor stepper NEMA-17 khas yang memiliki empat kabel, seperti yang ditunjukkan pada gambar pada langkah ini.

Ini memiliki 200 langkah per revolusi, dan dapat beroperasi pada 60 RPM. Jika Anda belum memiliki nilai langkah dan kecepatan untuk motor Anda, cari tahu sekarang dan Anda akan membutuhkannya untuk membuat sketsa.

Kunci keberhasilan kontrol motor stepper adalah mengidentifikasi kabel - yang mana adalah yang mana. Anda perlu menentukan kabel A +, A-, B +, dan B-. Dengan motor contoh kita ini merah, hijau, kuning dan biru. Sekarang mari kita selesaikan perkabelan.

Sambungkan kabel A +, A-, B +, dan B dari motor stepper ke koneksi modul 1, 2, 13 dan 14 secara berurutan. Tempatkan jumper yang disertakan dengan modul L298N di atas pasangan di titik-titik modul 7 dan 12. Kemudian hubungkan catu daya seperti yang diperlukan ke titik 4 (positif) dan 5 (negatif / GND).

Sekali lagi jika catu daya motor stepper Anda kurang dari 12V, paskan jumper ke modul pada titik 3 yang memberi Anda catu daya 5V yang rapi untuk Arduino Anda. Selanjutnya, hubungkan pin modul L298N IN1, IN2, IN3 dan IN4 ke pin digital Arduino D8, D9, D10 dan D11.

Terakhir, sambungkan Arduino GND ke titik 5 pada modul, dan Arduino 5V ke titik 6 jika sumber 5V dari modul. Mengontrol motor stepper dari sketsa Anda sangat sederhana, berkat perpustakaan Stepper Arduino yang disertakan dengan Arduino IDE sebagai standar.

Untuk menunjukkan motor Anda, cukup muat sketsa stepper_oneRevolution yang disertakan dengan pustaka Stepper. Untuk menemukan ini, klik menu File> Contoh> Stepper di Arduino IDE.

Akhirnya, periksa nilainya

 const int stepsPerRevolution = 200; 
dalam sketsa dan ubah 200 ke jumlah langkah per revolusi untuk motor stepper Anda, dan juga kecepatan yang telah diatur ke 60 RPM pada baris berikut:
 myStepper.setSpeed ​​(60); 

Sekarang Anda dapat menyimpan dan mengunggah sketsa, yang akan mengirim motor stepper Anda sekitar satu revolusi, lalu kembali lagi. Ini dicapai dengan fungsi

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

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

Akhirnya, peragaan cepat perangkat keras pengujian kami ditampilkan di video pada langkah ini.

Jadi begitulah, cara mudah dan murah untuk mengendalikan motor dengan Arduino atau papan yang kompatibel. Dan jika Anda menikmati artikel ini, atau ingin memperkenalkan orang lain ke dunia Arduino yang menarik - lihat buku saya (sekarang dalam cetakan keempat!) "Arduino Workshop".

Artikel Terkait