קופסה שחורה לרקטה מונעת מים (או בקיצור – WRFL)

(הפוסט הבא דומה למדי ל-WIKI שכתבתי באנגלית בספריית ה-GITHUB שבה נמצאים קבצי התכנון של הפרויקט, הפרוייקט מתוכנן באמצעות KiCad – תוכנת שרטוט ועריכה לאלקטרוניקה, נוחה וחינמית!)

הקדמה קצרה

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

אז החלטתי שחייבים (כן, חייבים, מה לעשות) לדעת לאיזה גובה באמת היא מגיעה ואחרי שקראתי קצת (באינטרנט כמובן) וראיתי כמה סימולציות, הבנתי שאני גם רוצה לדעת מה התאוצה (לפי הסימולציות אפשר להגיע לתאוצה של יותר מ 150G). וכך התגבש לו, במוחי (הקודח…) הרעיון לתכנן ולבנות “קופסה שחורה” לרקטה או באנגלית – Water Rocket Flight Logger בקיצור WRFL.

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

דרישות בסיסיות

  1. המערכת צריכה להיות מוזנת מסוללה נטענת
  2. המערכת צריכה למדוד ולרשום/לתעד גובה ותאוצה מרביים של טיסה בודדת
  3. המערכת צריכה לשחרר את המצנח של הרקטה (באמצעות סרוו) לאחר שיא הגובה
  4. למערכת צריך להיות ממשק משתמש בסיסי (כפתורים ומסך) בכדי לאפשר למשתמש לקרוא את הנתונים ולקבוע את תצורת / מאפייני עבודת המערכת)

דרישות פחות בסיסיות

  1. טעינת הסוללה הנ”ל באמצעות מטען USB או מחשב
  2. רישום תאוצה וגובה במהלך כל הטיסה בקצב של לפחות 100 פעמים בשניה (לפי הסימולציות שראיתי , קצב שינוי התאוצה מאד גבוה)
  3. שמירת רשומות של מספר טיסות בזיכרון לא נדיף (non-volatile  למשל  flash)
  4. אפשרות גישה לזיכרון ע”י מחשב בתצורה של “disk-on-key”
  5. שמירת זמן ותאריך בין טיסות / שימוש ככל הניתן ע”י הסוללה
  6. דיווח בזמן אמת לטלפון חכם באמצעות בלוטות’ או BLE

החומרה

רציתי מערכת חומרה גמישה מספיק לתמוך בכל הדרישות הנ”ל ואולי אחרות שיצוצו בהמשך.

דבר ראשון – בחירת מעבד, בחירה פופולרית בימים אלה הם משפחת הארדוינו, יש הרבה קושחה/קוד ופרוייקטים ברשת המעבדים זמינים וזולים. אפשרות נוספת היא מעבדים מבוססי ARM, אשר בזכות “מהפכת” הארדוינו, לדעתי, נהיו גם הם נגישים מבחינת מחיר ערכות הפיתוח, למשל מחברות כמו ST  ו – TI.

ערכת הפיתוח שנבחרה להיות בסיס המערכת היא TM4C123GXL מחברת TI שמכילה מעבד מסוג TM4C123GH6PM מבוסס ARM Cortex M4. ערכה זו נבחרה מכיוון שהיא ערכת ה ARM הקטנה ביותר שמצאתי במחיר סביר ועם ערכת כלי פיתוח וספריות זמינים.

אני בחרתי ב ARM Cortex ממספר סיבות – הראשונה, מכיוון שאני חושב שהתמורה לכסף, מבחינת כח עיבוד וזיכרון, יותר טובה משל ה ארדוינו-ים למיניהם. הסיבה השנייה היא שעבדתי בעבר עם מעבדים דומים ממשפחה זו ויש לי מעט ניסיון לעומת אפס ניסיון עם ארדוינו. (צריך לזכור שלארדוינו יש המון תוספות חומרה (“shield” ) זמינות ומעניינות אבל מכיוון שרציתי לתכנן ולבנות את החומרה בעצמי, זה לא היה שיקול חשוב)

מבחינת חומרה, המערכת תהיה ערכת הפיתוח הנ”"ל ועליה מעגל ( BoosterPack כמו שזה מכונה ב TI ) עם כל הרכיבים הנוספים הדרושים וסוללה נטענת.

תרשים מלבנים של המערכת (חומרה בלבד)

HW block diagram

קצת הסברים

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

המעבד מוזן ע”י מייצב ייעודי (MCU LDO)  ולא ע”י המייצב שעל ה Launchpad , זה נעשה בשביל לא להזין את שאר מהצרכנים ב Launchpad (במיוחד המעבד שמשמש לממשק הפיתוח) וכך לחסוך בזרם בזמן שינה.

כל ה”מלבנים” שנמצאים מחוץ לאזור האדום של ה  launchpad נמצאים על ה Boosterpack מלבד חיישן התאוצה. הסיבה לכך שחיישן התאוצה מחוץ ללוח היא שאני צופה שהמערכת (Launchpad +BoosterPack+סוללה) תהיה מרופדת בכדי לשמור עליה מעוצמת המכה של נפילת הרקטה חזרה. ריפוד זה יספוג את התאוצה וירכך את המכה – גם בהמראה וגם בנפילה והתאוצה של המערכת לא תהיה זהה לתאוצה של גוף הרקטה, שהיא המעניינת. החיישן יחובר בצורה קשיחה ככל האפשר לגוף הרקטה וע”י “צמה” של חוטים למערכת.

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

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

מה לא נמצא בדיאגרמת המלבנים:

  • המעבד יכול למדוד את המתחים הבאים:
    • מתח הסוללה
    • מתח חיישן הטמפרטורה (נגד NTC )
    • מתח VBUS – מתח האספקה מה USB

החיישנים

לתפקיד חיישן הגובה (לחץ) נבחר חיישן מסוג MS5611-01BA03 של Measuremnt specialities, זהו חיישן מאד נפוץ ומומלץ בעולם בקרי התעופה של ה QUADCOPTERS (ואם הוא טוב בשבילם אז בטח גם בשבילי 🙂  ). יחס קצב העדכון לדיוק המדידה שלו טוב יותר משמעותית מזה של המתחרה מבית BOSCH.

חיישן התאוצה הוא חיישן מסוג ADXL375 של חברת ANALOG DEVICES , זהו חיישן פחות נפוץ אבל נבחר בגלל תחום התאוצות שהוא תומך בו ( 200g –/+) לעומת החיישן הנפוצים יותר של בקרי הטיסה / טלפונים/שלטי WII שתחום התאוצות קטן הרבה יותר.

מערכת ניהול ההספק (באנגלית זה יותר פשוט: Power Management )

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

דרישות מערכת ניהול ההספק

  1. מקור ההטענה של הסוללה צריך להיות ה USB זאת אומרת 5V
  2. המעבד דורש 3.3V לעבודה
  3. סרוו-ים (סטנדרטיים) דורשים 4.8-6V
  4. כל שאר הצרכנים 3.3V
  5. צריכת הזרם במצב Hibernate (שמירה על שעה ותאריך) צריך להיות מינימלי – פחות מ 25uA. (סוללה של 500mAh במצב טעינה של 10% ז”א 50mAh מטען נשאר, תחזיק בערך 2000 שעות במצב זה, כמעט 3 חודשים – נראה לי מטרה ראויה)
  6. הספקה של 200mAh נוספים במתח 3.3V לרכיבים עתידיים
  7. לאור דרישה 5 – יש לכבות את כל הרכיבים האפשריים במצב הנ”ל.

הסוללה

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

ההתלבטות היחידה היתה איזה מתח – 3.6V (תא יחיד) או 7.2V (שני תאים בטור).

לאור הדרישות למעלה, צריך מייצב מסוג Boost בכל מקרה, או בשביל להעלות את מתח הסוללה בכדי לספק את הסרוו, או, בכדי להעלות את מתח ה USB לצורך טעינת את הסוללה.במקרה של 7.2V יהי צריך גם מייצב ממותג בשביל להוריד את המתח ל 3.3V בצורה חסכונית. עדיף מייצב ממותג אחד מיותר – סוללת ה 3.6V זכתה!

קיבול הסוללה

נראה לי שבערך 500mAh. נראה מה בדיוק יהיה זמין.

המטען

דרישות

  1. תמיכה בטעינה מ USB, בחירת זרם טעינה (100mA או 500mA) ע”י המעבד.
  2. תמיכה בניטור טמפרטורת הסוללה – מסיבות בטיחותיות – זאת בכל זאת סוללת ליתיום-יון…
  3. ניתן למצוא באריזה שאפשר להלחים ביד (“אריזה סבירה”)
  4. חיווי מצב הטעינה למעבד (לא הכרחי אבל נחמד)

המטען הנבחר

המטען שנבחר הוא BQ24092 של TI אשר עונה על כל הדרישות הנ”ל.

המייצבים הליניאריים

מלבד הסרוו-ים כל הצרכנים זקוקים ל 3.3V לעבודה, אז למה לא מייצב אחד אתם שואלים? אז ככה…

צריך זרם נמוך בזמן שינה/Hibernate אז למעבד צריך מייצב עם צריכה עצמית נמוכה. ואני רוצה גם קצת “עודף” למטרות עתידיות אז מייצב לזרם גבוה (יחסית) לספק את שאר הצרכנים +  עודף שניתן לכבות אותו בזמן שינה.

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

וככה נולד מייצב נוסף :).

אז יש שלושה:

  1. מייצב למעבד, 3.3V, בערך 150mA וצריכת זרם עצמית נמוכה ככל האפשר
  2. מייצב ל“כל השאר” 3.3V , בערך 400mAh (זיכרון, תצוגה + Backlight + עודף)
  3. מייצב לחיישנים 3.3V, עד 100mA ורעש נמוך (כן, אם לא ידעתם, גם מייצבים מוסיפים רעש)

לכל המייצבים צריך להיות מפל מתח (dropout voltage) נמוך ככל האפשר בכדי לאפשר זמן עבודה מקסימלי עם הסוללה.

לשני המייצבים האחרונים צריך שיהיה קו אפשור (enable) בכדי שיהי אפשר לכבות אותם בזמן Hibernate.

המייצבים שנבחרו

  1. למעבד – TPS78233 של TI , מתח מוצא של 3.3V, זרם מוצא מקסימלי של 150mA, וצריכה עצמית של 0.5uA
  2. ל”כל השאר” – TPS73633  של TI , מתח מוצא של 3.3V, זרם מוצא מקסימלי של 400mA
  3. לחיישנים – TPS73033 של TI , מתח מוצא של 3.3V, זרם מוצא מקסימלי של 200mA ורעש עצמי נמוך

מייצב ה Boost

דרישות

  1. תחום מתחי כניסה: 3-4.2V
  2. מתח מוצא: 5.2V
  3. זרם מוצא מקסימלי: 0.5A
  4. כניסות אפשור (enable)
  5. כלי תכנון נוחים – רציתי למזער את המאמץ ולמנוע טעויות ככל האפשר.

המייצב הנבחר

מייצב ממותג LM2735Y של TI, עובד בתדר של 520kHz.

יש ל TI כלי מאד נח בשם Webench שעוזר לבחור את המייצב הנכון ולאחר מכן את רכיבים שלו (סליל, קבלים וכו’) עבור תנאי עבודה נתונים בהתחשב בנתוני הרכיב ונותן מספר אפשרויות עבור שטח הכי קטן, יעילות הכי טובה ומחיר הכי נמוך. הכלי הזה ממליץ על רכיבים מתוך רשימה של רכיבים זמינים (ולא סתם על ערכים תאורטיים).

ובנוסף וידאתי אל מול החישובים בדפי בנתונים שהמלצות הכלי הנ”ל הגיוניות.

אז ראיתם שכל רכיבי ההספקה של של Texas Instruments, זה הזמן לגילוי נאות:

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

אני בטוח שלעבודתי שם הייתה השפעה על בחירת הרכיבים, מעצם היכרותי עם חלק מקווי המוצרים, עם אתר האינטרנט וכו’. כן חיפשתי גם אצל יצרנים אחרים אבל לא מצאתי “בדיוק” את מה שחיפשתי, נראה של TI היה את המגוון המתאים ביותר לפרויקט הזה ולדרישות שלי.

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

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

מפסק המתח

אני ביליתי לא מעט זמן בתכנון המעגל הקטן הזה וחשבתי שראוי להסביר אותו

מערכת המפסק מסומנת בצהוב בתרשים החשמלי הבא:

power_switch

ישנן שתי סיבות לקיום המעגל:

  1. שמירה על הסוללה מפריקת יתר
  2. מניעת מצב לא ידוע במערכת כאדר הסוללה יורדת מתחת למתח העבודה של הרכיבים

המפסק עצמו [Q2] הוא MOSFET מסוג P שמיועד לזרם מקסימלי של 6A, המפסק מחובר בין הבדק החיובי של הסוללה לכניסות המייצבים – כאשר המפסק לא מוליך שום דבר (למעט השער שלו) לא מסופק.

פעולת המפסק

‘OFF’

המצב הכבוי נשמר ע”י הנגד R7 ש”מושך” את שער (gate) המפסק למתח הסוללה ז”א מתח VGS שהוא 0V – המפסק לא מוליך. בנוסף לכך וידוא שהטרנזיסטור Q1 לא מוליך ע”י נגד R6

הדלקה Power On

ישנן שתי דרכים להדליק את המערכת:

  1. ע” אספקת מתח הגבוה מ 4V במחבר ה USB (פעולה שתפעיל גם את המטען), מתח זה, מחולק ע”י R1 ו R2 דרך הדיודה D1, יית=צר מתח גבוה בשער של Q1 שכתוצאה מכך יחל להוליך ולהוריד את מתח השער של Q2 ל-בערך 0V מה שיגרום למפסק להוליך מכיוון ש VGS יהיה  – VBAT-.
  2. לחיצה על כפתור ה “ON” של המערכת (מתג הלחיצה של המקודד הסיבובי SW2). בזמן שהכפתור לחוץ מתח השער שיהיה מחלוק ע”י R7,R14 ו R15 , יהיה שלילי מספיק והמפסק יוליך

ברגע שהמעבד ידלק (לאחר האתחול שלו) הוא יעלה את קו ה “VBAT_EN” למצב גבוה אשר, דרך D1 יגרם ל Q1 להוליך ו”לנעול” (Latch) את מצב העבודה.

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

כיבוי  Power Off

כיבוי המערכת נשלט ע”י המעבד באמצעות קו VBAT_EN, הורדה שלו יכולה להיות כתוצאה מבקשת משתמש או כאשר המעבד מחליט שמתח הסוללה נמוך מדי.

הערה: מתח מספיק גבוה בכניסת ה USB יאלץ את המפסק והמעבד לדלוק בלי קשר לרצונות המעבד…

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

דפים נוספים ב wiki של המערכת:

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

מודעות פרסומת
השארת תגובה

2 תגובות

  1. יופי של רשומה.
    לא הבנתי מילה…
    😉

    הגב

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

%d בלוגרים אהבו את זה: