الربط مع ماتلاب

تعد لغة Matlab لغة البرمجة المفضلة للمهندسين و الباحثين بسبب السهولة الكبيرة و الأدوات المتعددة التي تؤمنها لتحليل و معالجة وعرض البيانات باستخدام سطر الأوامر أو محرر البرامج M-files editor و كذلك لإمكانيات نمذجة مختلف الأنظمة الفيزيائية باستخدام الأداة المميزة Simulink و حتى بناء واجهات التخاطب الرسومية GUI .

سنشرح في هذه المقالة إحدى إضافات لغة Matlab من شركة The Mathworks التي تمكن التخاطب مع الدارات المتوافقة مع Arduino و استخدام بوابات الدخل و الخرج لها دون الحاجة إلى كتابة أي سطر برمجي خاص لدارة Arduino .

هذه الاضافة هي ArduinoIO التي تتضمن الإمكانيات التالية :

  • قراءة و كتابة مداخل الدارة التمثيلية و الرقمية .
  • تغيير الجهد المرجعي للمداخل التمثيلية (الذي يحدد مجالها) .
  • التحكم بمحركات السيرفو الصغيرة مباشرة .
  • التحكم بالمحركات الخطوية .
  • التحكم بسرعة محركات التيار المستمر .
  • قراءة حساسات الدوران الرقمية Encoders ذات الخطين .

يمكن تحميل هذه الإضافة من موقع الشركة مباشرة من هذا الرابط , و لكن الإضافة التي يمكن تحميلها من موقع الشركة مباشرة لا يمكن استخدامها مع دارات SYRDUINO NG (بسبب موارد الذاكرة المحدودة لمتحكم الدارة ATmega8A ) و لهذا السبب فقد قمنا بتعديل هذه الإضافة بإلغاء إمكانية قراءة حساسات الدوران الرقمية (عملياً هذه الحساسات ليست متوفرة كثيراً في السوق المحلية كما أنه يمكن الاستعاضة عنها بمقاومة متغيرة توصل مع مدخل تمثيلي) و يمكنكم تحميل هذه الإضافة المعدلة من هنا .

تنصيب الإضافة :

بعد تحميل ملف الإضافة المضغوط نقوم بالخطوات التالية :

  • نقوم بفك الملف المضغوط و ليكن إلى الدليل \:c من القرص الصلب .
  • نصل دارة SYRDUINO NG (أو أي دارة متوافقة مع Arduino) إلى الحاسب .
  • نشغل البيئة Arduino IDE و نفتح البرنامج adiosrv.ino الموجود في المجلد pde\adiosrv من المكان الذي قمنا بفك ضغط ملف الإضافة فيه .
  • نقوم برفع البرنامج إلى الدارة .
  • بعد فتح بيئة Matlab نفتح الملف install_arduino.m و نقوم بتشغيله .

 

تجريب و تشغيل الإضافة :

يجب أن نعلم رقم البوابة التسلسلية لدارتنا في البداية و هو نفس رقم البوابة المستخدم في البيئة Arduino IDE (مثلاً COM1 أو COM2 …).

  • في بيئة Matlab ندخل الأمر التالي لإنشاء كائن من نوع Arduino و بدء الاتصال بالدارة:

 

a=arduino('رقم البوابة')

سيستغرق تنفيذ الأمر أكثر من ثانية و لكن في النهاية يجب نحصل على رسالة تبين نجاح عملية الاتصال .

  • ندخل الأمر التالي لضبط القطب الرقمية رقم 13 كمخرج :

 

a.pinMode(13,'output')

  • لتشغيل الثنائي المضيء الموصول القطب رقم 13 ندخل الأمر :

 

a.digitalWrite(13,1)

  • و لإطفاء الثنائي ندخل الأمر :

 

a.digitalWrite(13,0)

  • و لإنهاء الاتصال بالدارة ندخل الأمر :

 

delete(a)

أخيراً للتعرف على بعض توابع هذه الإضافة يجب إلقاء نظرة على المثال example_io.m الموجود في المجلد examples و لا ننسى تغيير رقم البوابة حتي يعمل المثال , و كما يوجد في موقع شركة The Mathworks ملفات تعليمية للتعامل مع هذه الإضافة (هنا يجب أن نتذكر أن المكتبة المعدلة لا تتعامل مع حساسات الدوران) .

استخدام Simulink مع الإضافة :

أهم ما يميز هذه الإضافة هو أنها تسهل التخاطب مع الدارة باستخدام أداة النمذجة Simulink و ذلك من خلال عدة كتل و المثال التالي يبين عملية تشغيل و إطفاء الثنائي المضيء وهو موجود في مجلد الأمثلة في مجلد الإضافة :

المهم في المثال هو أن أي نموذج يجب أن يتضمن عنصرين :

  • arduinoIO setup : و هنا يجب تحديد البوابة التسلسلية الخاصة بالدارة .
  • Real-Time Pacer :و هذا العنصر يساعد على إبطاء المحاكاة بحيث تعمل مع الزمن الحقيقي و لها معامل واحد و هو SpeedUp فعندما يأخذ القيمة 1 تعمل المحاكاة في الزمن الحقيقي و القيم الأصغر من الواحد تبطئ المحاكاة أما القيم الأكبر من الواحد فتجعل المحاكاة أسرع .

أضف تعليق

كود امني
تحديث