יומני טומי, חלק ג': חומרה

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

מיקרו-בקר, בצד התחתון של המעגל הראשי של חיקוי הטומי
מיקרו-בקר, בצד התחתון של המעגל הראשי של חיקוי הטומי

מיקרו-בקר

המיקרו-בקר הוא הלב של הפרויקט (ו/או המוח שלו). ב-TOMY Teacher המקורי שכן אחד המיקרו-בקרים המסחריים הראשונים בעולם, מה שאומר שמבחינת ביצועים – מהירות פעולה, גודל זיכרון וכו' – כל מיקרו-בקר מודרני יוכל להיכנס לנעליו בקלילות. הדרישה היחידה שמחייבת בחירה זהירה יותר היא מספר פיני הקלט/פלט של המיקרו-בקר. יש בטומי עשר נורות לד, שבעה לחצנים ורמקול אחד, ואמנם לא חייבים פין נפרד לכל אחד ואחד מהם, אבל נדרש בכל זאת איזשהו מינימום, וכשיש יותר, העבודה יותר נוחה.

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

לדים

נורות הלד המקוריות של הטומי, בקוטר 3 מ"מ, הן מדגם LN28RP-T שכבר מזמן אינו מיוצר, אבל אין שום בעיה למצוא תחליף כי המידות שלהן סטנדרטיות גם כיום. מה שפחות מובן מאליו הוא הזרם החשמלי שיידרש להן. המיקרו-בקרים של פעם נבנו מטרנזיסטורים גדולים ומגושמים יחסית ולכן צרכו הרבה חשמל, אך מצד שני יכלו גם לעמוד במתחים ובזרמים גדולים. השבבים של היום עדינים יותר, ואם לא ניזהר, צריכת-יתר מהם במעגל האלקטרוני יכולה בקלות לשבש את פעולתם ואפילו להרוס אותם לגמרי. אז לפני שמחברים עשרה לדים ישירות לעשרה פיני פלט של ה-ATmega4809, חייבים לבדוק אם הוא מסוגל להדליק את כולם ביחד בלי להיפגע.

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

קטע מעשיריית הלדים של השאלות בחיקוי הטומי
קטע מעשיריית הלדים של השאלות בחיקוי הטומי (לחצו לתמונה גדולה)

מייצב מתח

במהירות השעון שאני מתכוון לעבוד איתה (על כך אכתוב בפוסט הבא, על ה-HAL) מתח המערכת עבור ה-ATmega4809 יכול להיות כל דבר בין 2.7V ל-5V, ומבחינה זו יכולתי לחבר את כל הרכיבים במעגל ישירות לבית סוללות 3xAA/AAA. אבל הלדים והרמקול לא היו מקבלים זאת בהבנה: צריכת הזרם שלהם, ובעקבותיה עוצמת התאורה/סאונד, היו משתנות מאוד על פני הטווח הזה. לכן שמתי, בין הסוללות לשאר המעגל, מייצב מתח ל-3.3V.

מייצב המתח של המעגל
בין מפסק ההפעלה ללד האדום: מייצב המתח של המעגל. למעלה: לחצנים (לחצו לתמונה גדולה)

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

לחצנים

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

בורר מהירויות

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

הפוטנציומטר שיקבע את מהירות המשחק
הפוטנציומטר שיקבע את מהירות המשחק (לחצו לתמונה גדולה)

יש בעיה מוכרת בפתרון מסוג כזה: מה קורה אם הפוטנציומטר "יושב" בדיוק על הגבול בין שני תת-טווחים? כיוון שמדובר ברכיב בעל אלמנט מכאני, ול-ADC יש דיוק מוגבל וקצת "רעש" פנימי משל עצמו, התסריט הזה לא מופרך: אנחנו נגיע למצבים מאוד לא רצויים שבהם המהירות קופצת הלוך ושוב. כדי למנוע אותם נשתמש במה שנקרא "היסטרזיס" (Hysteresis) – בשפה לא טכנית, סף המתח שנדרש למעבר ממהירות א' ל-ב' יהיה שונה מהסף שנדרש עבור חזרה מ-ב' ל-א'. לדוגמה, אם התוכנה מתרגמת את המתח לסולם ערכים של 0-1023, והמעבר ממהירות איטית לבינונית יתבצע כשהמתח יעלה מעל 340, החזרה למהירות איטית תתבצע רק כשהערך יירד מתחת ל-320. ההפרש בין הספים הוא מעין "שטח מת" סביב הסף התיאורטי מדויק, שטח שבו תנודות אקראיות (ממקור פנימי או חיצוני) במתח הנמדד לא יפריעו ולא ישפיעו.

חיווט

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

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

קונקטורים של הכבלים שמחברים בין שני הלוחות
קונקטורים של הכבלים שמחברים בין שני הלוחות (לחצו לתמונה גדולה)

להרשמה
הודע לי על
0 Comments
Inline Feedbacks
הראה את כל התגובות