تحويل أردوينو إلى مبرمج رقاقات AVR

2014-04-20

تمهيد

هذه المقالة تشرح جزء مما تم تطبيقه في ملتقى الصناع وهو طريقة تحويل لوح أردوينو أونو أو ليوناردو إلى مبرمج ISP خارجي قادر على برمجة مختلف رقاقات AVR مثل Atmega328p-pu.

الصورة أدناه تبين جهاز المبرمج الخارجي AVRISP MKii وهو جهاز يرتبط بالحاسوب عبر منفذ USB ثم بالرقاقة المطلوب برمجتها عبر ISP ذي الأسنان الستة. لا داع لأن تشتري هذا الجهاز حيث أننا سنحول لوحة أردوينو ليؤدي نفس الغرض.

غالبا ما تنتهي مهمة المبرمج الخارجي برفع برنامج محمل الإقلاع (غالبا حجمه أقل من 2 كيلوبايت) ويتم رفع البرامج الاحقة عبر برنامج محمل الإقلاع لأن ذلك أسهل.

مبرمج AVRISP MKii الخارجي

مبرمج AVR MKii الخارجي

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

منافذ ISP الستة

الحد الأدنى لتشغيل المتحكم الدقيق وحده

المتحكم الدقيق الهدف (أي المطلوب برمجته) يجب أن يكون على لوحة إلكترونية حاضنة توفر له ما يلزمه حتى يعمل مثل لوح أردوينو أونو أو لوح stk500 (الذي يحتوي مبرمج ضمني انظر الصورة أدناه).

لوح stk500 التطويري

سنقوم ببناء الوحة الحاضنة باستعمال لوح التجارب breadboard (لوح بلاستيكي فارغ يستخدم الثغرات عوضا عن اللحام). كافة الفتحات في سطر الموجب موصولة معا. كذلك السطر السالب الثاني. كذلك كل عمود من الفتحات على جانبي لوح التجارب ثم سطرين الموجب والسالب مرة أخرى.

لوح التجارب

حتى تعمل يعمل المتحكم الدقيق من AVR يجب تأمين ما يلي له حتى يعمل:

  • توصيل VCC و AVCC بالقطب الموجب والذي يجب أن يكون فولتية ثابتة مستقرة ضمن النطاق المطلوب (غالبا 5 فولت)
    • 3 أو 4 بطاريات 1.5 فولت
    • تزويده بالطاقة من منفذ V5 في أردوينو
    • تزويده بالطاقة من شاحن أو وصلة USB موصولة بحاسوب
    • تزويده بدارة منظم طاقة خاصة بذلك
  • توصيل GND بالقطب السالب (الأرض)
  • وسيلة لرفع فولتية سن متمم RESET (تكتب بخط فوق RESET) حيث إن انخفضت فولتيته لفترة يتم إعادة التشغيل
    • حل غير عملي: يمكن توصيل سلك للقطب الموجب معه وتكون إعادة التشغيل بقطع إمداد اللوحة كاملة من الطاقة.
    • رفع فولتيته عبر وصله بمقاومة 10 كيلو-أوم وطرفها الآخر مع القطب الموجب. يمكن عمل إعادة تشغيل بتوصيل هذا السن بالأرض (مباشرة أو عبر زر)
  • مصدر ذبذات خارجي (إن كان المتحكم الدقيق معد ليستعمل مصدره الداخلي سيتم تجاهلها وإن كان يحتاجها فإننا نزوده بها)
    • مذبب سيراميكي أو كريستالي برجلين موصولة مع المتحكم الدقيق وموصولة بالأرض عبر مكثفين
    • مذبب ثلاثي الأرجل دون الحاجة لمكثفين
    • يمكن توليد الذبذبات برمجيا في لوح أونو (كما سنرى أدناه)
    • يمكن إخراج الذبذبات الداخلة من متحكم إلى متحكم آخر عبر منفذ CLKO
  • لتجربة مثال تقليب الضوء نحتاج ضوء LED ولأنه لا يتحمل فولتية عالية نحتاج مقاومة لخفض الفولتية (300 - 500 أوم)

في الصورة إدناه مثال على ذلك مستخدما Atmega328p-PU وقد قمت بوضع مكثف اختياري بين (القطب الموجب والسالب لتنظيم التيار عند وصله وفصله ويمكن التخلي عن المذبذب من كما سنوضح لاحقا.

لوحة بالحد الأدنى لتشغيل المتحكم الدقيق

الصورة التالية توضح توزيع أسنان المتحكم الدقيق Atmega328p-pu وبالأحمر أسماء الأسنان في أردوينو

توزيع أسنان Atmega328 مع منافذ أردوينو

الجانب البرمجي

صل لوح أردوينو بالحاسوب وحمل عليه برنامج ArduinoISP من الأمثلة التي تأتي مع بيئة أردوينو. أنا أفضل النسخة المطورة من البرنامج التي عملتها Adafruit. إن كنت تستعمل أردوينو ليوناردو فإنك تحتاج تعديل سطر

#define RESET SS

ليصبح هكذا

#define RESET 10

التوصيل

إن كان اللوح المبرمج هو أونو فيكون توصيله هكذا

  • سن 10 الرقمي في أونو مع 1 في المتحكم الدقيق
  • سن 11 الرقمي في أونو مع 17 في المتحكم الدقيق
  • سن 12 الرقمي في أونو مع 18 في المتحكم الدقيق
  • سن 13 الرقمي في أونو مع 19 في المتحكم الدقيق
  • اختياري: سن 9 الرقمي في أونو مع 9 في المتحكم الدقيق (عند استعمال النسخة المطورة من adafruit ودون الحاجة لمذبذب)

توصيل أونو كمبرمج

إن كنت تستخدم ليوناردو كمبرمج فعليك توصيله من خلال وصلة ISP كما في الصورة

ليوناردو كمبرمج

تحذير: قد تفضل أن توصل مقاومة صغير (300 أوم) على الأسلاك بين أونو ولوح التجارب لتجنب حدوث ماس كهربائي (صغير) إن كان هناك برنامج سابق على لوح التجارب.

طريقة رفع محمل الإقلاع

في حالتنا لوح تجاربنا هو متوافق أونو لذا اختر لوح أونو (حتى لو كنت تستخدم لوح ليوناردو فهو المبرمج وليس الهدف) من قائمة الألواح وغير المبرمج من الوضع التلقائي AVRISP MKii إلى Arduino as ISP. ثم انقر على "حرق محمل الإقلاع". إن نجح رفع محمل الإقلاع فإن عمل RESET يؤدي إلى رمش الضوء الموصول على السن رقم 13.

طريقة رفع البرنامج

يمكن استخدام المبرمج لرفع برامج عادية وليس فقط محمل إقلاع فقط تأكد من اختيار Arduino as ISP كما في الخطوة السابقة واختر رفع البرنامج مثل برنامج Blink. لكن الأفضل رفع البرامج عبر محمل الإقلاع.

مراجع

3


Test User