Mengontrol beberapa motor stepper Nema 17 secara bersamaan atau NemaStepper

gambar

Halo semuanya.

Saya pikir jika Anda bekerja dengan arduino + nema 17, Anda tahu bahwa sangat sulit untuk memulai beberapa mesin pada saat yang bersamaan.

Ada berbagai cara untuk mengatasi masalah ini, yang paling mudah, mungkin, adalah dengan menggunakan perpustakaan NemaStepper. Perpustakaan menyederhanakan tugas ini berkali-kali, keuntungan utama adalah tidak menghentikan program. Itu diinstal serta semua perpustakaan lainnya. Didistribusikan di bawah lisensi MIT.

Baiklah, mari kita mulai. Dan kita akan mulai dengan menghubungkan.

Kami akan menggunakan Simple Nema 17 dengan aliexpress untuk 500 rubel, driver L298N, dan arduino uno. Inilah mereka:

gambar

gambar

gambar

  • Dalam contoh ini, saya akan menunjukkan empat driver yang terhubung ke Arduino, meskipun saya hanya akan menggunakan satu.
  • Ada banyak tutorial tentang cara menghubungkan Nema 17 di Internet, jadi saya tidak akan menjelaskannya secara rinci di sini.

Jadi, kami menghubungkan motor ke pengemudi:

gambar

gambar

Perpustakaan berorientasi objek. Mari kita lihat contoh menghidupkan satu motor:

NemaStepper Stepper1(2, 3, 4, 5, 200, 10, false); void Setup(){ Stepper1.SetStepCount(100); //   100  } void Update(){ Stepper1.Step(); //  } 

Semua metode perpustakaan dapat ditemukan dalam file kode sumber perpustakaan (ada deskripsi di header perpustakaan).

* Lebih banyak tentang kode dalam contoh.

Dan sekarang sebagai contoh.

Perpustakaan memiliki contoh bawaan (saat ini hanya ada di sana), yang memungkinkan Anda untuk mengendalikan tiga motor dengan Serial sekaligus.

Contoh ini menerima perintah berikut ke port.

Mari kita pisahkan.

Mari kita mulai dengan header - menghubungkan perpustakaan:

 //This file - example of NemaStepper library. #include "NemaStepper.h" String inString; bool IsStepperEnabled = false; 

Selanjutnya, tiga motor dideklarasikan, dengan parameter berikut:

1. Pin pertama
2. Pin kedua
3. Pin ketiga
4. Pin keempat
5. Jumlah langkah per revolusi - kebanyakan mesin Nema 17 memiliki 200.
6. Kecepatan awal
7. Nilai yang menunjukkan apakah akan menahan poros setelah berhenti (jika benar, driver berubah menjadi barbekyu)

 NemaStepper Stepper1(2, 3, 4, 5, 200, 10, false); NemaStepper Stepper2(6, 7, 8, 9, 200, 10, false); NemaStepper Stepper3(10, 11, 12, 13, 200, 10, false); 

Inisialisasi port berikutnya:

 void setup() { Serial.begin(9600); } 

Maka, PENTING! Di loop utama, Anda perlu memperbarui posisi mesin dengan perintah Step ().

 void loop() { if (IsStepperEnabled == true){ Stepper1.Step(); Stepper2.Step(); Stepper3.Step(); } GetCommandFromSerial(); } 

Berikut ini adalah subrutin yang menerima data dari port, menghidupkan / mematikan motor, mengatur kecepatan, rem, rotasi.

 void GetCommandFromSerial() { if (Serial.available() > 0) { //    int inChar = Serial.read(); if (inChar == '/') { String command = ((String)inString[0] + (String)inString[1] + (String)inString[2]); String param; int len = inString.length(); for (int i = 3; i < len; i++) { param = (String)param + (String)inString[i]; } if (command == "MV1") { Stepper1.SetStepCount(param.toInt()); Serial.println(param.toInt()); } if (command == "MV2") { Stepper2.SetStepCount(param.toInt()); Serial.println(param.toInt()); } if (command == "MV3") { Stepper3.SetStepCount(param.toInt()); Serial.println(param.toInt()); } if (command == "SS1") { Stepper1.SetSpeed(param.toInt()); Serial.println(param.toInt()); } if (command == "SS2") { Stepper2.SetSpeed(param.toInt()); Serial.println(param.toInt()); } if (command == "SS3") { Stepper3.SetSpeed(param.toInt()); Serial.println(param.toInt()); } if (command == "SB1") { Stepper1.SetBrakes(param.toInt()); Serial.println(param.toInt()); } if (command == "SB2") { Stepper2.SetBrakes(param.toInt()); Serial.println(param.toInt()); } if (command == "SB3") { Stepper3.SetBrakes(param.toInt()); Serial.println(param.toInt()); } if (command == "EMS") { IsStepperEnabled = true; Serial.println(param.toInt()); } if (command == "DMS") { IsStepperEnabled = false; Serial.println(param.toInt()); } inString = ""; } else { inString += (char)inChar; } } } 

Jadi, mari kita coba unduh ke papan tulis.

Diunggah?

Kemudian kita masuk ke monitor port dan memasukkan perintah dari kode.
Setiap perintah diakhiri dengan a /.
Tiga karakter pertama adalah nama tim.
Itu antara nama dan / - parameter.
Ayo nyalakan motor dengan perintah "EMS /" (Enable MotorS).
Kemudian kita akan menunjukkan motor 1 kecepatan 60 dengan perintah "SS160 /" (Atur Kecepatan), di mana 60 adalah kecepatan.
Dan akhirnya, nyalakan motor pertama dengan perintah "MV1100 /", (MoVe) di mana 100 adalah jumlah putaran.
Semuanya berfungsi. Hore.

Sama dengan sisa motor.

Nah, dari mana mendapatkan perpustakaan itu.

Perpustakaan dapat diunduh dengan berterima kasih kepada pembuatnya, mengikuti tautannya, menunjukkan harga sebenarnya:

Dapatkan NemaStepper

Terima kasih telah membaca, saya harap artikel saya membantu Anda.

Ketika saya sedang mencari solusi untuk masalah saya, itu ternyata menjadi satu-satunya perpustakaan yang cocok.

Source: https://habr.com/ru/post/id464859/


All Articles