در این بخش از آموزش های میکروپایتون در بستر ESP32 قصد داریم نحوه ایجاد موج های مربعی یا به اصطلاح موج های PWM را به شما آموزش دهیم. موج های PWM در مواردی بسیاری کاربرد دارند برای مثال کنترل نور LED یا راهاندازی سروو موتور ها و تغییر درجه حرکت سروو استفاده میشود. در ادامه آموزش PWM در میکروپایتون با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
روش کار موج مربعی یا PWM
موج مربعی یا pwm یا Pulse Width Modulation به معنی مدولاسیون پهنای پالس، روشی برای تنظیم توان الکتریکی، با تغییردادن زمان قطع و وصل شدن منبع در هر سیکل است. در واقع pwm یک سیگنال مربعی میباشد که در یک زمان می تواند ۱ یعنی ۵لت و یا ۰ که یعنی ۰ولت باشد که در این بین ما با تغییر Duty Cycle به نتیجه دلخواه که در نور led، حرکت در سروو و موارد دیگر می شویم. برای مثال اگر Duty Cycle یک موج PWM برابر با ۸۰% باشد یعنی در هر سیکل ۸۰% ولتاژ برابر ۵ولت و ۲۰% ولتاژ برابر۰ است.در شکل زیر PWM نشان داده شده است.
از مواردی که PWM در آن کاربرد دارد کنترل سروو متور ها است. سروو موتور نوعی موتور است که می تواند با دقت زیادی بچرخد. به طور معمول این نوع موتور از یک مدار کنترل تشکیل شده است که بازخوردی را در مورد موقعیت فعلی شافت موتور ارائه می دهد، این بازخورد به موتورهای سروو اجازه می دهد تا با دقت زیادی بچرخند. انواع سرو موتورها بر اساس کاربرد آنها در انواع مختلف طبقه بندی می شوند ، مانند سروو موتور AC و موتور سروو DC.
توابع PWM در میکروپایتون
from machine import Pin, PWM
در ادامه برای مشخص کردن پین مدنظر برای اعمال سیگنال pwm یک آبجکت به شکل زیر تعریف میکنیم.
pwm0 = PWM(Pin(0))
در ادامه برای تنظیم و مشخص کردن فرکانس pwm از تایع زیر استفاده میکنیم.
pwm0.freq(1000)
همپنین برای تنظیم دیوتی سایکل در pwm نیز تنها با استفاده از یک تابع قادر به تنظیم آن خواهیم بود، برای نمونه به کد زیر توجه کنید.
pwm0.duty(200)
همانطور که اطلاع دارید زبان پایتون به کوتاه و مختصر بودن معروف است اما با توابع بالا که تعریف چندین خط کد ایجاد و مشغول میشوند، به همین دلیل با استفاده از خط کد زیر قادر خواهیم بود تمام فرآیند بالا را در یک خط کد تعریف و اجرا کنیم.
pwm2 = PWM(Pin(2), freq=20000, duty=512)
در مواردی شما نیاز دارید مواردی که از فرآیند های در حال اجرا دریافت کنید و نیازی به اعمال و تعریف آن ها ندارید، برای مثال نیاز دارید فرکانس و یا دیوتی سایکل را بدست آورید. در این موارد میتوایند از توابع زیر استفاده کنید.
در این کد همانطور که از ظاهر آن مشخص است مقادیر فرکانس pwm را بدست خواهیم آورد.
pwm0.freq()
در این خط کد مقادیر دیوتی سایکل را بدست خواهیم آورد.
pwm0.duty()
فرض کنید برای یک پین تمام موارد برای راهاندازی pwm vh تعریف کردید امام برای مواردی نیار به غیر فعال کردن آن دارید، در این موارد نیاز به حذف کد یا کامنت کردن آن نیست با استفاده از خط کد زیر و وارد کردن پین مورد نطر قادر به غیر فعال کردن آن هستید.
pwm0.deinit()
وسایل مورد نیاز
برد ESP32
کلام آخر با سایفر
در آخر باید این مورد را ذکر کنم که استفاده از pwm تنها به راهاندازی سروو موتور ها نیست و در پروژه های مختلف مصارف متفاوتی دارد که قطعا با تجربه سناریو های مختلف به این نکته خواهید رسید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری آموزش PWM در میکروپایتون در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.