מחלקה PWM – אפנון רוחב פולס¶
המחלקה PWM מוציאה אות מאופנן ברוחב פולס על Pin. זהו ה-API המודרני, החוצה-פורטים, עבור PWM; במצלמות STM32 OpenMV הוא עוטף את מנגנון ערוץ 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()
בנאים¶
- 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 ביט. ראו את מדריך העזר של ה-MCU הרלוונטי לטווחים המדויקים.
ב-STM32 ערוצי
PWMמרובים על אותו TIM חולקים תדר. הגדרתfreq()על מופע אחד משנה את הפלט של כל ערוץ אחר המחובר לאותו TIM.