برد Esp32 میکروپایتون Micropython

میکروپایتون با ESP32 بخش هفتم: راه اندازی PWM موج مربعی

نوشته شده توسط CiferTech

در این بخش از آموزش های میکروپایتون در بستر ESP32 قصد داریم نحوه ایجاد موج های مربعی یا به اصطلاح موج های PWM را به شما آموزش دهیم. موج های PWM در مواردی بسیاری کاربرد دارند برای مثال کنترل نور LED یا راه‌اندازی سروو موتور ها و تغییر درجه حرکت سروو استفاده می‌شود. در ادامه آموزش PWM در میکروپایتون با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


روش کار موج مربعی یا PWM


موج مربعی یا pwm یا Pulse Width Modulation به معنی مدولاسیون پهنای پالس، روشی برای تنظیم توان الکتریکی، با تغییردادن زمان قطع‌ و‌ وصل شدن منبع در هر سیکل است. در واقع pwm یک سیگنال مربعی می‌باشد که در یک زمان می تواند ۱ یعنی ۵لت و یا ۰ که یعنی ۰ولت باشد که در این بین ما با تغییر Duty Cycle به نتیجه دلخواه که در نور led، حرکت در سروو و موارد دیگر می شویم. برای مثال اگر Duty Cycle یک موج PWM برابر با ۸۰% باشد یعنی در هر سیکل ۸۰% ولتاژ برابر ۵ولت و ۲۰% ولتاژ برابر۰ است.در شکل زیر PWM نشان داده شده است.

آموزش PWM در میکروپایتون - دیجی اسپارک

 

از مواردی که PWM در آن کاربرد دارد کنترل سروو متور ها است. سروو موتور نوعی موتور است که می تواند با دقت زیادی بچرخد. به طور معمول این نوع موتور از یک مدار کنترل تشکیل شده است که بازخوردی را در مورد موقعیت فعلی شافت موتور ارائه می دهد، این بازخورد به موتورهای سروو اجازه می دهد تا با دقت زیادی بچرخند. انواع سرو موتورها بر اساس کاربرد آنها در انواع مختلف طبقه بندی می شوند ، مانند سروو موتور AC و موتور سروو DC.

 


توابع PWM در میکروپایتون


PWM را می توان در تمام پین های دارای خروجی فعال (output-enabled) استفاده کرد. فرکانس پایه می تواند از ۱ هرتز تا ۴۰ مگاهرتز متغیر باشد، اما یک مورد وجود دارد. با افزایش فرکانس پایه وضوح دیوتی سایکل کاهش می یابد. در اولین مرحله برای استفاده از pwm در برد های esp32 با کمک میکروپایتون پکیج های pin و pwm ار از machine فراخوانی می‌کنیم.
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()

 


وسایل مورد نیاز


سروو موتور SG90

برد ESP32

کابل جهت اتصالات

 

 


کلام آخر با سایفر


در آخر باید این مورد را ذکر کنم که استفاده از pwm تنها به راه‌اندازی سروو موتور ها نیست و در پروژه های مختلف مصارف متفاوتی دارد که قطعا با تجربه سناریو های مختلف به این نکته خواهید رسید.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری آموزش PWM در میکروپایتون در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه