יום שבת, 12 באוקטובר 2013

מד לאסלה, או "איך הבן שלך יישמח ללכת לעשות פיפי בשירותים"

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

חשבתי מה אפשר לעשות עם כל אלה - ומצאתי פתרון שמשלב משחק לבן שלי כשהוא עושה פיפי באסלה.

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

העדפתי ליצור את המשחק מחלקים שיש לי כבר, ולא עם בקר כלשהו.  החלטתי להשתמש ב- 555, ו- 595 shift register. להסבר מעולה (באנגלית) על ה- 595, הציצו כאן.
המשחק עובד כך:
באסלה יהיו שני חיבורים חשופים קרובים מאוד. כשפוגע בהם פיפי, או שהם יגעו אחד בשני ישירות, או שהפיפי עצמו יסגור ביניהם מעגל (בזכות המוליכות של הפיפי - אני עוד צריך לבדוק את הנושא). זה המתג הראשי של המעגל.
המתג הזה מחבר את הסוללות (4 של AA) למעגל. במעגל יש זמנן (555) שמתפעל אוגר (595). בכל שניה, הזמנן דוחף לאוגר עוד ביט גבוה. לכן הפלט של האוגר יהיה 00000000 בהתחלה, 00000001 אחרי שניה, 00000011 אחרי עוד שניה, וכך עד 11111111.
היציאות של האוגר יהיו מחוברות ללדים, אז אני אקבל את האפקט של המודד. בחלק מהיציאות אני אחבר לדים רגילים, ובחלק את הצעצועים הזולים. בצורה זו זה לא סתם שורת לדים שנדלקת, אלא יש גם "נק' ציון" בדרך, שהן קצת יותר מעניינות.
בניתי את המעגל הבסיסי, ובדקתי אותו:

החיבור לRPI הוא רק לקבל 5V. בנוסף השתמשי ב- 556 במקום 555
(556 הוא שני 555 בצ'יפ אחד, אבל השתמשתי רק באחד מהם).

כיוון שהייתי השבוע בהרצאה על Eagle ב- XLN, של אלון רייזמן, החלטתי לשלוח להדפסה סנונית ראשונה. בניתי את המעגל בתוכנה ושלחתי להדפסה ב- OSH Park. באתר אפשר להזמין הדפסה של מעגל אבל לפחות 3 העתקים, במחיר של 5$ לכל אינץ' רבוע, המשלוח חינם. עלה לי 70 ש"ח - אני מקווה שעוד שבועיים שלושה אעלה פוסט עם המשחק עובד.

הסבר על המעגל

במעגל יש 555 astable שמוציא גל ריבועי כל שניה, ובו המצב הגבוה נמשך כמעט שניה (רק כמה מילישניות של נמוך).
באוגר, רגל ה- serial data מחוברת ל- Vcc, כלומר תמיד נדחף ביט גבוה. ה- clock מחובר למעגל גזירה פשוט של קבל ונגד. הוא גוזר את הפלט של הזמנן, כלומר בכל פעם שהפלט עולה לגבוה (פעם בשניה) מקבלים pulse רגעי. ה- RCK מחובר לנגד pull-up ולטרנזיסטור, כך שהוא מקבל בדיוק את ההופכי של הפלט (כשהפלט גבוה, הוא נמוך, וההיפך).

כשמתחיל מחזור של הזמנן, אני מקבל עליה רגעית בשעון של האוגר, ואז נדחף ביט גבוה. אחרי כמעט שניה, ה- RCK עולה ומוציא את מצב האוגר החוצה לרגלי ה- output. וחוזר חלילה.

רגלי ה- output יהיו מחוברות ללדים, ושלושה מהם (מס' 5, 10 ו- 16) יהיו מחוברים למעגלים של הצעצועים. כיוון שרציתי להפריד בין המעגלים, יציאות 5, 10 ו- 16 הן דרך טרנזיסטור, כך שהמעגלים מהצעצועים יוכלו להיות מחוברים לסוללות משלהם.

שרטוט המעגל:


להורדה של ספריית ה- Eagle של הפרויקט

15 תגובות:

  1. אשמח לראות תרשים של המעגל... זה יחסוך לי את הפיספוסים של הילדים :)

    השבמחק
  2. אולי זה כי לא הסתכלתי ב-datasheets... אבל למה בעצם צריך לגזור את האות שיוצא מה-555? האוגר לא יכול להסתדר עם האות הגולמי?

    השבמחק
  3. האמת - כשכתבתי את זה חשבתי על זה גם, זה כנראה שאריות מתכנון מוקדם שהיה לי. אני מניח שכיוון שכשהאות של ה-555 יורד לנמוך, זה יוריד את הCLK ויעלה את הRCK, וזה מספיק טוב.

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

    השבמחק
    תשובות
    1. אתה יכול לקרוא על זה פה: http://www.electronics-tutorials.ws/logic/logic_4.html
      בגדול, כשה- B של הטרנזיסטור נמוך, הוא בקטעון, ואז היציאה מחוברת למתח גבוה בעזרת נגד ה- Pull Up. כש- B גבוה, הטרנזיסטור מוליך ואז היציאה מחוברת ישירות ל- GND (החיבור ל"גבוה" הוא דרך הנגד, אז מתחיל זרם דרכו).

      מחק
  5. מעולה תודה רבה. אני אתחיל עם 595 אחד בתור התחלה ובלי הצעצועים המהבהבים.
    חשבתי שאפשר לחבר עוד שני 555 למעגל שכל אחד מהם יתן פולס באורך שונה ובעצם לשים שלושה חיישנים שונים שכל אחד מהם מדליק את הלדים במהירות אחרת.. הכי נמוך הוא הכי מהיר :)

    השבמחק
  6. אין בעיה להחליף את הטרנזיסטורים bc487 בטרנזיזטור NPN אחר נכון?

    השבמחק
    תשובות
    1. זה סתם טרנזיסטור שבחרתי בתוכנה. אני משתמש בטרנזיסטורים שפירקתי ממכשירים שמצאתי. זה צריך להיות NPN, וצריך לשים לב לעניין הזרם: כשהטרנזיסטור ברוויה, הזרם CE (קולקטור-אמיטור) הוא 5V חלקי נגד 1K דהיינו 5mA. לדעתי זה נמוך מספיק לכל טרנזיסטור שתמצא.

      מחק
    2. תגובה זו הוסרה על ידי המחבר.

      מחק
  7. בניתי את המעגל, הפולס יוצא מה 555 כמו שצריך (אני מחבר לדים בטור לכניסה לCLK וה RCK), ה data in מחובר ל VCC, לפי התרשים שלך רק ה OE אמור להיות מחובר ל VCC למרות שלפי ה PDF הוא אמור להיות מרותק לGND (כדי לאפשר פלט). בכל מקרה, בשום צורה לא משתנה מצב הלדים במוצא. לא ברור לי מדוע. יש לך רעיון? כרגע אני רק עם 555 אחד ו 8 לדים.

    השבמחק
  8. רגל 13 היא OE שמאפשרת פלט כשהיא בגבוה. כשהיא יורדת אמורים להכבות כל הלדים. שים לב לרגל 10 (reset) - היא אמורה להיות בגבוה. יש שם קבל רק בשביל שמיד כשהמערכת מתחילה לעבוד היא תהיה מחוברת לנמוך כדי לאפס את הרגיסטר. אני לא שוכנע ב- 100% שזה עובד אז אפשר לחבר אותה ישירות לגבוה.

    השבמחק
  9. היי אני עדיין לא מצליח לגרום לכל זה לעבוד. לפי הPDF, רגל 13 אמורה להיות בנמוך כדי לאפשר פלט ובאמת ככה אני רואה משהו. בכל מקרה לא הצלחתי בשום מצב עם התרשים שלך לגרום ללדים להדלק אחד אחרי השני. אני רואה את הטריגר לרגל 11 שמגיע מפין 3, אני רואה את הטריגר הקצר לרגל 12 אבל שום דבר לא זז ברג'יסטר עצמו. עוד איזה רעיון? יש לך אפשרות לבנות את המעגל שוב לפי התרשים ולבדוק אם זה עובד לך או לא?תודה מרדכי

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

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

    השבמחק