tb6612 — מנהל התקן מנוע TB6612

המודול tb6612 מספק מנהל התקן עבור מנהל מנוע TB6612. הוא חושף מחלקת Motor להנעת מנוע DC יחיד על אחד משני ערוצים, ומחלקת Stepper להנעת מנוע צעד (stepper) בעל 4 חוטים.

שתי המחלקות משתמשות ב-pyb.Timer(4) בתדר 1 kHz על הפינים P7 ו-P8 עבור פלט הספק PWM. פיני הכיוון של Motor הם P3/P2 (ערוץ 1) ו-P1/P0 (ערוץ 2). מחלקת Stepper משתמשת בכל ארבעת הפינים (P3, P2, P1, P0) בתוספת שני ערוצי PWM.

דוגמה:

from tb6612 import Motor, Stepper

m = Motor(1)
m.set_speed(50)      # 50% duty forward

s = Stepper(stepnumber=200, rpms=2, power=50)
s.step(100)          # advance 100 steps

מחלקת Motor

class tb6612.Motor(channel: int)

בונה בקר מנוע DC הקשור לאחד משני הערוצים של TB6612.

  • channel: מספר ערוץ המנוע. 1 משתמש בפיני הכיוון P3/P2 ובפין PWM P7 (טיימר 4, ערוץ 1). 2 משתמש בפיני הכיוון P1/P0 ובפין PWM P8 (טיימר 4, ערוץ 2).

set_speed(pwm: int) None

מגדיר את מהירות המנוע וכיוונו.

  • pwm: מחזור עבודה (duty cycle) עם סימן בטווח -100 עד 100. ערכים חיוביים מניעים את המנוע קדימה, ערכים שליליים מניעים אותו לאחור. הערך המוחלט מיושם כאחוז מחזור העבודה של ה-PWM אל פין ההספק.

מחלקת Stepper

class tb6612.Stepper(stepnumber: int = 200, rpms: int = 2, power: int = 50)

בונה בקר מנוע צעד בעל 4 חוטים. מאתחלת את פיני הכיוון P3, P2, P1, P0 ואת שני ערוצי הספק ה-PWM על P7 ו-P8, ולאחר מכן מיישמת את המהירות וההספק המבוקשים.

  • stepnumber: מספר הצעדים המלאים לכל סיבוב של מנוע הצעד המחובר. משמש יחד עם rpms לחישוב ההשהיה בין הצעדים.

  • rpms: מהירות סיבוב יעד בסיבובים לדקה. מועבר אל set_speed().

  • power: אחוז מחזור עבודה של PWM (0-100) המיושם על שני ערוצי ההספק. מועבר אל set_power().

phase_list() Generator[tuple[int, int, int, int], None, None]

מחולל (generator) המניב ללא הרף את תבנית ההנעה בארבעה שלבים (1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1) המשמשת את step(). כל איבר בטאפל הוא הערך שייכתב אל pin1, pin2, pin3, pin4 בהתאמה.

set_speed(rpms: int) None

מעדכן את מהירות הצעדים.

  • rpms: מהירות סיבוב יעד בסיבובים לדקה. ההשהיה לכל חצי-צעד (במיקרו-שניות) מחושבת מחדש כ-1000000 / (rpms * stepnumber) / 2.

set_power(power: int) None

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

  • power: אחוז מחזור עבודה בטווח 0 עד 100.

step(num: int) None

מקדם את מנוע הצעד ב-num מעברי שלב, תוך יישום השלב הבא מ-phase_list() והמתנה במשך ההשהיה המוגדרת בין הצעדים (באמצעות pyb.udelay) בין המעברים.

  • num: מספר שלבי הצעד לקידום. כל קריאה ל-step מקדמת בדיוק מספר זה של שלבים; הכיוון קבוע (מחולל השלבים הבסיסי מבצע איטרציה רק קדימה).