פרויקט צ'קלקה

ילדים לומדים מהר. אחרי שהכנתי את חיישן הרברס למשאית הצעצוע, הרעיון של תוספות אלקטרוניות תוצרת בית לצעצועים הפך מבחינתם למובן מאליו – וכעת התבקשתי להוסיף אורות מהבהבים לאחת מהכבאיות הרבות שבאוסף.

התגובה הנכונה היא אולי "תעשו את זה בעצמכם", אך מכיוון שמעורבות בעניין הלחמות, וממילא רציתי לעשות משהו ראשוני עם מיקרו-בקר PIC, ניצלתי את ההזדמנות – והרי לפניכם התהליך והתוצאות.

שלב ראשון: יש מקום?

הפרמטר הראשון והקריטי שצריך להתייחס אליו הוא המקום הפיזי. בהנחה שאני עובד עם רכיבי Through-hole רגילים, באיזו מהכבאיות יש מספיק מקום להתקין לדים, מעגל בקרה, סוללות, מפסק וחיווט לכל זה? התשובה נמצאה בקלות בדגם שבתמונה.

הצעצוע המקורי
הצעצוע המקורי

כבאית זו יועדה במקור להכיל לדים, רמקול, מיקרו-בקר כלשהו וסוללות, אך נמכרה בלעדיהם. כלומר, תשתית הפלסטיק לכל הרכיבים קיימת, אך במפעל פשוט לא טרחו להרכיב אותם!

התשתית לאלקטרוניקה שלא היתה שם
התשתית לאלקטרוניקה שלא היתה שם

תא הסוללות המקורי היה קטן למדי, מותאם לשתיים או שלוש סוללות כפתור – לא מספיק לטעמי, ולכן חתכתי את הפלסטיק והוצאתי אותו משם. ביחד איתו, כדי לפנות עוד מקום, פירקתי והוצאתי את המנגנון המכני הפשוט שגרם לראש הנהג להתנודד בזמן הנסיעה. מי צריך את זה? 🙂

הצעצוע בשלבי פירוק והכנה
הצעצוע בשלבי פירוק והכנה

שלב שני: לדים, סוללות ומפסק

כדי להתאים שני לדים 5 מ"מ לכיסויי הפלסטיק שבגג הכבאית נאלצתי לבצע עוד כמה חיתוכים בפלסטיק, ולכופף את הרגליים שלהם בזוויות משונות. החלטתי, כפי שעשיתי ב"ניידת המשטרה", להפעיל את שני הלדים באמצעות שני חוטים בלבד: חיברתי את הרגליים של שניהם בזוגות, פלוס למינוס ומינוס לפלוס, ולכל זוג חיברתי חוט אחד. שני החוטים יתחברו לשני פינים במיקרו-בקר, ובניהול ותזמון נכון של הפלט אפשר יהיה ליצור אפקט דמוי פנסים מסתובבים או מהבהבים. באמצע אחד החוטים הוספתי, בטור, נגד בערך של 91Ohm. ערך זה נבחר עבור המתח הצפוי באותו אזור במעגל, כך שישמור על הלדים מפני זרם גבוה מדי.

הצבת הלדים
בתהליך הצבת הלדים

המקום הנוח ביותר להתקנת מפסק הוא בתחתית, היכן שהיה קודם תא הסוללות. הלחמתי אותו לחתיכת Prefboard בגודל מתאים, שהוצמדה לכבאית מצדה הפנימי, וכדי שהמפסק לא יבלוט יותר מדי לכיוון הרצפה וייפגע, "הרמתי" את כל העסק בעזרת קטעים קצרים של שיפודי עץ רחבים.

תשתית המפסק והסוללות
תשתית המפסק והסוללות

בבחירת בית הסוללה, השיקול היה קודם כל מקום פיזי, ולאחר מכן מתח קרוב ככל האפשר למתח ההפעלה של המעגל עצמו, כדי לחסוך ברכיבים להורדה או  העלאה של המתח. בחרתי בבית ל-2 סוללות AA. זו בחירה גבולית למדי, מכיוון ש-3V הם הגבול הבטוח התחתון לתדר הפעולה של המיקרו-בקר (כשהוא מופעל עם השעון הפנימי שלו), ולכן, למשל, לא אוכל להשתמש בסוללות נטענות שנותנות רק 1.2 וולט כל אחת.

שלב שלישי: הבקרה

המערכת מבוססת על מיקרו-בקר קטן, זול ופשוט יחסית, מדגם PIC12F675 של חברת Microchip. יש לו שמונה רגליים, כמו ל-ATtiny85, אך רק 1.75KB זכרון Flash עבור הקוד ו-64 בייטים של RAM. את הפרטים המלאים של התכנות והצריבה אני משאיר לסדרה עתידית כאן בבלוג. בינתיים אתייחס רק לעקרון הפעולה של הקוד, שמתאים למעשה כמעט לכל פלטפורמה.

בזכות אופן החיבור, כדי לגרום ללד אחד לדלוק (ולשני להיות כבוי), אני צריך רק לתת מתח חשמלי חיובי באחד מפיני הפלט ואפס בשני. היפוך של תפקידי הפינים יהפוך את הפלט בלדים, ואם המתח החיובי לא יהיה רציף אלא מקוטע, כמו ב-PWM בארדואינו, אוכל לשלוט בעוצמת ההארה הנתפסת.

הגדרתי משתנה מטיפוס signed char; טיפוס זה מסוגל לקבל ערכים בין 128- לבין 127 כולל, וכאשר הוא מתקדם אל מעבר לקצה הטווח, הוא חוזר כביכול מהקצה השני. כלומר, אם ערך המשתנה הוא 127 וננסה להוסיף לו 1, נקבל 128-. אם נגדיל את המשתנה הזה ב-1 כל פעם ונסתכל רק על הערך המוחלט שלו, נקבל מין גל עולה ויורד, בזיגזג, בין הערכים 0 ל-128.

עבור כל אחד מהערכים האלה, הפעלתי את המתח החיובי למספר יחידות זמן – מאפס ועד לערך הנוכחי – וכיביתי אותו למספר יחידות זמן, מהערך הנוכחי ועד 128. כשהדבר נעשה בקצב נכון, זה נראה כמו אור שמתחזק ונחלש בחזרה במחזוריות. בנוסף, בכל פעם שהערך הגיע ל-0, החלפתי בין התפקידים של שני הפינים, מה שגורם ללדים "לפעום" לחילופין. תוכנה פשוטה זו תופסת 151 בייטים בפלאש ומנצלת 14 בייטים בלבד ב-RAM, וזה עוד לפני אופטימיזציות שאפשר לבצע ידנית, ובהתחשב בזה שהקומפיילר בגירסה החינמית לא מבצע יותר מדי אופטימיזציות משל עצמו.

שלב רביעי: התקלה

כדי לייצב את המתח מהסוללות בכניסה למיקרו-בקר, הוספתי בין הפלוס למינוס קבל אלקטרוליטי של 10 מיקרופאראד. למה? בגדול, כי בכאלה השתמשתי במקומות אחרים ולא היתה איתם בעיה.

אבל כאן קרה דבר מוזר. לפעמים, כשהפעלתי את המפסק, האורות פעלו – אבל בהרבה מקרים, לא קרה כלום. וידאתי שהג'וק מקבל מתח מתאים, ובכל זאת הוא לא עשה את העבודה. האם המתח מהסוללות ששמתי לבדיקה, שלא היו טריות לגמרי, היה נמוך מדי בשביל מהירות השעון של המיקרו-בקר (שעון פנימי, 4MHz)? סוללות חדשות, שהגיעו ביחד ל-3.18V, לא שיפרו את המצב. נראה היה שה-PIC נכנס למצב תקלה, או איפוס, כלשהו ולא מצליח לצאת ממנו.

אחרי בירור קצר אצל מומחה-לדבר, הסתבר שהקבל שבו השתמשתי לא מתאים למשימה. בהתאם להצעה, החלפתי אותו בקבל קרמי של 0.1 מיקרופאראד, וליתר ביטחון גם סילקתי את הנגד החיצוני ששמתי בין המתח החיובי לפין האתחול (MCLR) ובמקומו הגדרתי, באמצעות הפיוזים, חיבור פנימי.

מעגל הבקרה הסופי
מעגל הבקרה הסופי

כעת הכל עבד כשורה. הילדים ראו, התלהבו, הניחו בצד – ושלחו אותי לפרויקט הבא…

להרשמה
הודע לי על
2 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

BEST FATHER!!!