כאן נבנה פרויקט נוסף עם מיקרו בקר AVR Atmega16. אם אתה חדש במיקרו-בקרים של AVR, אתה יכול להתייחס לפרויקטים ומדריכים קודמים של AVR.
בניית רובוט היא תמיד ריגוש לכל חובבי האלקטרוניקה. ואפשר למקסם את הריגוש הזה אם הרובוט יכול לעשות דברים באופן אוטומטי ללא כל הוראות חיצוניות. אחד הרובוט שנבנה לרוב על ידי מתחילים בתחום האלקטרוניקה הוא רובוט העוקבים. כפי שהשם מרמז הרובוט יעקוב אחר הקו המצויר על פני השטח. הקו לא צריך להיות קו ישר. כמו כן, קווים יכולים להיות מכל צבע.
בנינו בעבר פרויקטים של רובוטים עוקבים באמצעות בקרים שונים:
- רובוט עוקב קו באמצעות מיקרו-בקר 8051
- רובוט עוקב קו באמצעות מיקרו-בקר PIC
- רובוט עוקב קו באמצעות ארדואינו
- רובוט עוקב קו באמצעות פטל פטל
- רובוט עוקב קו באמצעות MSP430 Launchpad
היום נשתמש במיקרו בקר AVR לבניית רובוט עוקב קו.
בעיקר חיישני IR משמשים לזיהוי קווים. חיישני ה- IR טובים בזיהוי משטחים לבנים או שחורים. למרות שאתה יכול להשתמש בחיישנים מתוחכמים אחרים אשר יוכלו לזהות את כל הצבעים ויכולים ליצור רובוט שיכול לעקוב אחר כל קווי הצבע. הרובוט אמור להיות מסוגל לזהות קו גם אם הנתיב משתנה על ידי שינוי הזווית ולהמשיך לעקוב אחר הקו. כמו כן, עליו להפסיק בכל מקום שאזור העצירה מגיע בשורה.
נעשה שימוש נרחב ברובוטים של עוקבים אחר כיום בתעשיות ייצור, יישומים רפואיים, יישומים מקומיים ומחסן מוצרים. הרובוטים אינם מוגבלים רק ליישומים אלה ויכולים להרחיב את יישומיהם ביישומים עתידיים רבים.
קונספט של רובוט עוקב קו
חיישני ה- IR הם שחקן המפתח בפרויקט זה. חיישני IR ממוקמים בצד הקדמי של הרובוט כדי לעקוב אחר הקו השחור המצויר והמשטח. הרובוט ממוקם בין הקו ובעזרת חיישני IR הרובוט עוקב אחר הקו. חיישני IR משדרים את הקריאה למיקרו-בקר ובעזרת קריאת IR המיקרו-בקר מזיז מנועים מצד שמאל או צד ימין ושוב מביא את הרובוט לנתיב.
רובוט עוקב הקו מסוגל לעקוב אחר קו בעזרת חיישן IR. לחיישן זה משדר IR ומקלט IR. משדר ה- IR (IR LED) משדר את האור והמקלט (פוטודיודה) ממתין שהאור המשודר יחזור חזרה. אור IR יחזור רק אם הוא מוחזר על ידי משטח. בעוד שכל המשטחים אינם מחזירים אור IR, רק משטח הצבע הלבן יכול לשקף אותם לחלוטין ומשטח הצבע השחור יתבונן בהם לחלוטין כפי שמוצג באיור למטה. למידע נוסף על מודול חיישני IR כאן.
כעת נשתמש בשני חיישני IR כדי לבדוק אם הרובוט נמצא במסלול עם הקו ובשני מנועים כדי לתקן את הרובוט אם הוא יוצא מחוץ למסלול. מנועים אלה דורשים זרם גבוה וצריכים להיות דו כיווניים; לפיכך אנו משתמשים במודול נהג מנוע כמו L293D. נצטרך גם מיקרו-בקר כמו ATmega16 שינחה את המנועים על בסיס הערכים של חיישן ה- IR. דיאגרמת גוש פשוטה של אותה מוצגת להלן.
שני חיישני IR אלה יוצבו אחד משני צידי הקו. אם אף אחד מהחיישנים אינו מזהה קו שחור, אז מיקרו-בקר ה- AVR מורה למנועים להתקדם כפי שמוצג להלן
אם החיישן השמאלי מגיע לקו שחור, המיקרו-בקר מורה לרובוט לפנות שמאלה על ידי סיבוב הגלגל הימני לבדו.
אם החיישן הימני מופיע בקו שחור, המיקרו-בקר מורה לרובוט לפנות ימינה על ידי סיבוב הגלגל השמאלי לבדו.
אם שני החיישנים מגיעים על קו שחור, הרובוט עוצר.
בדרך זו הרובוט יוכל לעקוב אחר הקו מבלי לצאת מחוץ למסלול. עכשיו בואו נראה איך המעגל והקוד נראים.
רכיבים נדרשים
- מנועי הילוך DC (2 יחידות)
- מודול חיישן IR (2 יחידות)
- מודול L293D
- מקור חשמל אלחוטי (למשל סוללה, בנק כוח)
- שידות רובוט
- מיקרו-בקרת Atmega16
- מתנד קריסטל 16Mhz
- שני קבלים 100nF
- שני קבלים 22pF
- לחץ על הכפתור
- חוטי מגשר
- קרש לחם
- USBASP v2.0 (לתכנות Atmega16)
תרשים מעגל
חבר את כל הרכיבים כפי שמוצג להלן בתרשים המעגלים
תכנות Atmega16 לרובוט עוקב קו
כאן ה- Atmega16 מתוכנת באמצעות USBASP ו- Atmel Studio7.0. אם אינך יודע כיצד ניתן לתכנת את Atmega16 באמצעות USBASP, היכנס לקישור. התוכנית המלאה ניתנת בסוף הפרויקט, פשוט העלה את התוכנית ל- Atmega16 באמצעות מתכנת JTAG ו- Atmel Studio 7.0 כמוסבר בהדרכה הקודמת.
ניסינו לשמור על הקוד קצר ופשוט ככל האפשר. אז אנו משתמשים במאקרו ורישומי פונקציות מיוחדות בקוד זה.
אם (bit_is_clear (PINA , leftSen)) { // בדוק אם החיישן השמאלי אינו פעיל
הצהרה זו בודקת אם ה- PA0 שבו מחובר החיישן השמאלי הוא LOW או HIGH.
אם אתה רוצה ללמוד עוד על הצהרה זו ועל פקודות מאקרו אחרות, היכנס לקישור זה
ישנם ארבעה תנאים שאנו עוקבים אחר קריאת חיישני IR. חיישני IR נקראים על פי מיקומם בחזית הרובוט. ה- IR השמאלי הוא החיישן השמאלי וה- IR הימני הוא החיישן הימני. התנאים הבאים יחליטו על תנועת הרובוט.
כתבנו את הקוד על פי התנאים לעיל. השינוי היחיד הוא שאנחנו משתמשים רק בשתי סיכות קלט של ה- L293D כדי להניע את שני המנועים.
הקוד המלא עם סרטון הדגמה מופיע להלן.