3.15. בקרת מנוע DC¶
מנוע DC עם מברשות הוא סליל חוט על ציר בתוך שדה מגנטי. כשמעבירים זרם דרך הסליל, השדה מפעיל עליו כוח; הכוח הופך למומנט על הציר. מברשות בתוך המנוע מחליפות את כיוון הזרם בסליל ככל שהציר מסתובב, כך שהמומנט תמיד דוחף את הציר באותו כיוון. הפעל מתח DC על שני מובילי המנוע והציר יסתובב; החלף את הקוטביות והוא יסתובב לכיוון השני.
מנועים בדרך כלל זקוקים למאות מיליאמפר עד כמה אמפרים, במתחי אספקה הגבוהים ממסילת הלוגיקה של 3.3 V של המצלמה. פין GPIO יכול לספק בסדר גודל של 25 mA ואינו יכול להפוך קוטביות – הוא יכול רק להניע את שתי המסילות שלו. שלב ההנעה בין המצלמה למנוע צריך לשאת את הזרם של המנוע, לנתב אספקת מנוע נפרדת במתח גבוה יותר, ולאפשר למצלמה להפוך את הקוטביות בפקודה. גשר ה-H עם ארבעת הטרנזיסטורים הוא המענה הסטנדרטי.
3.15.1. גשר ה-H¶
גשר H הוא ארבעה מתגים המסודרים בצורת H סביב המנוע:
גשר ה-H: ארבעה מתגים (S1 – S4) מחברים את המנוע M בין Vmotor להארקה.¶
סגירת זוגות שונים של מתגים בוחרת מה המנוע רואה במובילים שלו:
S1 + S4 סגורים, S2 + S3 פתוחים. הזרם זורם מ-Vmotor דרך
S1, אלA, לרוחב המנוע אלB, ודרךS4אל ההארקה. המנוע מסתובב לכיוון אחד.S2 + S3 סגורים, S1 + S4 פתוחים. הזרם זורם בכיוון ההפוך דרך המנוע. המנוע מסתובב לכיוון השני.
כל הארבעה פתוחים. שני מובילי המנוע צפים; המנוע מתגלגל בחופשי.
S3 + S4 סגורים (או S1 + S2 סגורים). שני מובילי המנוע קשורים לאותה מסילה; האנרגיה הקינטית של המנוע עצמו מניעה זרם שהזוג הסגור מקצר כחום. המנוע בולם.
השילוב האסור הוא סגירת שני המתגים באותה עמודה – S1 + S3 או S2 + S4 – היוצרת קצר חשמלי מ-Vmotor ישירות להארקה. זהו shoot-through, והקוד של המצלמה לא חייב לאפשר אותו.
בפועל ארבעת המתגים הם MOSFETs (שהוצגו בעמוד התאמת מתח (Level shifting)) בתוך IC מנהל התקן משולב. השבב חושף שניים או שלושה פיני קלט ברמת לוגיקה הממופים פנימית לארבעת המתגים וכולל לוגיקת נעילה הדדית המונעת shoot-through, כך שהקוד של המצלמה אינו צריך לנהל זאת ישירות.
3.15.2. PWM וההשראות של המנוע¶
הגדרת מהירות המנוע דורשת יותר מהפעלה מלאה וכיבוי מלא. הטריק זהה לזה שבו השתמשנו עבור נוריות LED ב-עמעום LED באמצעות PWM: לפעום את ההנעה בתדר גבוה ולתת לעומס למצע את התוצאה. עבור LED הממַצע היה העין; עבור מנוע זהו הסליל עצמו.
לסליל מנוע יש השראות משמעותית. הזרם דרך משרן אינו יכול להשתנות באופן מיידי; הוא משתנה בקצב הפרופורציוני למתח שעליו. פעימת הגשר במצב פתוח וסגור ב-20 kHz מעלה את זרם הסליל במהלך כל שלב הפעלה, ובמהלך שלב הכיבוי הזרם חייב להמשיך לזרום – הסליל הופך את המתח שעל עצמו כדי לשמר אותו.
ללא מקום לזרום אליו, זרם זה היה מקפיץ את המתח על המתג שזה עתה נפתח כלפי מעלה ועלול היה לפגוע בטרנזיסטור. דיודות גלגול חופשי על כל מתג – לעיתים קרובות פשוט דיודות הגוף של ה-MOSFETs עצמן בתוך שבב מנהל ההתקן – מספקות לזרם את הנתיב הדרוש לו. הוא זורם דרך דיודה וחזרה דרך אחד המתגים שעדיין סגורים, ומשלים לולאת גלגול חופשי שבה הזרם דועך בהדרגה דרך ההתנגדויות הקטנות של הגשר והמנוע עצמו. הדיודה גם מקבעת את המתח על המתג שנפתח בטווח של ירידת דיודה אחת מהמסילה שאליה הלולאה חוזרת, הרבה בתוך אזור ההפעלה הבטוח של ה-MOSFET.
הממוצע של הזרם על פני כל מחזור PWM הוא מה שמייצר מומנט, וממוצע זה עוקב אחר מחזור העבודה באופן ליניארי – הכפלת מחזור העבודה מכפילה בקירוב את המומנט, ובעומס קבוע מכפילה בקירוב את המהירות. בניגוד לעמעום LED, שבו התגובה הלא-ליניארית של העין דורשת עקומה, סריקה ליניארית של duty_u16 כבר מתאימה לסריקה ליניארית של מאמץ המנוע.
תדר ה-PWM צריך רק לעבור שני ספים:
מעל ~20 kHz הנשא נמצא מחוץ לתחום השמיעה האנושי. מתחת לכך, הכוח המגנטי על הסליל עולה ויורד עם כל פעימת PWM וההגלילות והפחים רוטטים פיזית בתדר הנשא – המנוע הופך למעשה לרמקול קטן הפולט צליל בגובה ה-PWM.
הרבה מעל ~50 kHz ה-MOSFETs ומנהלי השער שלהם מתחילים לאבד יעילות לטובת הפסדי החלפה. במהלך כל מעבר הפעלה-כיבוי ה-MOSFET נושא לרגע גם מתח משמעותי וגם זרם משמעותי, ומפזר פרץ קטן של הספק כחום; את קיבול השער של ה-MOSFETs צריך גם לטעון ולפרוק בכל מחזור, ועל כך משלם שבב מנהל ההתקן. שני המחירים מתרחבים עם תדר ה-PWM, כך שבקצבים גבוהים החום מההחלפה יכול להשתוות לחום מהולכת זרם המנוע.
20 kHz הוא ברירת המחדל הנוחה למנועים בגודל תחביבני.
3.15.3. הנעת גשר H¶
שבב מנהל התקן של גשר H עם שני קלטים ממפה את IN1 ו-IN2 לארבעת המתגים בערך כך:
IN1 = 0, IN2 = 0– גלגול חופשי (כל ארבעת המתגים פתוחים).IN1 = 1, IN2 = 0– הנעה בכיוון אחד.IN1 = 0, IN2 = 1– הנעה בכיוון השני.IN1 = 1, IN2 = 1– בלימה.
הנעת שני הקלטים כפלטי PWM מאפשרת למצלמה להגדיר את הכיוון על ידי בחירה איזה מבין שני הפינים נושא את מחזור העבודה, ואת המהירות על ידי ערך מחזור העבודה עצמו:
import time
from machine import PWM, Pin
in1 = PWM(Pin("P7"), freq=20_000, duty_u16=0)
in2 = PWM(Pin("P8"), freq=20_000, duty_u16=0)
def drive_a(speed): # speed: 0..65535
in1.duty_u16(speed)
in2.duty_u16(0)
def drive_b(speed):
in1.duty_u16(0)
in2.duty_u16(speed)
def coast():
in1.duty_u16(0)
in2.duty_u16(0)
def brake():
in1.duty_u16(65535)
in2.duty_u16(65535)
drive_a(32768) # half speed in direction A
time.sleep(2)
drive_b(16384) # quarter speed in direction B
time.sleep(2)
coast()
מדרון מכיבוי למלא וחזרה נותן התנעה ועצירה חלקות:
for d in range(0, 65535, 256):
in1.duty_u16(d)
time.sleep_ms(10)
for d in range(65535, 0, -256):
in1.duty_u16(d)
time.sleep_ms(10)
3.15.4. מנהלי התקן של כיוון-ומהירות¶
משפחה שנייה של שבבי גשר H חושפת ממשק נוח יותר: קלט כיוון דיגיטלי אחד (לעיתים קרובות מסומן DIR או PH עבור ”phase“) בתוספת קלט מהירות אחד (לעיתים קרובות PWM או EN עבור ”enable“). פין הכיוון בוחר לאיזה כיוון הגשר מניע; מחזור העבודה על פין המהירות מגדיר את הזרם הממוצע.
זה קל יותר להנעה מתוכנה מאשר ערכת שני קלטי ה-PWM. שני האותות תואמים לאופן שבו הבעיה מנוסחת בדרך כלל – ”סובב בכיוון זה, במהירות זו“ – כך שהקוד יכול לומר set_direction(forward); set_speed(50) במקום להסתעף בין in1 ל-in2. נדרש רק ערוץ PWM אחד, מה שמשחרר את הערוץ האחר על אותו טיימר למשימה לא קשורה. ופין הכיוון יכול להישאר חונה בין שינויים מבלי להפעיל מחדש את הגשר, כך ששינוי מהירות בכיוון קבוע נוגע רק באוגר אחד.
import time
from machine import PWM, Pin
dir_pin = Pin("P8", Pin.OUT)
speed = PWM(Pin("P7"), freq=20_000, duty_u16=0)
def drive(direction, speed_u16):
dir_pin.value(direction) # 0 or 1
speed.duty_u16(speed_u16) # 0..65535
drive(0, 32768) # direction A at half speed
time.sleep(2)
drive(1, 16384) # direction B at quarter speed
time.sleep(2)
speed.duty_u16(0) # stop
מה ש“עצירה“ עושה בפועל על סוג זה של מנהל התקן – גלגול חופשי או בלימה – תלוי בשבב. עם מנהל התקן בעל שני קלטים הקוד של המצלמה בוחר (שני הקלטים נמוכים לגלגול חופשי, שניהם גבוהים לבלימה); עם מנהל התקן של כיוון-ומהירות השבב מחליט, ולכן כדאי להציץ בגיליון הנתונים לפני שמסתמכים על אחת ההתנהגויות.