شرح الموضوع
وهي تتكون من محركين محرك لجهة اليمين ومحرك لجهة اليسار، لكل محرك يوجد ترانزستور دارلنغتون (TIP121) كسائق (Driver) يأخذ الإشارة من المتحكم (لوحة الأردوينو)، ويكبرها لتناسب طاقة المحرك.
الدرس ٤: تصميم وبرمجة روبوت سيّار
لاحظت في دراستك السابقة بعض العيوب من خلال تصميمك لروبوت، متتبع الخط البسيط ذا المجسين، سيتم التخلص من بعض العيوب من خلال تصميم وتنفيذ روبوت وتتبع الخط باستخدام متحكم الأردوينو وثلاثة مجسات، وبالتالي ستصبح قادراً على كتابة برنامج للتحكم في الروبوت، واقتراح تطوير على النظام المطبق وعلى التفكير في تطبيقات جديدة لنظام متكامل لاستخدامه في تطبيقات صناعية أو طبية.
أولاً: التصميم والتجميع الميكانيكي
يتم وضع التصميم للمخطط الميكانيكي للروبوت والذي يشبه المخطط المستخدم في الصف العاشر، بحيث يتم تحديد مواقع جميع القطع علي القاعدة البلاستيكية ومن ثم تثبيتها، وهذه القطع هي: 1 محرك (DC) مع صندوق التروس عدد 2، تعمل على جهد 4.5 فولت. 2 العجلات، عدد 2 وتثبت على محور الدوران للمحركات. 3 عجلة ارتكاز خلفية.

ثانياً: التصميم والتجميع الكهربائي
1 تصميم الدارة الكهربائية للمداخل
- وهي تحتوي على دارة المقارن والمجسات الثلاثة، كل واحد من هذه المجسات الثلاثة يتكون من مرسل ومستقبل IR، تعود الإشارة من المجس عبر المقارن ومنه الى مداخل الأردوينو.
- يتم استخدام الدارة المتكاملة LM324 لأنها تحتوي على أربع مقارنات، بحيث يستخدم ثلاث منها فقط كما هو موضح في الشكل الآتي:

توصيل دارة الدخل بلوحة الأردوينو:
- نوصل موجب دارة المداخل مع الطرف 5v من لوحة الأردوينو.
- نوصل سالب دارة المداخل مع طرف GND من لوحة الأردوينو.
- نوصل مخرج المقارن الخاص بالمجس الأيسر (L) بالطرف رقم 13 في لوحة الأردوينو.
- نوصل مخرج المقارن الخاص بالمجس الأوسط (M) بالطرف رقم 12 في لوحة الأردوينو.
- نوصل مخرج المقارن الخاص بالمجس الأيمن (R) بالطرف رقم 11 في لوحة الأردوينو.

2 تصميم الدارة الكهربائية للمخارج
وهي تتكون من محركين محرك لجهة اليمين ومحرك لجهة اليسار، لكل محرك يوجد ترانزستور دارلنغتون (TIP121) كسائق (Driver) يأخذ الإشارة من المتحكم (لوحة الأردوينو)، ويكبرها لتناسب طاقة المحرك. توصيل دارة الخرج بلوحة الأردوينو:
- نوصل الطرف رقم 5 بطرف مقاومة 1k، ثم نوصل طرف المقاومة الآخر بقاعدة الترانزستور الأيمن.
- نوصل الطرف رقم 6 بطرف مقاومة 1k، ثم نوصل طرف المقاومة الآخر بقاعدة الترانزستور الأيسر.
- نوصل طرفي الباعث من الترانزستورين بالرجل GND من لوحة الأردوينو.
- نوصل مجمع الترانزستور الأيمن مع سالب المحرك الأيمن.
- نوصل مجمع الترانزستور الأيسر مع سالب المحرك الأيسر.

ملاحظة مصدر الطاقة للمحركين مختلف عن مصدر الطاقة لدارة الدخل، فمثلاً يمكن استخدام بطارية (9) فولت) لتغذية دارة الدخل، ويمكن استخدام بطارية (6) فولت لتغذية المحركين).
3 التجميع النهائي للدارة الكهربائية
حيث تم استخدام لوحة الأردوينو كمتحكم في روبوت متتبع الخط والشكل التالي يوضح توصيل دارتي الدخل والخرج مع لوحة الأردوينو.

توصيل المداخل والمخارج بلوحة متحكم الأردوينو. قم بمعايرة المجسات من خلال تغيير قيمة المقاومات المتغيرة بحيث يضيء الثنائي الضوئي الموجود عند مخرج المقارن عند اللون الأبيض و يطفئ عند اللون الأسود للمسار.
تصميم جدول الحقيقة المناسب لمهمة الروبوت:
الجدول التالي يوضح جدول الحقيقة المستخدم في الروبوت لتتبع الخط الأسود على خلفية بيضاء.
| الدخل (حالة المجسات) | الحالة المطلوبة | الخرج (الأوامر للمحركات) | |||
|---|---|---|---|---|---|
| المجس الأيمن R (11) | المجس الأوسط M (12) | المجس الأيسر L (13) | حركة الروبوت | المحرك الأيمن R (5) | المحرك الأيسر L (6) |
| 0 | 0 | 0 | توقف الروبوت | 0 | 0 |
| 1 | 0 | 0 | اتجه يساراً | 1 | 0 |
| 0 | 1 | 0 | حالة مهملة (لا تحدث) | X | X |
| 1 | 1 | 0 | اتجه يساراً | 1 | 0 |
| 0 | 0 | 1 | اتجه يميناً | 0 | 1 |
| 1 | 0 | 1 | الى الأمام | 1 | 1 |
| 0 | 1 | 1 | اتجه يميناً | 0 | 1 |
| 1 | 1 | 1 | توقف الروبوت | 0 | 0 |
هل تعلم يوجد عدة أنواع من المحركات:
- محركات التيار المستمر DC Motors.
- المحركات المؤازرة - سيرفو Servo-Motors.
- المحركات الخطوية Stepper Motors.
قضية للنقاش هل يمكن استبدال محرك التيار المستمر DC Motors بمحرك يعمل على تيار متردد قيمته 220 فولتاً موضحا الأدوات اللازمة لذلك؟
البرنامج الخاص بروبوت متتبع الخط بالأردوينو:
اكتب البرنامج التالي في بيئة مبرمج الأردوينو، واعمل على تحميل البرنامج إلى الأردوينو، ثم افحص أداء الروبوت.
``
cpp int LSensor = 11; int MSensor = 12; int RSensor = 13; int Lmot = 6; int Rmot = 5; void setup() { pinMode(LSensor,INPUT); pinMode(MSensor,INPUT); pinMode(RSensor,INPUT); pinMode(Lmot,OUTPUT); pinMode(Rmot,OUTPUT); } void loop() { int Lval=digitalRead(LSensor); int Mval=digitalRead(MSensor); int Rval=digitalRead(RSensor); if(Lval==0&&Mval==0&&Rval==0) {digitalWrite(Rmot,LOW); digitalWrite(Lmot,LOW);} if(Lval==0&&Mval==0&&Rval==1) {digitalWrite(Rmot,HIGH); digitalWrite(Lmot,LOW);} if(Lval==0&&Mval==1&&Rval==1) {digitalWrite(Rmot,HIGH); digitalWrite(Lmot,LOW);} if(Lval==1&&Mval==0&&Rval==0) {digitalWrite(Rmot,LOW); digitalWrite(Lmot,HIGH);} if(Lval==1&&Mval==0&&Rval==1) {digitalWrite(Rmot,HIGH); digitalWrite(Lmot,HIGH);} if(Lval==1&&Mval==1&&Rval==0) {digitalWrite(Rmot,LOW); digitalWrite(Lmot,HIGH);} if(Lval==1&&Mval==1&&Rval==1) {digitalWrite(Rmot,LOW); digitalWrite(Lmot,LOW); } }``
أسئلة الدرس
1 ما ميزات استخدام ثلاثة مجسات بدلاً من مجسين في روبوت متتبع الخط؟ 2 ما ميزات استخدام لوحة الأردوينو في الروبوت ؟ 3 كيف تتم معايرة المجسات مع التوضيح؟ ماذا يحدث لو لم تتم المعايرة؟ 4 ما مكونات دارة الدخل في روبوت متتبع الخط باستخدام المقارن؟ أرسم المخطط لمجس واحد فقط.