פרויקט: ירח PSoC

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

מנורת הירח המשודרגת בפעולה
מנורת הירח המשודרגת בפעולה

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

המחיצות בתוך המנורה, ולדים (במרכז התמונה)
המחיצות בתוך המנורה, ולדים (במרכז התמונה)

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

הלדים והחיישנים במנורה המקורית
הלדים והחיישנים במנורה המקורית

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

על צורת העבודה עם מיקרו-בקרי PSoC של Cypress כתבתי כאן, וההתנסות הנוכחית לא שינתה את דעתי: זה יוצא דופן, זה מגניב (אחרי שצולחים שלב למידה מתסכל!), וזה מונע מאיתנו לראות דברים חשובים שעלולים לסבך אותנו בהמשך. בכל אופן, פתחתי את סביבת הפיתוח, רעננתי קצת את הזיכרון שלי וגררתי לתוך שרטוט הפרויקט הוויזואלי שלושה רכיבי PWM עם שני ערוצים כל אחד. הקומפיילר הודיע לי בזעם שהוא לא יכול לממש רזולוציה של 16 ביט לכל ערוץ בתצורה הזאת, אז נאלצתי להסתפק ב-8 ביטים. כתבתי בזריזות את הקוד שמעלה ומוריד את עוצמת ההארה של הלדים לפי הסדר ווידאתי שהכול תקין על מטריצה.

המערכת בבדיקה על מטריצה
המערכת בבדיקה על מטריצה

בדומה לפונקציונליות המקורית, הגדרתי שכעבור כחצי שעה המנורה תכבה לבד, וכדי לחסוך בסוללות אמרתי למיקרו-בקר לעבור למצב שינה עמוקה. להפתעתי, מדידה הראתה שהצריכה של הלוח במצב זה הייתה כמעט מיליאמפר שלם וזה המון. הסתבר ששני פינים בלוח, שמיועדים לדיבוג בפרוטוקול SWD, לא אוהבים שמשאירים אותם צפים, אז הוספתי נגד 100K בין כל אחד מהם לאדמה והצריכה ירדה ל-5.5uA. כעת ניגשתי לחומרה של המנורה.

ה-PCB המקורי של מנורת הירח
ה-PCB המקורי של מנורת הירח

כמיטב המסורת העליאקספרסית, המעגל האלקטרוני של המנורה הוא מופת לקמצחסכון במשאבים. חד-שכבתי, מיקרו-בקר קטן ללא כיתוב, נגד תלוי-אור, חיישן אינפרה-אדום לשלט, נגדי 150 אוהם בשביל הלדים, נגד 0 אוהם אחד כגשר בין שני מוליכים, וקבל קטן שאני בטוח שלמישהו כאב הלב בגלל שאי אפשר היה לוותר עליו. הג'וק של Cypress יכול לעבוד ב-5V והפינים שלו מסוגלים לעמוד בזרם של עשרה-עשרים מיליאמפר בלי בעיה, אז חישבתי קצת ומצאתי שאני יכול, כמו בתכנון הסיני, לחבר את הלדים ישירות לפינים.

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

הלחמתי החוצה את הרכיבים הלא-נחוצים עבורי, ובעזרת אוויר חם הוצאתי גם את הג'וק המקורי. אז הבנתי שהלוח בנוי בלוגיקה הפוכה: ללדים יש בעצם common anode, וכדי להדליק לד צריך שפין הפלט יהיה LOW, מה שהופך לגמרי את האפקט של אות ה-PWM. למזלנו אנחנו במאה העשרים-ואחת ויש הרבה דרכים להתגבר על זה בתוכנה. בחרתי בראשונה שקפצה לי לעין – פשוט לבחור הגדרה הפוכה למצב ה-ON של הפין, כפי שרואים בתמונה הבאה, אבל אפשר היה גם לשים רכיב של היפוך לוגי בין הפלט של רכיב ה-PWM לבין רכיב הפין הדיגיטלי, ועוד.

שינוי הגדרת ה-PWM בתוכנה להיפוך של הפלט
שינוי הגדרת ה-PWM בתוכנה להיפוך של הפלט

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

המעגל הכמעט-סופי של המנורה המשודרגת
המעגל הכמעט-סופי של המנורה המשודרגת

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

שלוש סוללות אמתיות וסוללת-דמה-קצר מודפסת
שלוש סוללות אמתיות וסוללת-דמה-קצר מודפסת

זהו, המנורה המשודרגת מוכנה ועובדת יפה – אם כי בגלל המגבלות של המוצר המקורי זה עדיין לא נראה ממש כמו מופעי הירח האמתיים. לוח הפיתוח הזנוח מצא לו בית חם, ואם במקרה אתם רוצים לוח כזה בדיוק, כדאי שתזדרזו: הוא אמנם זול מאוד, אבל Cypress הכריזה עליו כ-NRND, כלומר "לא מומלץ לפיתוחים חדשים", מה שאומר שהוא עומד להיעלם מהנוף.

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

מגניב ממש! מה עם איזה סרטון להמחשת הפעולה? 🙂

מה עם להדפיס את זה ?
https://www.thingiverse.com/thing:2771919