tb6612 --- مشغل المحرك TB6612

توفر الوحدة tb6612 مشغلًا لمشغل المحرك TB6612. وهي تكشف عن صنف Motor لقيادة محرك تيار مستمر واحد على إحدى قناتين، وصنف Stepper لقيادة محرك خطوي بأربعة أسلاك.

يستخدم كلا الصنفين pyb.Timer(4) بتردد 1 كيلوهرتز على الدبوسين 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)

إنشاء وحدة تحكم بمحرك تيار مستمر مرتبطة بإحدى قناتي TB6612.

  • channel: رقم قناة المحرك. 1 يستخدم دبابيس الاتجاه P3/P2 ودبوس PWM P7 (المؤقت 4، القناة 1). 2 يستخدم دبابيس الاتجاه P1/P0 ودبوس PWM P8 (المؤقت 4، القناة 2).

set_speed(pwm: int) None

ضبط سرعة المحرك واتجاهه.

  • pwm: دورة عمل ذات إشارة في النطاق -100 إلى 100. تقود القيم الموجبة المحرك للأمام، والقيم السالبة تقوده للخلف. تُطبَّق القيمة المطلقة كنسبة دورة عمل PWM المئوية على دبوس الطاقة.

الصنف Stepper

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

إنشاء وحدة تحكم بمحرك خطوي بأربعة أسلاك. تُهيّئ دبابيس الاتجاه 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]

مولّد يُنتج بلا نهاية نمط القيادة رباعي الأطوار (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 يقدّم هذا العدد بالضبط من الأطوار؛ والاتجاه ثابت (مولّد الطور الأساسي يتكرر إلى الأمام فقط).