راه‌اندازی PWM در STM32 | قسمت بیست و یکم آموزش STM32 با توابع LL

blog
۱۴۰۰-۱۱-۰۵
1 دقیقه

در قسمت قبلی راه‌اندازی LCD Nokia به کمک واحد SPI (نمایش انیمیشن روی LCD Nokia) را به صورت کامل یاد گرفتیم و در بخش‌های قبلی با تایمرها آشنا شدیم و برخی کاربردهای آن‌ها را دیدیم. یکی دیگر از کاربردهای تایمر، حالت PWM (Pluse width Modulation) یا همان مدولاسیون پهنای پالس است. در این بخش با نحوه استفاده از این حالت آشنا خواهیم شد.

 

همانطور که در شکل بالا مشخص است، به وسیله PWM میتوانیم از طریق کنترل Duty Cycle یا زمان on بودن و off بودن موج مربعی، ولتاژ متوسطی که اعمال می‌کنیم را کنترل کنیم. این عمل کاربردهای بسیار زیادی دارد که از جمله آن‌ها می‌توان به کنترل شدت روشنایی، کنترل سرعت موتور و .. اشاره کرد.

در ادامه این آموزش با چگونگی کنترل شدت روشنایی یک LED آشنا می‌شویم.

 

 ایجاد پروژه

مراحل ساخت پروژه را مانند قبل طی می‌کنیم، کلاک و دیباگ را تنظیم می‌کنیم. سپس تایمر1 را به صورت زیر در حالت PWM تنظیم می‌کنیم:

 

بعد از تنظیم تایمر، بقیه بخش‌ها را نیز مانند گذشته تنظیم می‌کنیم و وارد محیط Keil می‌شویم.

 

نوشتن کد

برای استفاده از PWM قبل از هر چیز ، باید شمارنده و خروجی تایمر1 را فعال کنیم، همچنین متغیرهای مورد نیاز را تعریف کنیم؛

درون متغیر Max مقدار رجیستر ARR به اضافه یک  را قرار داده‌ایم. اکنون به وسیله این مقدار، میتوانیم تعیین کنیم که به چه Duty Cycle ای نیاز داریم. به وسیله کد زیر، شدت نور LED به آرامی زیاد میشود تا به بیشترین مقدار خود برسد و این عمل تکرار می‌شود. همانطور که توضیح داده شد این عمل از طریق مدولاسیون پهنای پالس و کنترل میانگین ولتاژ اعمال شده به LED انجام می‌شود؛

در بخش بعدی در مورد نحوه ایجاد شکل موج‌های مختلف توسط تایمر در حالت PWM صحبت خواهیم کرد.

لینک پروژه در گیت هاب

اطلاعات
4
0
لینک و اشتراک
profile

سیاوش

متخصص الکترونیک

کارشناس ارشد الکترونیک دیجیتال، علاقه‌مند به یادگیری

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
هارونی گفت :
۱۴۰۱-۰۹-۲۲ ۰۷:۳۲

سلام
از آموزش کامل و روانتان متشکرم.
یه سوالی دارم
وقتی میخوام توی فایل اصلی و تابعِ main، مقدارِ متغیری رو توی تابع LL_TIM_OC_SetCompareCH1
بریزم کامپایلر ارور میده.
میشه لطفا توضیح بدید که متغیری که میخوام مقدارشو به این تابع بدم، باید از چه نوعی باشه و کجا تعریفس کنم؟
متشکرم

profile
Zeus ‌ گفت :
۱۴۰۱-۱۱-۰۴ ۰۸:۵۵

سلام دوست عزیز
اگر متن خطا رو بگید خیلی بهتر میشه به دلیل اون پی برد 🙂

profile
محمد گفت :
۱۴۰۱-۰۱-۲۳ ۱۶:۲۷

این آموزش خیلی کاربردی و مفید هست. مرسی.
فقط مدتی هست که آموزش جدید نذاشتید، امیدوارم ادامه دار باشه این سری LL
اگر پروتکل های ارتباطی دیگه مثل CAN و… هم بگید خیلی خوب میشه.
واقعیت سیسوگ از همه جا بهتر مفاهیم رو توضیح میده، مشخصه که وقت زیادی صرف گردآوری مطالب و … میکنید.
مرسی از تیم خوبتون.

profile
Sisoog Os گفت :
۱۴۰۱-۰۱-۲۳ ۱۶:۳۱

خواهش میکنم دوست عزیز
شما لطف دارید
ولی ما که داریم این آموزش را ادامه میدیم خیلی وفته و امیدواریم تمومش هم بکنیم :-))

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله