الفئة PWM -- تعديل عرض النبضة (pulse-width modulation)¶
تُخرج الفئة PWM إشارة معدّلة بعرض النبضة على Pin. وهي الواجهة البرمجية الحديثة عبر المنافذ لـ PWM؛ وعلى كاميرات OpenMV من نوع STM32 تغلّف آلية قناة pyb.Timer الأساسية، لذا تشغل كل نسخة من PWM قناة مؤقت واحدة.
مثال على الاستخدام:
from machine import PWM, Pin
# 50 Hz PWM on a header pin with a 12.5 % duty.
pwm = PWM(Pin("P7"), freq=50, duty_u16=8192)
pwm.duty_u16(32768) # change duty to 50 %
pwm.init(freq=5000, duty_ns=5000) # re-init at 5 kHz, 5 us pulse
pwm.duty_ns(3000) # 3 us pulse
pwm.deinit()
البواني (Constructors)¶
- class machine.PWM(dest: Pin | int, *, freq: int | None = None, duty_u16: int | None = None, duty_ns: int | None = None, invert: bool = False)¶
أنشئ كائن
PWMيشغّلdest(وهوPinعلى كاميرات OpenMV). الوسائط المسماة مكافئة لاستدعاءinit()فور الإنشاء:freq-- تردد PWM بوحدة Hz.duty_u16-- دورة العمل كنسبةduty_u16 / 65535.duty_ns-- عرض النبضة بالنانوثانية.invert-- إذا كانتTrue، اعكس قطبية الإخراج.
يمكن تمرير واحد على الأكثر من
duty_u16/duty_nsفي كل مرة. قد يؤثر ضبطfreqعلى نسخPWMالأخرى التي تشارك نفس المؤقت الأساسي (وهذا صحيح على STM32 -- إذ تعمل كل قناة من قنوات TIM معيّن بنفس التردد).الطرق¶
- init(*, freq: int | None = None, duty_u16: int | None = None, duty_ns: int | None = None) None¶
أعد تكوين خرج PWM. يُحدَّث فقط ما يُمرَّر من الوسائط؛ وتحتفظ البقية بقيمها السابقة. انظر الباني لمعرفة معنى كل وسيطة.
- freq() int¶
- freq(value: int, /) None
احصل على تردد PWM أو اضبطه.
بدون وسيطة، تُعيد التردد الحالي بوحدة Hz.
مع وسيطة
valueواحدة، اضبط التردد على تلك القيمة بوحدة Hz. قد تطلقValueErrorإذا كان التردد خارج النطاق القابل للتحقيق بواسطة المؤقت الأساسي.
القيود¶
تردد PWM ودقة دورة العمل مترابطان على كل مؤقت عتادي: عند الترددات العالية، تتسع خطوات أقل للعدّاد ضمن الدورة وبالتالي تكون بتات أقل من البتات المنخفضة في
duty_u16ذات معنى.يعتمد تردد PWM القابل للتحقيق على مصدر ساعة المؤقت والمقسّم المسبق (prescaler). يكون STM32 TIM2 / TIM5 بطول 32 بت على معظم القطع (وكذلك TIM3 / TIM4 على STM32N6)، مما يمنح نطاقات تردد ودورة عمل أوسع؛ أما المؤقتات المتبقية فهي بطول 16 بت. انظر دليل مرجع المتحكم الدقيق المعني لمعرفة النطاقات الدقيقة.
على STM32 تشارك قنوات
PWMالمتعددة على نفس TIM التردد نفسه. يؤدي ضبطfreq()على نسخة واحدة إلى تغيير خرج كل قناة أخرى متصلة بذلك TIM.