אחרי שבדקתי את האביזרים הנלווים, הגיע הזמן לבחון את הרובוט עצמו. האם עוד אפשר לעשות איתו משהו כרובוט, או שהוא גמור ומתאים רק כמקור לכמה רכיבים יד שנייה?
הסוללה שהגיעה עם הרובוט הייתה סוללת NiMH, מתח נקוב 14.4V (כלומר 12 תאים), וקיבולת 2100mAh. היא הייתה, כמובן, ריקה, ולא במפתיע הסתבר שהיא גם מחוסלת. אפילו טעינות נמרצות לא הספיקו אלא לדקה של פעולה. סוללה חלופית מדגם כזה עולה בסין כ-30 דולר כולל המשלוח, ולא הייתה לי שום כוונה להזמין כזו עד שאדע אם הרובוט עצמו עוד יצלח למשהו.
מהר מאוד הסתבר שאכן יש לו בעיה רצינית. אחרי כל הדלקה, כעבור שניות ספורות של פעולה, הגלגל השמאלי הפסיק להסתובב והרובוט לא היה מסוגל לנסוע ישר (בלי קשר לתוכנית ניקוי, פשוט בפקודות מהשלט). סקירה זריזה העלתה שמכלול הגלגל כולו (הגלגל, המנוע והתמסורת) מתנודד בצורה לא טבעית. האם זו הבעיה? הגיע הזמן לפתוח את הפלסטיקים, ובאותה הזדמנות לראות מה עוד יש בפנים…
חיישנים
הרובוט כלל חיישנים רבים, משלושה סוגים: מכניים (מפסקי Microswitch), מגנטיים, ואופטיים (אינפרה-אדום). מפסק אחד וידא שמיכל איסוף האבק נמצא במקום – ניתקתי וקיצרתי את החוטים שלו כדי "לעבוד" על הרובוט כאילו המיכל אכן שם – ושניים אחרים ניצבו אחד מול כל מכלול גלגל. המכלול נמשך באמצעות קפיץ כלפי מטה, כך שאם מסיבה כלשהי הרובוט מתרומם יותר מדי והמשקל שלו לא לוחץ מספיק, המכלול עצמו יורד, המפסק משתחרר והרובוט יודע שמשהו לא בסדר.
לרובוט יש גם פגוש קפיצי לזיהוי מכשולים. לכאורה, גם שם אפשר היה להתקין מפסק או שניים, אך מסיבה כלשהי המתכננים בחרו להציב מגנטים בפגוש וחיישני Hall effect על השילדה, מתחתם וקצת מאחוריהם. כשהפגוש נלחץ פנימה כתוצאה מהתנגשות, המגנטים נלחצים ביחד איתו עד שהם ניצבים בדיוק מעל החיישנים.
חיישן נוסף, שבהתחלה אפילו לא זיהיתי שהוא מגנטי, הסתתר בתחתית השלדה במקום שנראה לא קשור לכלום. בשלב ראשון חשבתי שאולי הוא קשור למשהו בעמדת הטעינה, כאמצעי לזיהוי האוריינטציה הנכונה, אבל בפלסטיק של עמדת הטעינה מתחת לרובוט לא היה דבר. אז נזכרתי שבמדריך למשתמש דובר על פס מגנטי שאפשר להדביק על הרצפה כדי להגביל את אזור העבודה של הרובוט. החיישן המסתורי, אם כך, נועד לזהות אותו.
שאר החיישנים הם קולטי אינפרה-אדום פשוטים. לחלקם הוסיפו לדים באינפרה-אדום כמקורות אור – כך, למשל, שלושה חיישנים בתחתית הפגוש "הסתכלו" תמיד על החזרי האינפרה-אדום מהרצפה, ואם ההחזרים נעלמו, הרובוט הסיק שהוא עומד ליפול במדרגות ופנה לאחור. צמד לד-חיישן בעיצוב אחר הוצב גבוה יותר, בצד אחד של הפגוש (הצד של המברשת האופקית עם הזיפים הארוכים), מן הסתם כאמצעי לזיהוי קירות לצורך ניקוי אזור הפנלים.
צמד לד-חיישן נוסף הוצב מצדי תעלת הכניסה למיכל איסוף האבק. אם הצטבר יותר מדי אבק ולכלוך, זה היה מסתיר את האור לחיישן, והרובוט היה מודיע שצריך לרוקן את המיכל.
מקלט אינפרה-אדום סטנדרטי ניצב על גג הרובוט, לקליטת שידורי השלט הרחוק, ובחזית (מאחורי פלסטיק שקוף-כהה לסינון אור לא רצוי) היו שני חיישנים בזווית עם מחיצה ביניהם. אלה נועדו בוודאי לזיהוי הכיוון של אלומת האינפרה-אדום שיוצאת מעמדת הטעינה: הרובוט צריך פשוט להסתובב לצד של החיישן שקולט את האות, עד ששני החיישנים מגיבים בו-זמנית – מה שאומר שמקור האלומה נמצא היישר לפנים.
מה קרה לגלגל השמאלי
כל מכלול גלגל היה מחובר לשלדת הרובוט בציר מתכת יחיד, ובמכלול השמאלי הציר הזה יצא מהמקום. היה קל מאוד להחזיר אותו, אך הבעיה של עצירת הגלגל לא נפתרה. הוצאתי את המכלול וחיברתי את חוטי החשמל ישירות לספק כוח שולחני (12V, כפי שצוין על המנוע עצמו) כדי לראות איך הוא מתנהג. וכמו ברובוט, הוא הסתובב לשנייה או שתיים ואז עצר – וגם צריכת הזרם ירדה לאפס. כלומר, לא היה שם שום מכשול מכני ש"תקע" את המנוע או הגלגל. גם החיווט החיצוני נראה תקין. אלה המגעים שבתוך המנוע עצמו, ה"מברשות", שכנראה נשחקו או התלכלכו איכשהו באופן שגורם לנתק. לא היה לי מנוע חלופי, אז החלטתי לפרק מה שאפשר מהרובוט ולזרוק את השאר.
תצוגה ובקרה
ברובוט היו שני לוחות PCB נפרדים. הקטן יותר הוקדש לתצוגה (מסך LCD ייעודי) וללחצנים, והיה עליו רק רכיב "חכם" אחד: הג'וק HT1621 של חברת Holtek. זהו לא מיקרו-בקר אלא רכיב עם קצת זיכרון RAM לקריאה/כתיבה, שיוצר ממשק בין הזיכרון הפנימי הזה לבין סגמנטים של תצוגת LCD. כלומר, הרכיב הזה רק מתפעל את המסך ברמת החומרה, ואילו הרמה הגבוהה יותר – ההחלטה מה יוצג ומתי – היא באחריות המיקרו-בקר הראשי שנמצא על הלוח השני ומשדר פקודות ל-HT1621.
על הלוח הראשי, כנראה במטרה למנוע התנתקות רכיבים כתוצאה מוויברציות, היצרן שפך מין פלסטיק גועלי שגם הסתיר את זהות המיקרו-בקר הראשי. אך גיליתי – אולי כתוצאה מהתיישנות הפלסטיק? – שהוא לא גמיש או דביק אלא דווקא די פריך, כך שהצלחתי לשבור ולהסיר חלקים ממנו. אז התגלתה הפתעה קטנה: המיקרו-בקר הראשי של הרובוט הוא ATmega128A, האח הקטן של ה-ATmega2560 המוכר מלוחות ארדואינו מגה, עם בערך חצי מכמות הזיכרון, הטיימרים ומודולי התקשורת. לפי הגביש שלידו, הוא רץ במהירות 8MHz. הייתה שם גם סוללת CR2032, מן הסתם לשמירת השעה גם כשהסוללה הראשית מנותקת (דרך כפתור הפעלה בתחתית הרובוט).
כיוון שפירקתי את הרובוט סופית, פירקתי גם את תחנת הטעינה בכוח כדי לראות מה יש שם. ה-PCB הבודד בתוכה היה בסיסי ביותר, עם מיקרו-בקר יחיד מדגם ATtiny13A המוכר לקוראי הבלוג (כאן וכאן, למשל), לניהול שידורי האינפרה-אדום.
כעת יכולתי לפחות למדוד בדיוק טוב קצת יותר את האותות שיוצאים ללדים המשדרים. האות מהמשדר העליון, כפי שתיארתי בפוסט הקודם, היה בתדר 504Hz עם Duty cycle של 50%, ואילו המשדר התחתון שידר באותו תדר, עם Duty cycle של 75%. האותות היו מסונכרנים, כך שהסכום שלהם נראה פשוט כ-75%.
שלום,
אני ממש במקרה הגעתי לאתר הזה, ואני ממש נהנה לקרוא את הבלוג שלך.
תודה רבה
תודה לך! אני משתדל להעלות פוסט חדש כל כמה ימים, אז אתה מוזמן להמשיך לעקוב 🙂