التحكم في محركات Nema 17 متعددة السائر في نفس الوقت أو NemaStepper

صورة

مرحبا بالجميع.

أعتقد أنك إذا كنت تعمل مع arduino + nema 17 ، فأنت تعلم أنه قد يكون من الصعب جدًا تشغيل العديد من المحركات في نفس الوقت.

هناك طرق مختلفة لحل هذه المشكلة ، وربما أسهلها هي استخدام مكتبة NemaStepper. تبسط المكتبة هذه المهمة عدة مرات ، والميزة الرئيسية هي أنها لا توقف البرنامج. يتم تثبيته وكذلك جميع المكتبات الأخرى. وزعت تحت رخصة معهد ماساتشوستس للتكنولوجيا.

حسنًا ، لنبدأ. وسوف نبدأ بالاتصال.

سوف نستخدم Simple Nema 17 مع aliexpress مقابل 500 روبل ، وسائق L298N واردوينو uno. ها هم:

صورة

صورة

صورة

  • في المثال ، سأعرض أربعة برامج تشغيل متصلة بـ arduino ، على الرغم من أنني سأستخدم واحدًا فقط.
  • هناك العديد من البرامج التعليمية حول كيفية توصيل Nema 17 على الإنترنت ، لذلك لن أصفها بالتفصيل هنا.

لذلك ، نقوم بتوصيل المحرك إلى السائق:

صورة

صورة

المكتبة موجهة للكائنات. دعنا ننظر إلى مثال على تشغيل محرك واحد:

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

يمكن العثور على جميع أساليب المكتبة في ملفات شفرة مصدر المكتبة (يوجد وصف في رأس المكتبة).

* المزيد عن الكود في المثال.

والآن على سبيل المثال.

تحتوي المكتبة على مثال مضمن (في الوقت الحالي هناك بمفرده) ، والذي يسمح لك بالتحكم في ثلاثة محركات باستخدام Serial في آن واحد.

يقبل هذا المثال الأوامر التالية إلى المنفذ.

لنفصلها.

لنبدأ برأس المكتبات التي تربط:

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

بعد ذلك ، تم الإعلان عن ثلاثة محركات ، مع المعلمات التالية:

1. دبوس الأول
2. دبوس الثاني
3. دبوس الثالث
4. دبوس الرابع
5. عدد الخطوات لكل ثورة - معظم محركات نيما 17 لديها 200.
6. سرعة البدء
7. قيمة تشير إلى ما إذا كان سيتم الاحتفاظ بالعمود بعد التوقف (إذا كان ذلك صحيحًا ، يتحول السائقون إلى حفلة شواء)

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

تهيئة المنفذ التالي:

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

ثم ، مهم! في الحلقة الرئيسية ، تحتاج إلى تحديث موضع المحركات باستخدام الأمر Step ()

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

ما يلي هو روتين فرعي يستقبل البيانات من المنفذ ، ويقوم بتشغيل / إيقاف المحركات ، ويضبط السرعة ، والفرامل ، والدوران.

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

وهكذا ، دعونا نحاول تنزيله على السبورة.

التحميل؟

ثم نذهب إلى شاشة المنفذ وأدخل الأوامر من الكود.
ينتهي كل أمر بـ /.
الأحرف الثلاثة الأولى هي اسم الفريق.
هذا بين الاسم و / - المعلمات.
لنقم بتشغيل المحركات باستخدام الأمر "EMS /" (تمكين المحركات).
ثم سنشير إلى المحرك 1 السرعة 60 مع الأمر "SS160 /" (ضبط السرعة) ، حيث 60 هو السرعة.
وأخيرًا ، قم بتشغيل المحرك الأول باستخدام الأمر "MV1100 /" ، (MoVe) حيث 100 هو عدد الثورات.
كل شيء يعمل. اور.

الشيء نفسه مع بقية المحركات.

حسنا ، من أين تحصل على المكتبة.

يمكن تنزيل المكتبة عن طريق توجيه الشكر للمنشئ ، باتباع الرابط ، مع الإشارة إلى السعر الحقيقي لها:

الحصول على NemaStepper

شكرا للقراءة ، وآمل أن مقالك ساعدك.

عندما كنت أبحث عن حل لمشكلتي ، اتضح أنها المكتبة الوحيدة المناسبة.

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


All Articles