- חומרים נדרשים:
- תפיסה של הימנעות ממכשולים מרובוט:
- תרשים מעגל והסבר:
- מתכנת לך מיקרו-בקר PIC:
- רובוט הימנעות מכשולים בפעולה:
רובוט הימנעות מכשולים הוא רובוט מפורסם נוסף אשר מתבל פרויקטים משובצים. לאלה שהם רובוט חדש להימנעות ממכשולים, זה פשוט רובוט גלגלים רגיל שיכול לנווט את דרכו מבלי להכות במכשולים כלשהם. ישנן דרכים רבות לבנות רובוט מונע מכשולים בפרויקט, אנו נשתמש בחיישן קולי אחד (קדמי) ושני חיישני IR (שמאל / ימין) כך שלרובוט שלנו יהיו עיניים בכל שלושת הכיוונים. בדרך זו תוכלו להפוך את זה לחכם ומהיר הרבה יותר על ידי גילוי עצמים משלושת הצדדים ותמרון בהתאם. כאן אנו תובעים את PIC Microcontroller PIC16F877A בגין מכשול זה בהימנעות מרובוט.
ניתן לצפות בהפעלת מכשול המונע רובוט ממוצר בזמן אמת הנקרא רובוטים לניקוי הבית. למרות שהטכנולוגיה והחיישנים המשמשים בהם מורכבים בהרבה, הרעיון נשאר זהה. בואו נראה כמה אנחנו יכולים להשיג באמצעות החיישנים הרגילים שלנו ומיקרו בקרי PIC.
בדוק גם את הרובוטים האחרים של הימנעות ממכשולים שלנו:
- מכשול מבוסס פטל על הימנעות מרובוט
- רובוט ניקוי אבק חכם DIY באמצעות Arduino
חומרים נדרשים:
- PIC16F877A
- חיישן IR (2Nos)
- חיישן קולי (1Nos)
- מנוע הילוכים DC (2Nos)
- נהג מנוע L293D
- שזלולות (ניתן לבנות בעצמכם גם באמצעות קרטונים)
- בנק כוח (כל מקור כוח זמין)
תפיסה של הימנעות ממכשולים מרובוט:
הרעיון של הימנעות מרובוט הוא פשוט מאוד. אנו משתמשים בחיישנים כדי לזהות נוכחות של אובייקטים סביב הרובוט ומשתמשים בנתונים אלה כדי לא להתנגש ברובוט מעל אותם אובייקטים. כדי לזהות אובייקט נוכל להשתמש בכל חיישני שימוש כמו חיישן IR וחיישן אולטרה סאונד.
ברובוט שלנו השתמשנו בחיישן האמריקאי כחיישן קדמי ושני חיישני IR עבור שמאל וימין בהתאמה. הרובוט יתקדם כאשר אין אובייקט לפניו. אז הרובוט יתקדם עד שהחיישן הקולי (ארה"ב) יזהה אובייקט כלשהו.
כאשר אובייקט מתגלה על ידי החיישן האמריקני, הגיע הזמן לשנות את כיוון הרובוט. אנו יכולים לפנות שמאלה או ימינה, כדי להחליט על כיוון הפנייה אנו משתמשים בעזרת חיישן IR כדי לבדוק אם קיים אובייקט ליד הצד השמאלי או הימני של הרובוט.
אם מתגלה התנגדות בחלק הקדמי והימני של הרובוט, אז הרובוט יחזור ויפנה שמאלה. אנו גורמים לרובוט לרוץ אחורה למרחק מסוים כדי שלא יתנגש על האובייקט בזמן ביצוע הסיבוב.
אם מתגלה התנגדות בחלק הקדמי והשמאלי של הרובוט, אז הרובוט יחזור ויפנה ימינה.
אם הרובוט יגיע לפינת החדר הוא יחוש אובייקט הקיים בכל ארבעתם. במקרה זה עלינו להסיע את הרובוט לאחור עד שכל אחד מהצדדים יהיה חופשי.
מקרה אפשרי נוסף הוא שיהיה אובייקט מלפנים אך לא יכול להיות שיש אובייקט לא בצד שמאל ולא בצד ימין, במקרה זה עלינו לפנות באופן אקראי לכל כיוון.
מקווה שזה היה נותן מושג גס על אופן הפעולה של הימנעות מכשולים, עכשיו בואו נמשיך בתרשים המעגלים כדי לבנות את הבוט הזה וליהנות ממנו בפעולה.
תרשים מעגל והסבר:
תרשים המעגל השלם של רובוט זה שמונע מכשולים המבוסס על PIC מוצג בתמונה לעיל. כפי שניתן לראות השתמשנו בשני חיישני IR לאיתור עצמים משמאלו וימין של הרובוט בהתאמה ובחיישן אולטרסאונד למדידת מרחק האובייקט שנמצא לפני הרובוט. השתמשנו גם במודול נהג מנוע L293D כדי להניע את שני המנוע הקיים בפרויקט זה. אלה הם פשוט מנועי הילוך DC רגילים לגלגלים ולכן ניתן להפיק אותם בקלות רבה. הטבלה הבאה תסייע לכם בקשרים.
S.No |
מחובר מ |
מחובר ל |
1 |
חיישן IR השאיר סיכה |
RD2 (סיכה 21) |
2 |
חיישן IR ישר החוצה סיכה |
RD3 (סיכה 22) |
4 |
מנוע 1 ערוץ סיכה |
RC4 (סיכה 23) |
5 |
מנוע 1 סיכה של ערוץ B |
RC5 (סיכה 25) |
6 |
מנוע 2 ערוץ סיכה |
RC6 (סיכה 26) |
7 |
מוט 2 ערוץ B סיכה |
RC7 (סיכה 27) |
8 |
סיכת הדק של ארה"ב |
RB1 (סיכה 34) |
9 |
סיכת הד בארה"ב |
RB2 (סיכה 35) |
מודול נהג מנוע כמו L293D הוא חובה מכיוון שלא ניתן להשיג את כמות הזרם הנדרשת להפעלת מנוע הילוך DC על ידי פין הקלט / פלט של מיקרו-בקר PIC. החיישנים והמודול מופעלים על ידי אספקת + 5V שמווסתת על ידי 7805. ניתן להפעיל את מודול מנהל התקן המנוע אפילו באמצעות +12 וולט, אך עבור פרויקט זה דבקתי בדיוק ב- + 5V הזמינים.
הרובוט השלם מופעל על ידי בנק כוח במקרה שלי. אתה יכול גם להשתמש בכל בנק כוח רגיל ולעבור את סעיף הרגולטור או להשתמש במעגל שלעיל ולהשתמש בכל סוללת 9V או 12V עבור הרובוט, כפי שמוצג בתרשים המעגל לעיל. לאחר סיום החיבורים שלך זה ייראה משהו כזה למטה
מתכנת לך מיקרו-בקר PIC:
לתכנת את ה- PIC שלך לעבודה עבור הימנעות ממכשולים זה ממש קל. עלינו רק לקרוא את הערך של שלושת החיישנים הללו ולהניע את המוטורים בהתאם. בפרויקט זה אנו משתמשים בחיישן קולי. כבר למדנו כיצד להתממשק אולטרסאונד עם מיקרו-בקר PIC, אם אתה חדש כאן, אנא חזור לאותו הדרכה כדי להבין כיצד חיישן אמריקאי עובד עם PIC, מכיוון שאדלג על הפרטים אודותיו כאן כדי למנוע חזרה.
תוכנית מלאה או רובוט זו ניתנת בסוף הדף הזה, יש לי עוד הסביר את נתחי חשוב של התוכנית מתחת.
כידוע כל התוכניות מתחילות בהצהרות סיכות קלט ופלט. כאן ארבעת הפינים של מודול דרייבר המנוע וסיכות הדק הם פינים היציאה, בעוד שסיכת ההד ושני סיכות ה- IR החוצה יוכנסו. עלינו לאתחל את מודול טיימר 1 כדי להשתמש בו עם החיישן האולטראסוני.
TRISD = 0x00; // PORTD הוכרז כפלט לממשק LCD TRISB1 = 0; // סיכת הדק של חיישן ארה"ב נשלחת כסיכת פלט TRISB2 = 1; // סיכת הד של חיישן ארה"ב מוגדרת כסיכת כניסה TRISB3 = 0; // RB3 הוא פין פלט עבור LED TRISD2 = 1; TRISD3 = 1; // שני סיכות חיישן ה- IR מוכרזות כקלט TRISC4 = 0; TRISC5 = 0; // סיכות מנוע 1 שהוכרזו כפלט TRISC6 = 0; TRISC7 = 0; // מנוע 2 פינים שהוכרז כמוצא T1CON = 0x20;
בתוכנית זו נצטרך לבדוק את המרחק בין החיישן לאובייקט לעתים קרובות למדי, לכן יצרנו פונקציה בשם calc_distance () שבתוכה נמדוד את המרחק לפי השיטה שנדונה במדריך הממשק לחיישנים בארה"ב. הקוד מופיע למטה
חלל calc_distance () // פונקציה לחישוב המרחק של ארה"ב {TMR1H = 0; TMR1L = 0; // נקה את סיביות הטיימר טריגר = 1; __השהיית_ (10); טריגר = 0; ואילו (הד == 0); TMR1ON = 1; ואילו (הד == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); מרחק = (0.0272 * זמן לקח) / 2; }
השלב הבא יהיה להשוות את הערכים של חיישן קולי וחיישן IR ולהעביר את הרובוט בהתאם. כאן בתוכנית זו השתמשתי בערך ס"מ כמרחק הקריטי שמתחתיו הרובוט צריך להתחיל לבצע שינויים בכיוון. אתה יכול להשתמש בערכים המועדפים עליך. אם אין חפץ הרובוט פשוט מתקדם
אם (מרחק> 5) {RC4 = 0; RC5 = 1; // מנוע 1 קדימה RC6 = 1; RC7 = 0; // מנוע 2 קדימה}
אם מתגלה אובייקט, הרי שהמרחק יירד מתחת לס"מ. במקרה זה אנו רואים את הערכים של חיישן אולטרה סאונד שמאלי וימין. בהתבסס על ערך זה אנו מחליטים לפנות שמאלה או לפנות ימינה. נעשה שימוש בעיכוב של ms כך שהשינוי הוא כיוון גלוי.
אם (RD2 == 0 && RD3 == 1 && מרחק <= 5) // החיישן השמאלי חסום {back_off (); RC4 = 1; RC5 = 1; // מנוע 1 עצור RC6 = 1; RC7 = 0; // מנוע 2 קדימה __השהיית_מס (500); } calc_distance (); אם (RD2 == 1 && RD3 == 0 && מרחק <= 5) // החיישן הימני חסום {back_off (); RC4 = 0; RC5 = 1; // מנוע 1 קדימה RC6 = 1; RC7 = 1; // מנוע 2 עצור __השהיית_מס (500); }
לפעמים החיישן האולטרא-סאונד יזהה אובייקט, אך לא אובחן אובייקט על ידי חיישני ה- IR. במקרה זה הרובוט פונה שמאלה כברירת מחדל. אתה יכול גם לגרום לו לפנות ימינה או בכיוון אקראי על סמך העדפותיך. אם יש חפצים משני הצדדים אז אנחנו גורמים לו ללכת אחורה. הקוד לביצוע אותו הדבר מוצג להלן.
מרחק_חישוב (); אם (RD2 == 0 && RD3 == 0 && מרחק <= 5) // שני החיישן פתוח {back_off (); RC4 = 0; RC5 = 1; // מנוע 1 קדימה RC6 = 1; RC7 = 1; // מנוע 2 עצור __השהיית_מס (500); } calc_distance (); אם (RD2 == 1 && RD3 == 1 && מרחק <= 5) // שני החיישן חסום {back_off (); RC4 = 1; RC5 = 0; // מנוע 1 הפוך RC6 = 1; RC7 = 1; // מנוע 2 עצור __השהיית_מס (1000); }
רובוט הימנעות מכשולים בפעולה:
עבודת הפרויקט מאוד מעניינת ומהנה לצפייה. לאחר שתסיים עם המעגל והקוד שלך, פשוט הפעל את הבוט שלך והשאיר אותו על הקרקע. זה אמור להיות מסוגל לזהות מכשולים ולהימנע מהם בצורה חכמה. אבל, כאן מגיע החלק המהנה. אתה יכול לשנות את הקוד ולגרום לו לעשות יותר דברים כמו לגרום לו להימנע ממדרגות, להפוך אותו לחכם יותר על ידי אחסון פניות יקרות ומה לא?
הרובוט הזה יעזור לך להבין את בסיסי התכנות וללמוד כיצד חומרה ממשית תגיב לקוד שלך. תמיד כיף לתכנת את הרובוט הזה ולראות איך הוא מתנהג לקוד בעולם האמיתי.
כאן השתמשנו באותו לוח PIC perf שהכנו עבור LED מהבהב באמצעות מיקרו-בקר PIC והשתמשנו בלוח זה בפרויקטים אחרים של סדרת ההדרכה של PIC.
הרובוט שלך אמור להראות משהו דומה לזה שמוצג בתמונה למעלה. העבודה המלאה של פרויקט זה מוצגת בסרטון להלן.
מקווה שהבנתם את הפרויקט ונהניתם לבנות. אם יש לך ספקות או נתקעת, תוכל להשתמש בסעיף ההערות כדי לפרסם את שאלותיך ואשתדל כמיטב יכולתי לענות עליהן.