اجعل مشروع Line Follower Robot for Science Fair هذا

جرب أداة القضاء على المشاكل





في هذا المنشور ، نتعلم كيفية إنشاء دائرة روبوت تتبع الخط باستخدام Arduino ، والتي ستعمل على تخطيط خط مرسوم خصيصًا وستتبعه بأمانة طالما أنه متاح ويمكن تتبعه بواسطة مستشعراته.

بقلم نافنيت سجوان



ما هو روبوت تابع الخط

الروبوت المستقل عبارة عن آلة يمكنها اتخاذ سلسلة من الإجراءات حسب تعليمات المبرمج ، دون أن يتحكم بها إنسان يدويًا في الوقت الفعلي.

متابعو الخط (LFRs) هم أيضًا سيارات روبوت مستقلة يتم توجيهها بواسطة واحد أو أكثر من أجهزة الاستشعار ومسار خط أسود أو أبيض. إنها تشكل أساس السيارات الحديثة ذاتية القيادة.



مثل كل روبوت مستقل ، يمتلك متابعو الخطوط وحدة معالجة الإشارات واتخاذ القرار وأجهزة الاستشعار والمشغلات. إذا كنت مبتدئًا في مجال الروبوتات وترغب في التعامل معه بجدية ، فهذا هو المكان الذي يجب أن تبدأ منه. دعونا نبدأ في صنعه.

لقد استخدمت مستشعرين يعملان بالأشعة تحت الحمراء وقيادة ثلاثية العجلات لعمل هذا المشروع. الحد الأدنى لعدد المستشعرات التي يمكن استخدامها هو واحد و 8 كحد أقصى كافية للخط المعتمد على PID.

المكونات المطلوبة:

اردوينو أونو

الهيكل

محركان يعملان بالبطارية (b.o.) وإطارات متوافقة

كرة الخروع

اثنين من أجهزة الاستشعار بالأشعة تحت الحمراء

وحدة سائق المحرك

مزود الطاقة

برنامج Arduino IDE

الآن ، دعونا نلقي نظرة على مكوناتنا:

أردوينو وان : تخيل أنها غرفة التحكم في الروبوت لدينا. الآن ، هناك الكثير من لوحات التطوير ، التي تم أخذها في الاعتبار لهذا المشروع ، لكن Arduino UNO لم يكن ببساطة يضاهي الآخرين. ليس الأمر أن بطل الرواية كان متفوقًا من حيث ميزاته المتعددة الأبعاد.

إذا كان هذا هو الحال ، لكان Raspberry Pi و Intel Edison قد صفعوه بين العينين. تم تشكيل الحجج الأكثر إقناعًا التي أدت إلى اختيار Arduino UNO من خلال مزيج من الميزات والسعر والحجم ومتطلبات المشروع.

كانت بعض الأسباب ذات الصلة:

بحجم : إنها صغيرة جدًا مقارنة بلوحات التطوير القائمة على Atmega16 أو Atmega8 ، وتستهلك مساحة صغيرة على الهيكل ، لذلك تحصل على روبوت صغير الحجم وسهل الاستخدام.

هذا مهم حقًا في مسابقات الروبوتات. صدقني أنك ستكره التجوال مع هذا الروبوت القبيح الكبير ، وتغيير الأماكن طوال اليوم.

أصغر حجمًا ، وأسرع الروبوت وأكثر كفاءة في المنعطفات.

أفضل لوحة تمثيل : مما لا شك فيه أن Arduino UNO لديه أفضل مزيج من الميزات لـ النماذج . بمجرد أن تصبح الدوائر الخاصة بك في مكانها ويعمل مشروعك بشكل مثالي ، يمكنك استبداله بشيء أصغر وأرخص مثل Arduino Nano و Attiny85 ic.

بالنسبة لأولئك ، الذين يصنعون متابعين لمشاريع الكلية ، أقترح استبدال UNO بـ Nano في النهاية.

الشاسيه : إنه الإطار الذي يحمل جميع المكونات في موضعها. هناك بعض النقاط التي يجب مراعاتها عند شراء هيكل جديد ،

يجب أن تكون خفيفة الوزن وقوية.

بالنسبة للمشاريع ، من الأفضل أن تشتري واحدة من السوق. لكن إذا كنت تستعد للمنافسة ، أقترح بشدة أن تقوم بتخصيص المنافسة الخاصة بك ، مع مراعاة أبعاد ومتطلبات المنافسة.

اختر هيكلًا بلاستيكيًا أو خشبيًا. عندما تتلامس الإطارات المعدنية مع Arduino ، يتم تقصير عدد من المسامير. هذا عامل كبير يجب التركيز عليه أثناء البحث عن الهيكل.

حافظ على الهيكل منخفضًا قدر الإمكان - فهذا يمنح الروبوت ثباتًا.

المحركات : استخدم بطارية خفيفة الوزن (B.O.) تيار مستمر. المحركات.

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

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

أجهزة الاستشعار : هو جهاز يكتشف أو يقيس أي معلمة فيزيائية لبيئتنا ويحولها إلى إشارات كهربائية. في هذه الحالة المعلمة المكتشفة هي الأشعة تحت الحمراء.

تعتبر المستشعرات أساسية للغاية لأي روبوت. حسنًا ، إذا كان اردوينو هو دماغ الروبوت ، فقد تلعب المستشعرات دور العيون أيضًا. إليك بعض الأشياء عن المستشعرات:

يجب أن تكون أجهزة الاستشعار موجهة بطريقة تجعلها تواجه الأرض.

يجب وضعه في مقدمة برنامج الروبوت الخاص بك.

يجب أن يكون الحد الأدنى للتباعد بينهما أكبر من عرض الخط الأسود.

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

في حالتنا ، يمكن أن يوفر Arduino جهدًا كافيًا لتشغيل المحركات ولكنه لا يمكنه توفير تيار وافر. دبابيس Arduino UNO ذات 5 فولت و GND لها تصنيف حالي يبلغ 200 مللي أمبير في حين أن أي دبوس GPIO له تصنيف 40 مللي أمبير. هذا أقل بكثير من محركات التيارات التي نحتاجها في البداية والمماطلة.

هناك نوعان من المحركات التي أفضلها لهذا المشروع: L298N و L293D. كلاهما مناسب بنفس القدر لصنع هذا المشروع.

رغم ذلك، L293D أرخص نسبيًا ولكن لديه تصنيف حالي منخفض. اتصالاتهم هي نفسها تقريبا. منذ ذلك الحين ، قدمت الاتصالات لكليهما ، الأمر متروك لك تمامًا في كيفية إنشاء الروبوت الخاص بك.

مزود الطاقة :

استخدم محول 12 فولت أو بطارية (لا تزيد عن 12 فولت).

وضع المكونات (من الأمام إلى الخلف):

مجسات في رأس الروبوت الخاص بك.

عجلة الخروع في المنتصف.

المحركات والإطارات في سطر واحد في الخلف.

روابط:

مجسات لأردوينو :

قم بتوصيل دبوس المستشعر بدبوس اردوينو كما هو موضح ،

دبوس الاستشعاردبوس اردوينو
VCC (5 فولت)5 فولت
GND (G)GND
خرج جهاز الاستشعار الأيسر (هل)دبوس 6
خروج المستشعر الأيمن (هل)دبوس 7

ملاحظة: للتحقق مما إذا كانت أجهزة الاستشعار الخاصة بك قيد التشغيل ، وجّه كاميرا هاتفك الخلوي إلى جهاز إرسال الأشعة تحت الحمراء. سترى إضاءة متوهجة على الشاشة لا يمكن رؤيتها بالعين المجردة. تحتوي بعض كاميرات الهواتف المحمولة الحديثة على مرشح الأشعة تحت الحمراء. لذا ، يرجى أخذ ذلك في الاعتبار.

محرك لسائق محرك:

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

محركL298NL293D
المحرك الأيسررقم التعريف الشخصي 1 و 2رقم التعريف الشخصي 7 و 8
المحرك الصحيحرقم التعريف الشخصي 13 و 14رقم التعريف الشخصي 9 و 10

سائق المحرك إلى أردوينو أونو:

سائق المحرك (L298N)أردوينو وان
رقم التعريف الشخصي 4نبيذ
رقم التعريف الشخصي 5GND
رقم التعريف الشخصي 65 فولت
رقم التعريف الشخصي 8 ورقم التعريف الشخصي 9رقم التعريف الشخصي 3 ورقم التعريف الشخصي 9
رقم التعريف الشخصي 10 ورقم التعريف الشخصي 11رقم التعريف الشخصي 5 ورقم التعريف الشخصي 10
رقم التعريف الشخصي 7 ورقم التعريف الشخصي 125 فولت
سائق المحرك (L293D)أردوينو وان
رقم التعريف الشخصي 3نبيذ
رقم التعريف الشخصي 2GND
رقم التعريف الشخصي 15 فولت
رقم التعريف الشخصي 5 ورقم التعريف الشخصي 6رقم التعريف الشخصي 3 ورقم التعريف الشخصي 9
رقم التعريف الشخصي 11 ورقم التعريف الشخصي 12رقم التعريف الشخصي 5 ورقم التعريف الشخصي 10
رقم التعريف الشخصي 4 ورقم التعريف الشخصي 55 فولت

ملحوظة: يتم استخدام الدبابيس 8 و 9 من l298n للتحكم في المحرك المتصل بـ 1 و 2. ومحرك تحكم 10 و 11 متصل بالدبابيس 13 و 14 وبالمثل ، يتم استخدام الدبابيس 5 و 6 من l293d للتحكم في المحرك المتصل 7 و 8. و 12 و 11 محرك تحكم متصل بالدبابيس 9 و 10.

نحن هنا شباب ، حتى نهاية جزء التصميم. لا يزال لدينا الترميز الذي يجب القيام به ولكن قبل ذلك سوف ننتقل إلى المبادئ التي تسمح باتباع السطر.

كيف يعمل مستشعر الأشعة تحت الحمراء:

يمكن استخدام مستشعرات الأشعة تحت الحمراء (مستشعرات الأشعة تحت الحمراء) لاستشعار التباين في الألوان وقرب الأشياء منها. المبدأ الكامن وراء عمل مستشعر الأشعة تحت الحمراء أساسي جدًا.

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

هذا يولد إشارة رقمية يمكن تغذيتها للميكروكونترولر والمشغلات لاتخاذ الإجراءات اللازمة عند مواجهة عقبة.

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

كيف يعمل روبوت أتباع الخط:

LINE FOLLOWER LAYOUT

في الحالة العادية ، يتحرك الروبوت بطريقة تجعل كلا المستشعرين فوق الأبيض ويكون الخط الأسود وسط كلا المستشعرين.

إنه مبرمج لتدوير كلا المحركين بحيث يتحرك الروبوت في الاتجاه الأمامي.

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

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

وبالمثل ، عندما يتخطى المستشعر الأيمن الخط الأسود ، يتم إيقاف المحركات اليمنى وبالتالي يتحول الروبوت الآن نحو اليمين ما لم يعود المستشعر على سطح أبيض. تُعرف آلية الدوران هذه بآلية القيادة التفاضلية.

مخطط الرسم البياني:

تفاصيل الأسلاك:

البرمجة والمفاهيم:

بعد الانتهاء من جزء الدائرة ، سننتقل الآن إلى جزء البرمجة. في هذا القسم ، سوف نفهم البرنامج الذي يتحكم في الروبوت الخاص بنا. هذا هو الكود: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

وصف الوظائف المستخدمة:

read_sensors (): يأخذ قراءات كل من المستشعرات ويخزنها في المتغيرات اليسرى واليمنى.

move_forward (): عندما ينفذ arduino هذه الوظيفة ، يتحرك كلا المحركين في الاتجاه الأمامي.

turn_left (): توقف المحرك الأيسر. يستدير البوت إلى اليسار.

turn_right (): يتوقف المحرك الأيمن. يستدير البوت لليمين.

توقف (): توقف البوت.

print_readings (): يعرض قراءات أجهزة الاستشعار على الشاشة التسلسلية. لهذا عليك إلغاء التعليق 'Serial.begin (9600)' في إعداد باطل.

قراءات المستشعر:

مستشعر عبر الخطقراءات المستشعر
اليسارحق
المستشعر الأيسر01
جهاز استشعار صحيح10
لا أحد11
على حد سواء00

التحكم في السرعة:

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

لتجنب مثل هذه الظروف ، نقوم بتقليل سرعة الروبوت باستخدام تقنية PWM. في الكود أعلاه يوجد متغير اسمه القيمة.

ما عليك سوى تقليل القيمة العددية في الوظيفة لتقليل السرعة. في Arduino UNO ، يمكنك الحصول على قيم pwm بين 0 و 255 فقط.

analogWrite (رقم التعريف الشخصي ، القيمة)

0<= value <=255

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




السابق: سيارة روبوت يتم التحكم فيها بواسطة الهاتف المحمول باستخدام وحدة DTMF التالي: مفتاح تشغيل / إيقاف تشغيل التيار المتردد المتحكم فيه بكلمة مرور