במקום לקנות מכשיר סיני זול מוכן, לקחתי רכיבים סיניים זולים והרכבתי מהם לבד מכשיר בדיקה פשוט, עם כמה פיצ'רים שנועדו להפוך אותו לידידותי במיוחד בהקשר של פיתוח מבוסס ארדואינו.
לטסטרים הקנויים הפשוטים, שנמכרים במחיר זעום באתרים הסיניים, יש שלושה מצבי עבודה: אוטומטי, שמבצע הזזה של הסרבו מקצה לקצה שוב ושוב, "ניוטרל" שגורם לסרבו לעבור לנקודה שבאמצע הטווח ולהישאר שם, וידני שבו הסרבו זז בהתאם לסיבוב ידני של הפונטציומטר שבמכשיר. כמו כן, אין להם אספקת חשמל מובנית – צריך גם לרכוש ולחבר בית סוללות. קיימים טסטרים משוכללים מעט יותר, עם יציאות מרובות שנשלטות בנפרד, ותצוגה דיגיטלית של משך הסיגנל שנשלח לכל אחת (במיליוניות שנייה). בינינו, שני סוגי הטסטרים האלה מספיקים לצרכים שלי, אבל החלטתי בכל זאת להכין משהו בעצמי.
נתחיל באיפיון, שנובע כמובן ממה שאני צריך כרגע ולא בהכרח יתאים לי בעתיד, או למישהו אחר. הטסטר צריך להיות מופעל בסוללה כדי שאוכל לנייד אותו. אני צריך לבדוק סרבו אחד בלבד בכל פעם ואני יודע שהסרבו הזה יהיה קטן (=צריכת חשמל נמוכה יחסית). אני רוצה שליטה מדויקת עד לרמת הדיוק של ספריית הסרבו של ארדואינו ובאותה סקאלה, ומה שהכי חשוב לי – ושלא ראיתי באף טסטר סיני זול – שתהיה אפשרות לכוון את הסיגנל לפני שאני שולח אותו למנוע, ולנתק את הסרבו מיידית מהסיגנל אם אני רואה שמשהו מתחיל להשתבש. לסיום, רציתי שהכול יורכב מחלקים ורכיבים שיש לי בהישג יד.
התחלתי מהסוללה. ברמה העקרונית סוללת 9V היא בחירה די גרועה להתקן כזה, כי היא חלשה וכי המתח שלה גבוה יחסית ל-5V הסטנדרטיים, מה שאומר שחלק מהאנרגיה תלך לאיבוד בהמרה. מצד שני הצטברו אצלי יותר מדי סוללות כאלה ובתי סוללה בשבילן, והן קטנות יחסית לחלופה הסבירה (ארבע AA). במקום פוטנציומטר מסתובב בחרתי פוטנציומטר לינארי גדול, שוב – כי היו לי כמה כאלה ורציתי לבדוק את ההתנהגות שלהם בשטח. שני החלקים האלה הכתיבו את גודל ה-Protoboard שאליו הלחמתי הכול בסופו של דבר – 110×93 מ"מ.
כדי לחסוך זמן בכתיבת הקוד, ביססתי את הלוגיקה של המערכת על ארדואינו: לוח תואם-נאנו סיני עם מיקרו-בקר ATmega168. חוץ מקריאת הפוטנציומטר והשליטה בסרבו, יש לו מספיק פינים כדי לנהל ישירות גם תצוגת 7 מקטעים (עם שלוש ספרות), כל עוד מוודאים שהזרם הכולל במקרה הקיצוני – הספרה 8 שבה כל הלדים הפנימיים דולקים – לא גבוה מדי. בכל עשרים אלפיות שנייה הארדואינו דוגם את הפוטנציומטר, ממיר את הערך האנלוגי לסולם 0-180 שמתאים לפונקציה Servo.write ושולח אותו לסרבו. במקביל, הערך מעודכן כל הזמן בתצוגה: הספרות מתעדכנות במחזוריות לפי הסדר, כל אחת מוצגת לאלפית שנייה כך שהמספר נראה לעין יציב לגמרי. המרת המתח מהסוללה ל-5V מתבצעת על ידי לוח הארדואינו עצמו. הכפתור האדום הוא לכיבוי והדלקה כלליים.
כדי לנתק את הסרבו מהסיגנל הוספתי לחצן זמני (הצהוב בתמונות) ששלט על החיבור של המנוע לאדמה. למה דווקא האדמה, ולא הקו של סיגנל הבקרה? למען האמת, אין לי הסבר טוב: הכול היה מאולתר ומאוחר בלילה… אבל זה עבד. הסרבו קיבל את הערך שבתצוגה רק כשהכפתור הצהוב היה לחוץ, ובשאר הזמן הוא מת לגמרי. בשיטה הזו אפשר לכוון לערכים מדויקים בלי לשגע את המנוע, וזה עוזר לצמצם כל מיני קפיצות בלתי-נשלטות שעלולות להזיק למערכת שבה הסרבו מותקן, אם המכניקה בה עדינה מדי.
בשביל הפיניש, תכננתי בזריזות והדפסתי בתלת-ממד שוליים וקורות רוחביות, שמחזיקים את המעגל, מגינים עליו ממגע לא רצוי עם חפצי מתכת ומגינים על המשתמש מהשפיצים החדים של כמה הלחמות בצד התחתון. הפלסטיקים האלה הפריעו לביצוע שינויים במעגל, אבל אזרתי אומץ לבצע בכל זאת "ניתוח" שבו שיניתי את החיווט כדי שהכפתור הצהוב יחבר את הסיגנל במקום את האדמה. עכשיו אפשר להשתמש במכשיר גם לבדיקה של בקרי ESC למנועים של רחפנים וטיסנים, שבהם החשמל מגיע מסוללת כלי הטיס דרך בקר המנוע עצמו.
ההתקן שלי נוח במיוחד לזיהוי של "אזורים מתים" – הטווחים בתחילת הסקאלה ובסופה שבהם מנועי סרבו מסוימים לא מגיבים כלל. מנוע זול, או ישן ולא לגמרי תקין, עשוי לעצור (נניח) ב-170 מעלות, ואם נשלח סיגנל לערך גבוה יותר, המנוע פשוט יתאמץ לשווא ויבזבז חשמל. עם הטסטר הזה קל למצוא את הגבולות האמיתיים – רואים בעין וגם שומעים כשהמנוע מגיע לקצה הטווח שלו – וכיוון שהם מוצגים בסקאלה של ארדואינו, אפשר פשוט להעתיק אותם לקוד שלנו בלי המרות וניחושים נוספים.
בעיה בלתי צפויה התגלתה בפוטנציומטר עצמו. הסתבר שהוא לא לינארי באמת, אלא רגיש הרבה יותר במרכז מאשר בקצוות. כדי להגיע מ-0 עד 10 צריך לעבור בערך רבע מאורך הפוטנציומטר, וכנ"ל לגבי 170-180. כל שאר הטווח (כ-90% ממנו!) מתרכז ברבעונים השני והשלישי. למרות זאת, עם קצת זהירות אפשר בכל זאת להגיע לכל מספר רצוי.