صورة لوحدة تحكم محرك التيار المستمر بدون فرش عند اقترانها بلوحة أردوينو ومحرك خطي

تمديد وتقليص طول شوط مشغل باستمرار باستخدام محرك تيار مستمر عديم الفُرَش

Guninder Malhi
Guninder Malhi
PA Engineer

سيساعدك هذا الدرس على فهم تحكّمات متحكّم محرك تيار مستمر عديم الفُرَش عند إقرانه بأردوينو ومشغل خطي. يمكن استخدام هذا البرنامج لتمديد وتقليص طول شوط مشغل بشكل مستمر.

قبل أن نبدأ، دعونا نستعرض المكونات التي سنستخدمها في هذا الدرس:

  1. Arduino Mega (يمكن استخدام Arduino Uno أيضًا).
  2. LC-241.
  3. PA-14 مع محرك عديم الفُرَش.
  4. مزود طاقة PS-13-12.
  5. أسلاك توصيل (Jumper Wires).

 برمجة Arduino

يحتوي المشغل الخطي على مجموعتين من الأسلاك الخارجة منه: مجموعة للمحرك وأخرى لمفاتيح الحدّ. يُظهر المخطط في الشكل أعلاه كيفية توصيل المكونات معًا.

PIN SETUP CODE

int out_lim = 45; // دبوس مفتاح الحدّ الخارجي

int in_lim = 53;  // دبوس مفتاح الحدّ الداخلي

int run_f = 25;  // دبوس التشغيل على المتحكّم
int run_r = 30;  // دبوس العكس على المتحكّم

يتولى هذا الجزء من الشيفرة تهيئة المنافذ التي ستُستخدم لاستقبال وإرسال البيانات. تم استخدام جميع المنافذ الرقمية في هذه الحالة، لكن يمكن استخدام المنافذ التناظرية أيضًا.

SETUP LOOP CODE

void setup() {

  Serial.begin(9600);  // تهيئة الاتصال التسلسلي عند 9600 بت في الثانية
  pinMode(out_lim, INPUT_PULLUP); // تهيئة الدبوس 45 كدخل
  pinMode(in_lim, INPUT_PULLUP); // تهيئة الدبوس 53 كدخل
  pinMode(run_f, OUTPUT); // تهيئة الدبوس 25 كخرج
  pinMode(run_r, OUTPUT); // تهيئة الدبوس 30 كخرج

 

  retract(); // تقليص طول الشوط عند بدء التشغيل

  delay(500);
  }


تقوم حلقة "setup" بتحديد المنافذ التي ستُستخدم كمخارج وأيها سيُستخدم كمداخل. كما يظهر في الشيفرة، ستُستخدم المنافذ المتصلة بمفاتيح الحدّ لقراءة حالات مفاتيح الحدّ، والمنافذ المتصلة بـ "RUN" و"REV" على LC-241 للكتابة إليه. مبدئيًا، تُشغّل الشيفرة أيضًا دالة تقليص لتقليص الشوط بالكامل إلى الداخل قبل البدء.

FUNCTION DEFINITIONS CODE

void extend() // هذه الدالة تُمكّن المحرك من العمل

{
 digitalWrite(run_f, LOW);
 digitalWrite(run_r, HIGH);

 }

void retract() // هذه الدالة تعكس اتجاه المحرك
{
  digitalWrite(run_f, LOW);
  digitalWrite(run_r, LOW);
}

void run_stop() // هذه الدالة تُعطّل المحرك
{
  digitalWrite(run_f, HIGH);
  digitalWrite(run_r, HIGH);
}


يشرح هذا الجزء الدوال المستخدمة للتحكّم في طاقة المحرك واتجاهه. سنقوم بتمكين أو تعطيل المحرك عبر كتابة "0" أو "1" إلى دبوس "RUN"، ثم إصدار الأوامر نفسها إلى دبوس "REV" لعكس اتجاه المحرك.

MAIN LOOP CODE

Void loop() {

   int out_lim_state = digitalRead(out_lim);     // قراءة مفاتيح الحدّ وحفظ قيمتها
  int in_lim_state = digitalRead(in_lim);

   Serial.print("قيمة مفتاح الحدّ الخارجي "), Serial.println(out_lim_state); // 0 -> مفتاح الحدّ مضغوط
   Serial.print("قيمة مفتاح الحدّ الداخلي "), Serial.println(in_lim_state);  // 1 -> مفتاح الحدّ غير مضغوط

  if (out_lim_state == 0 && in_lim_state == 1) // إذا كان مفتاح الحدّ الخارجي مضغوطًا والداخلي ليس كذلك (تم التمديد بالكامل)
   {
   retract(); // تقليص طول الشوط
   }

   else if (out_lim_state == 1 && in_lim_state == 0) // إذا كان مفتاح الحدّ الداخلي مضغوطًا والخارجي ليس كذلك (تم التقليص بالكامل)
  {
   extend(); // تمديد طول الشوط
  }

 

تقوم حلقة "loop" أساسًا بقراءة مُدخلات مفاتيح الحدّ للتحقق مما إذا كانت المفاتيح مضغوطة أم لا، ثم بناءً على ذلك تغيّر اتجاه المحرك.

يأتي معظم المشغلات الخطية في السوق مزوّدًا بمحرك تيار مستمر بفرش، وبالتالي فإن دورة التشغيل المتاحة مع ذلك المحرك تجعل تشغيل الوحدة بشكل مستمر أمرًا شبه مستحيل. في Progressive Automations، نمنح عملاءنا حرية اختيار محرك تيار مستمر عديم الفُرَش لطرازنا PA-14، مما يوفّر لهم خيارات أكثر لمشاريعهم.