آموزش الکترونیک

استفاده از PWM در لانچ پد MSP430 و کنترل نور LED

سلام. استفاده از PWM در لانچ پد MSP430 و کنترل نور LED را آماده کردیم.

این آموزش بخشی از سری آموزش های لانچ پد MSP430 است. در این آموزش ما نحوه استفاده از PWM در لانچ پد را یاد میگیریم. ما اینکار را با کنترل میزان روشنایی یک ال ای دی انجام میدهیم. این آموزش بسیار به آموزش قبلی ما که استفاده از آنالوگ به دیجیتال در MSP430 است مربوط است زیرا ما از یک پتانسیومتر برای کنترل میزان روشنایی استفاده میکنیم.

در این آموزش ما ابتدا ولتاژ متغیر را از پتانسیومتر میگیریم و آن را به مقدار دیجیتال تبدیل میکنیم. سپس با استفاده از مقدار دیجیتال موج PWM و در نتیجه روشنایی ال ای دی را تنظیم میکنیم. فیلم عملکرد در انتهای صفحه قرار داده شده است.

PWM (مدولاسیون پهنای پالس) چیست؟

کلمه ی PWM مخفف Pulse Width Modulation است؛ بعدا دلیل این نام گذاری را خواهیم فهمید. اما فعلا PWM را به عنوان نوعی سيگنال که می تواند  از یک IC دیجیتال مانند میکروکنترلر یا تایمر 555 تولید شود، بشناسید. سیگنالی که از این راه تولید شده، یک رشته از پالس خواهد داشت و این پالس ها به شکل موج مربع خواهند بود. یعنی در هر زمان معینی موج یا بالا خواهد بود یا پایین. برای درک بهتر اجازه دهید، سيگنال 5 ولت PWM را در نظر بگیریم، در این حالت سیگنال PWM یا 5 ولت (بالا) یا 0 ولت در سطح زمین (پایین) خواهد بود. برای آشنایی کامل با PWM، مقاله PWM چیست را بخونید.

مدت زمانی که سیگنال ها بالا می مانند به عنوان “On time” نام گذاری می شوند و مدت زمانی که سیگنال پایین می ماند به عنوان “off time” نام گذاری می شود. برای یک سیگنال PWM باید به دو پارامتر مهم مرتبط با آن، یکی دوره ی کاری PWM و دیگری فرکانس PWM توجه کنیم.

چرخه وظیفه PWM

درصد زمانی که سیگنال PWM در حد بالا باقی می ماند به عنوان چرخه وظیفه خوانده می شود. اگر سیگنال همیشه روشن باشد ، در چرخه 100٪ کار قرار دارد و اگر همیشه خاموش باشد ، چرخه وظیفه 0٪ است.

چرخه وظیفه = مدت زمان روشن / (مدت زمان روشن + مدت زمان خاموش)

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

فرکانس PWM

فرکانس یک سیگنال PWM تعیین میکند که چقدر طول میکشد تا یک PWM یک دوره را کامل کند . یک دوره یعنی مدت زمان کامل روشن و خاموش شدن یک سیگنال PWM است که در بالا نشان داده شده است.

فرکانس = 1 / زمان دوره

زمان دوره = زمان روشن + زمان خاموش

Frequency = 1/Time Period
Time Period = On time + Off time

به طور معمول سیگنال های PWM تولید شده توسط میکروکنترلر در حدود 500 هرتز خواهند بود ، از چنین فرکانس های بالا در دستگاه های سوئیچینگ با سرعت بالا مانند اینونتر یا مبدل استفاده می شود . اما همه ی برنامه ها به سرعت بالا نیار ندارند . به عنوان مثال برای کنترل یک موتور servo  نیاز به تولید سیگنال PWM با فرکانس 50 هرتز داریم ،  بنابراین فرکانس سیگنال PWM نیز توسط برنامه برای همه میکروکنترلرها قابل کنترل است.

حتما ببینید :  نشتی خازن چیست؟ (آموزش کاهش نشت جریان خازن)

چگونه سیگنال های PWM را به ولتاژ آنالوگ تبدیل کنیم؟

برای کاربردهای ساده مانند کنترل سرعت موتور DC یا تنظیم روشنایی یک LED ، ما باید سیگنال های PWM را به ولتاژ آنالوگ تبدیل کنیم. این کار با استفاده از فیلتر RC به راحتی قابل انجام است و معمولاً در مواردی که یک ویژگی DAC لازم باشد استفاده می شود. مدار آن در زیر نشان داده شده است :

تبدیل سیگنال PWM به ولتاژ آنالوگ

در نمودار بالا نشان داده شده که رنگ زرد، سیگنال PWM و رنگ آبی یک ولتاژ آنالوگ خروجی است.  مقدار مقاومت R1 و خازن C1 را می توان بر اساس فرکانس سیگنال PWM محاسبه کرد اما معمولا از مقاومت 5.7K یا 10K و خازن 0.1u یا 1u استفاده می شود.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

مدار پروژه راه اندازی PWM با لانچ پد MSP430

مدار بسیار ساده است و فقط یک پتانسیومتر و یک مقاومت و خازن برای تشکیل یک مدار RC و یک Led دارد. از پتانسیومتر برای تهیه ولتاژ آنالوگ استفاده می شود که بر اساس آن می توان چرخه وظیفه سیگنال PWM را کنترل کرد. خروجی پتانسیومتر به پین P1.0 وصل شده است که می تواند ولتاژ های آنالوگ را ارائه دهد. سپس ما باید سیگنال PWM تولید کنیم که می توان با استفاده از پین P1.2 این کار را انجام داد ، سپس این سیگنال PWM به مدار فیلتر RC ارسال می شود تا سیگنال PWM را به ولتاژ آنالوگ تبدیل کند که سپس به LED داده می شود.

درک این نکته بسیار مهم است که همه پین ​​های موجود در برد MSP نمی توانند ولتاژ آنالوگ را بخوانند یا سیگنال PWM تولید کنند. پین های مشخصی که می توانند کارهای خاص را انجام دهند در شکل زیر نشان داده شده است. همیشه از این تصویر به عنوان راهنما برای انتخاب پین های خود برای برنامه نویسی استفاده کنید.

توضیحات پین های MSP430G2

برنامه نویسی MSP برای تولید سیگنال PWM

پس از آماده شدن سخت افزار ، می توانیم برنامه نویسی را شروع کنیم. اولین مورد در برنامه ، اعلام پین هایی است که می خواهیم از آنها استفاده کنیم. در اینجا می خواهیم از پین شماره 4 (P1.2) به عنوان پین خروجی استفاده کنیم زیرا این پین قابلیت را برای تولید PWM دارد. بنابراین یک متغیر ایجاد می کنیم و نام پین را به آن اختصاص می دهیم تا بعداً در برنامه به راحتی به آن مراجعه شود. کد کامل در انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

int PWMpin = 4; //استفاده از پین 4 برای تولید PWM

در مرحله بعدی وارد setup void می شویم. هر کد که در اینجا نوشته شود فقط یک بار اجرا می شود ، در اینجا ما اعلام می کنیم که از پین 4 به عنوان پین خروجی استفاده می کنیم زیرا یک PWM خروجی است. توجه داشته باشید که ما به جای شماره 4 از متغیر PWMpin استفاده کرده ایم تا کد معنی دار تر به نظر برسد.

void setup() {
pinMode(PWMpin,OUTPUT); //تنظیم پین به عنوان خروجی
}

سپس وارد عملکرد void loop () می شویم. هرچه اینجا بنویسیم مجددا اجرا می شود.

حتما ببینید :  برق اضطراری چیست ؟ آموزش انتخاب برق اضطراری ساختمان

در این برنامه ما باید ولتاژ آنالوگ را بخوانیم و سیگنال PWM را بر این اساس تولید کنیم و این باید عمل باید به صورت مداوم اتفاق بیفتد. بنابراین ابتدا بیایید با خواندن ولتاژ آنالوگ از پین A0 که متصل به پتانسیومتر است شروع کنیم.

در اینجا ما با استفاده از تابع AanalogRead مقدار را می خوانیم ، این تابع براساس مقدار ولتاژ اعمال شده روی پین ، مقدار 0-1024 تولید میکند. سپس این مقدار را در زیر متغیر به نام “Val” ذخیره می کنیم. تبدیل آنالوگ به دیجیتال به صورت کامل در قسمت قبلی آموزش توضیح داده شده است.

int val = analogRead(A0);    // خواندن مقدار ولتاژ از پین A0

ما باید مقادیر 0 تا 1024 را از ADC به مقادیر 0 تا 255 تبدیل کنیم تا آن را به عملکرد PWM بدهیم. چرا باید این تبدیل را انجام دهیم؟ من این را به زودی خواهم گفت ، اما در حال حاضر فقط به یاد داشته باشید که باید تبدیل کنیم. برای تبدیل مجموعه ای از مقادیر به مجموعه ای دیگر از مقادیر ، Energia عملکردی شبیه Map در آردوینو دارد. بنابراین مقادیر 0-1024 را به 0-255 تبدیل می کنیم و آن را در متغیر “val” ذخیره می کنیم.

val = map(val, 0, 1023, 0, 255);  

اکنون براساس موقعیت پتانسیومتر یک مقدار متغیر 0-255 داریم. تنها کاری که باید انجام دهیم این است که مقدار 0 تا 255 را به PWM بدهیم.

analogWrite(PWMpin,val);

بیایید به این سوال برگردیم که چرا 0-255 در پین PWM نوشته شده است. این مقدار 0-255 چرخه وظیفه سیگنال PWM را تعیین می کند. به عنوان مثال اگر مقدار سیگنال 0 باشد ، بدین معنی است که چرخه وظیفه 0٪ است، در مقدار 127 آن 50٪ و برای 255 چرخه وظیفه 100٪ است دقیقاً مثل آنچه در ابتدای مقاله نشان داده شده و توضیح داده شده است.

کد کامل

کد کامل کنترل روشنایی ال ای دی با PWM در برد MSP430 در باکس زیر آورده شده است.

int PWMpin = 4;
void setup() {
pinMode(PWMpin,OUTPUT);
}
void loop() {
 int val = analogRead(A0);   
 val = map(val, 0, 1023, 0, 255); 
 analogWrite(PWMpin,val); 
}

فیلم عملکرد تولید سیگنال PWM با MSP430

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

قسمت بعد : آموزش کنترل سروو موتور با لانچ پد MSP430

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن