هنا سنبني مشروعًا آخر باستخدام متحكم AVR Atmega16. إذا كنت جديدًا على المتحكمات الدقيقة AVR ، فيمكنك الرجوع إلى مشاريع AVR والبرامج التعليمية السابقة.
دائمًا ما يكون بناء روبوت أمرًا مثيرًا لجميع هواة الإلكترونيات. ويمكن تعظيم هذا التشويق إذا تمكن الروبوت من القيام ببعض الأشياء تلقائيًا دون أي تعليمات خارجية. يعد Line Follower Robot أحد أكثر الروبوتات شيوعًا التي تم إنشاؤها بواسطة مبتدئين في مجال الإلكترونيات. كما يوحي الاسم ، سيتبع الروبوت الخط المرسوم على السطح. لا يلزم أن يكون الخط خطاً مستقيماً. أيضا ، يمكن أن تكون الخطوط من أي ألوان.
لقد قمنا سابقًا ببناء مشاريع Line Follower Robot باستخدام وحدات تحكم مختلفة:
- روبوت تابع الخط باستخدام متحكم 8051
- خط أتباع روبوت باستخدام متحكم PIC
- روبوت تابع الخط باستخدام Arduino
- روبوت تابع الخط باستخدام Raspberry Pi
- روبوت تابع الخط باستخدام MSP430 Launchpad
اليوم سوف نستخدم متحكم AVR لبناء روبوت تابع الخط.
تستخدم معظم أجهزة استشعار الأشعة تحت الحمراء للكشف عن الخطوط. أجهزة استشعار الأشعة تحت الحمراء جيدة في الكشف عن الأسطح البيضاء أو السوداء. على الرغم من أنه يمكنك استخدام مستشعرات متطورة أخرى ستكون قادرة على اكتشاف جميع الألوان ويمكن أن تصنع روبوتًا يمكنه تتبع جميع خطوط الألوان. يجب أن يكون الروبوت قادرًا على اكتشاف الخط حتى إذا تم تغيير المسار عن طريق تغيير الزاوية والاستمرار في اتباع الخط. أيضًا ، يجب أن تتوقف أينما تأتي منطقة التوقف في الخط.
تُستخدم روبوتات تتبع الخط على نطاق واسع الآن في أيام الصناعة التحويلية والتطبيقات الطبية والمحلية ومستودعات البضائع. لا تقتصر الروبوتات على هذه التطبيقات فقط ويمكنها توسيع نطاق تطبيقاتها في العديد من التطبيقات المستقبلية.
مفهوم روبوت أتباع الخط
تعتبر مستشعرات الأشعة تحت الحمراء هي العامل الرئيسي في هذا المشروع يتم وضع مستشعرات الأشعة تحت الحمراء في الجانب الأمامي من الروبوت لتتبع الخط الأسود المرسوم والسطح. يتم وضع الروبوت بين الخط وبمساعدة مستشعرات الأشعة تحت الحمراء ، يتتبع الروبوت الخط. تقوم مستشعرات الأشعة تحت الحمراء بتغذية القراءة إلى الميكروكونترولر وبمساعدة قراءة الأشعة تحت الحمراء ، يقوم المتحكم الدقيق بتحريك المحركات إلى الجانب الأيسر أو الأيمن ثم يقوم بإحضار الروبوت مرة أخرى إلى المسار.
Line Follower Robot قادر على تتبع خط بمساعدة مستشعر الأشعة تحت الحمراء. يحتوي هذا المستشعر على جهاز إرسال IR وجهاز استقبال IR. يرسل مرسل IR (IR LED) الضوء وينتظر جهاز الاستقبال (Photodiode) الضوء المرسل للعودة مرة أخرى. لن يعود ضوء الأشعة تحت الحمراء إلا إذا انعكس بواسطة سطح ما. في حين أن جميع الأسطح لا تعكس ضوء الأشعة تحت الحمراء ، فإن اللون الأبيض فقط هو الذي يمكن أن يعكسها تمامًا وسيرصدها سطح اللون الأسود تمامًا كما هو موضح في الشكل أدناه. تعرف على المزيد حول وحدة مستشعر الأشعة تحت الحمراء هنا.
سنستخدم الآن مستشعرين يعملان بالأشعة تحت الحمراء للتحقق مما إذا كان الروبوت يسير على المسار الصحيح مع الخط ومحركين لتصحيح الروبوت إذا تحرك خارج المسار. تتطلب هذه المحركات تيارًا عاليًا ويجب أن تكون ثنائية الاتجاه ؛ ومن ثم نستخدم وحدة تشغيل محرك مثل L293D. سنحتاج أيضًا إلى متحكم مثل ATmega16 لتوجيه المحركات بناءً على القيم من مستشعر الأشعة تحت الحمراء. يظهر أدناه مخطط كتلة مبسط لنفسه.
سيتم وضع هذين المستشعرين بالأشعة تحت الحمراء واحدًا على جانبي الخط. إذا لم يكتشف أي من المستشعرات خطًا أسود ، فإن متحكم AVR يوجه المحركات للمضي قدمًا كما هو موضح أدناه
إذا جاء المستشعر الأيسر على الخط الأسود ، فإن المتحكم الدقيق يوجه الروبوت إلى الالتفاف يسارًا عن طريق تدوير العجلة اليمنى وحدها.
إذا جاء المستشعر الأيمن على الخط الأسود ، فإن المتحكم الدقيق يوجه الروبوت إلى الدوران لليمين عن طريق تدوير العجلة اليسرى وحدها.
إذا ظهر كلا المستشعرين على خط أسود ، يتوقف الروبوت.
بهذه الطريقة ، سيتمكن الروبوت من متابعة الخط دون الخروج عن المسار. الآن دعونا نرى كيف تبدو الدائرة والكود.
المكونات مطلوبة
- DC Gear Motors (وحدتان)
- وحدة مستشعر الأشعة تحت الحمراء (وحدتان)
- وحدة L293D
- مصدر طاقة لاسلكي (مثل البطارية وبنك الطاقة)
- كرسي الروبوت
- متحكم Atmega16 IC
- 16 ميجا هرتز الكريستال المذبذب
- اثنين من المكثفات 100nF
- مكثفتان 22pF
- اضغط الزر
- أسلاك توصيل
- اللوح
- USBASP v2.0 (لبرمجة Atmega16)
مخطط الرسم البياني
قم بتوصيل جميع المكونات كما هو موضح أدناه في مخطط الدائرة
برمجة Atmega16 لروبوت أتباع الخط
هنا تمت برمجة Atmega16 باستخدام USBASP و Atmel Studio7.0. إذا كنت لا تعرف كيف يمكن برمجة Atmega16 باستخدام USBASP ، فقم بزيارة الرابط. يتم تقديم البرنامج الكامل في نهاية المشروع ، ما عليك سوى تحميل البرنامج في Atmega16 باستخدام مبرمج JTAG و Atmel Studio 7.0 كما هو موضح في البرنامج التعليمي السابق.
لقد حاولنا أن نجعل الكود قصيرًا وبسيطًا قدر الإمكان. لذلك نحن نستخدم سجلات الوظائف الخاصة ووحدات الماكرو في هذا الكود.
if (bit_is_clear (PINA ، leftSen)) { // تحقق مما إذا كان المستشعر الأيسر مغلقًا
يتحقق هذا البيان مما إذا كان PA0 حيث تم توصيل المستشعر الأيسر منخفضًا أم مرتفعًا.
إذا كنت تريد معرفة المزيد حول هذا البيان ووحدات الماكرو الأخرى ، فانتقل إلى هذا الرابط
هناك أربعة شروط نتبعها لقراءة مستشعرات الأشعة تحت الحمراء. يتم تسمية مستشعرات الأشعة تحت الحمراء وفقًا لوضعها أمام الروبوت. IR الأيسر هو المستشعر الأيسر و IR الأيمن هو المستشعر الأيمن. تحدد الشروط التالية حركة الروبوت.
لقد كتبنا الكود وفقًا للشروط أعلاه. التغيير الوحيد هو أننا نستخدم دبابيس إدخال فقط من L293D لقيادة كلا المحركين.
كود كامل مع فيديو توضيحي موضح أدناه.