איך מסדרים יפה PCB (טיפ למתחילים)

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

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

הנה המחשה פשוטה, גם של הבעיה וגם של הפתרון. עלינו לחבר את A ל-a, את B ל-b ואת C ל-c, בלי שהקווים המחברים יחצו זה את זה:

     A          c
     B          b
     C          a

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

     A__________a
     B__________b
     C__________c

הסידור הראשון, עם האותיות הלא-תואמות, מזכיר את הגישה הנאיבית לתכנון מעגלים. המתכנן יודע שהוא צריך מיקרו-בקר X, רכיב תקשורת Y ושלושה קונקטורים A, B, C. הוא מעלה את כולם לשרטוט סכמטי, שם אותם על ה-PCB הווירטואלי בתוכנת העריכה לפי הדרישות הפיסיות (לדוגמה, שהקונקטורים יהיו על שולי הלוח ושרוחבו לא יעלה על 3 ס"מ) ומתחיל "לחבר את הנקודות". לפעמים יש מזל והחיבורים מסתדרים מעצמם, כביכול, אך לרוב זה לא קורה, והמתכנן מוצא את עצמו מזיז רכיבים הלוך ושוב, מעביר מוליכים מסביבם, מתחתם, בין פינים, על פני כל הלוח כדי למנוע התנגשויות. זה מה שקורה, אגב, גם אם נותנים את הלוח ההתחלתי הנאיבי לתוכנת Autorouter.

מה רע בלוח מכוער?

על הרבה לוחות PCB ישנים מאוד אפשר לראות מוליכים עבים מתעקלים בחופשיות, כאילו ציירו אותם ביד עם טוש. זה, אגב, לא רחוק מאוד מהאמת. אחר כך, כשהגיעו כלי התכנון הממוחשבים הראשונים והפשוטים, נוצרה והתקבעה אופנה של קווים ישרים (במכפלות של 45 מעלות). היה בה גם היגיון מבחינת המגבלות הטכניות של מכונות הייצור הישנות. כיום, אין לזה חשיבות: עורכי מעגלים וותיקים אמנם סולדים מאוד מעריכות "חופשיות", אבל בעיקר בגלל ההרגל. מהבחינה החשמלית, כל עוד המוליכים יוצאים מהמקום הנכון ומגיעים למקום הנכון, ולא מפרים כללים ידועים כמו מניעת crosstalk, ground loops וכדומה, מותר להם בהחלט להיראות כמו ספגטי שנשפך, והמעגל יעבוד מצוין.

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

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

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

הפתרון: תכנון מרחבי שמתחיל ב-Pinouts

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

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

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

כך הגעתי לפתרון עבור המקרה הספציפי, שכלל קריאה של ה-DIP Switch עם פיני GPIO ששייכים לפורטים נפרדים. מבחינת התוכנה מדובר בסופו של דבר בתוספת של ארבע-חמש פקודות, וזה הבדל חסר משמעות (שוב, במקרה הספציפי הזה!) כי שינויים במתגים אמורים להתרחש לעתים רחוקות מאוד, אם בכלל. הפיצול לפורטים שונים פינה לי את ה-UART הנוח, ומפה לשם ספגטי המוליכים הפך ל"עכביש" אסתטי מהמיקרו-בקר המרכזי אל כל החיבורים שמסביב.

רכיבים לא גמישים

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

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

אמנות או מדע?

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

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