خانه > پروژه > کنترل LED RGB نواری با استفاده از میکروکنترلر

کنترل LED RGB نواری با استفاده از میکروکنترلر

تئوری کنترل LED RGB

LED RGB چیست؟

این نوع LEDها از سه LED قرمز(R)، سبز(G) و آبی(B) تشکیل شده اند. بسته به اینکه این LEDها چگونه به هم متصل شده باشند RGBها در دو نوع کاتد مشترک و آند مشترک ساخته می شوند:

Controlling LED RGB Strip with Atmega8-1

حال فرض کنید یک LED RGB کاتد مشترک داریم. برای اینکه رنگ قرمز را نمایش دهیم کافیست فقط پایه مشترک را به زمین وصل کرده و پایه R را با یک مقاومت محدودکننده مناسب(مثلا 330 اهم) به 5 ولت متصل کنیم. با مدا مشابه می توان رنگ ها آبی و سبز را نیز نمایش داد. حال اگر دو LED با هم روشن باشند چه اتفاقی می افتد؟ چون این LEDها بسیار به هم نزدیک هستند چشم انسان نتیجه ترکیب دو رنگ را می بیند. مثلا اگر قرمز و آبی با هم روشن باشند چشم رنگ بنفش را تشخیص می دهد. حال به نظر شما با این LED چند ترکیب رنگ می توان درست کرد؟ بله درست است! 8 رنگ. چون هر رنگ به طور مستقل می تواند دو حالت داشته باشد: خاموش یا روشن. پس 2 به توان 3 یعنی 8 حالت می توان ایجاد کرد. اما این همه ماجرا نیست! در ادامه به مفهوم مدولاسیون عرض پالس(Pulse Width Modulation) آشنا می شویم که روشی بسیار کاربردی در کنترلLEDهای RGB  می باشد.

مفهوم مدولاسیون عرض پالس یا PWM

فرض کنید برای کنترل رنگ قرمز یک LED RGB مداری مانند شکل زیر را متصل نمودیم:

Controlling LED RGB Strip with Atmega8-2

حال اگر ولتاژ V را برابر 5 ولت قرار دهیم LED روشن واگر برابر 0 ولت قرار دهیم LED خاموش می شود. اما اگر LED را با یک موج مربعی مانند شکل زیر با فرکانس 100 هرتز تغذیه کنیم چه اتفاقی می افتد؟

Controlling LED RGB Strip with Atmega8-3

این موج مربعی در 50 درصد مواقع 5 ولت و در 50 درصد دیگر 0 ولت است. بنابراین LED در نصف مواقع روشن و در نصف دیگر خاموش است. اما با توجه به فرکانس بالای این موج چشم انسان قادر به تشخیص خاموش و روشن شدن نیست. تفاوتی که انسان قادر به تشخیص آن است این است که روشنایی LED نسبت به حالتی که دائم روشن است کمتر به نظر می رسد. با همین تکنیک می توان حالت های مختلفی از روشنایی را برای هر کدام از رنگ ها بدست آورد.

برای ادامه بحث به چند تعریف در بحث PWM می پردازیم:

دوره تناوب(Period): مدت زمان صفر بودن خروجی+ مدت زمان 1 بودن خروجی

عرض پالس(Pulse Width): مدت زمان 1 بودن خروجی

زمان وظیفه(Duty Cycle): مدت زمان یک بودن نسبت به دوره تناوب به درصد:

Controlling LED RGB Strip with Atmega8-4

Controlling LED RGB Strip with Atmega8-5

برای مثال زمان وظیفه در شکل موج 100 هرتز قبلی برابر 50درصد است. بدیهی است هرچه زمان وظیفه بیشتر باشد LED پرنورتر و هر چه کمتر باشد LED کم نورتر خواهد بود.

حال اگر با استفاده از PWM برای هر یک از رنگ های R، G و B بتوانیم n حالت مختلف ایجاد کنیم در حالت کلی  n به توان 3 ترکیب رنگ مختلف می توانیم ایجاد کنیم. در RGBهای امروزی تعداد n معمولا 256 تاست. که مجموعا 16777216 رنگ به ما می دهد.

LED های نواری

LED RGB های نواری به صورت تعداد زیادی LED RGB که بر روی یک برد مدار چاپی منعطف قرار گرفته اند یافت می شوند. در شکل زیر نمونه ای از این نوع LEDها را مشاهده می نمایید:

Controlling LED RGB Strip with Atmega8-6

این نوع LEDهای نواری در دو نوع کلی آنالوگ و دیجیتال ساخته می شوند. در نوع آنالوگ تمامی LEDها به هم متصل بوده و ما می توانیم کل LEDها را با هم کنترل کنیم به این صورت که در هر لحظه تمامی LEDها همزمان یک رنگ را نمایش می دهند و امکان کنترل تک تک LEDها وجود ندارد. این نوع LEDها ارزان قیمت بوده و کار کردن با آن ها ساده تر است.

در نوع دیجیتال، برای هر LED یک IC جداگانه برای کنترل انفرادی آن ها وجود دارد. برای کنترل کل نوار کافیست اطلاعات را به صورت سریال به این ICها فرستاد. بنابراین امکان کنترل انفرادی همه LEDها به صورت جداگانه وجود دارد. به همین دلیل کنترل این نوع نوارها پیچیده تر و قیمت آن ها بیشتر است.

** در این آموزش هدف ما راه اندازی نوع آنالوگ با استفاده از میکروکنترلر می باشد.

مدار داخلی و محاسبه جریان

مدار داخلی یک نمونه از این نوع LEDهای نواری در شکل زیر آورده شده است:

Controlling LED RGB Strip with Atmega8-7

همان طور که از شکل مشخص است هر سه LED یک رنگ با هم سری شده و در نهایت همه دسته های سه تایی با هم موازی شده اند. در نتیجه جریان های مسیرهای موازی با هم جمع می شود.  هر LED برای روشن شدن نیاز به 20 میلی آمپر جریان دارد. بنابراین هر سکشن که متشکل از سه LED RGB می باشد(9 تا LED تک رنگ)  60 میلی مپر جریان می کشد. در LED نواری که من استفاده کردم  هر پنج سانتی متر یک سکشن هست که 60 میلی آمپر جریان مورد نیاز می باشد.

Controlling LED RGB Strip with Atmega8-8

پس هر متر 20 سکشن بوده که حداکثر به 1/2 آمپر جریان نیاز دارد. دقت شود که این عدد، در عمل اتفاق نمی افتد. چون معمولا همه LEDها با هم در حداکثر نور خود روشن نمی شوند. اما از جهت احتیاط بهتر است که این مقدار را به عنوان حداکثر در نظر داشته باشیم.

کارکرد عملی

میکروکنترلری که ما از آن در کنترل RGBهای نواری استفاده نمودیم ATmega8 می باشد. طبیعی است که قابلیت جریان دهی این میکروکنترلر برای راه اندازی RGB نواری کافی نیست. بنابراین در خروجی میکرو از ماسفت برای تقویت جریان استفاده نمودیم. در این صورت حتی یک کلاف کامل 5 متری از این RGBها(و حتی بیشتر) را می توان کنترل نمود. نکته قابل توجه دیگر اینکه معمولا پایه های مربوط به PWM در میکروکنترلرها بسیار محدود هستند و اگر بخواهیم چند تا از این نوارها را کنترل کنیم با محدودیت پایه PWM مواجه می شویم. راه حل در این گونه مواقع استفاده از PWM نرم افزاری به جای PWM سخت افزاری است. یعنی به جای اینکه از واحد PWM خود میکرو استفاده کنیم منطق مربوط به PWM را با برنامه نویسی روی پایه های معمولی ایجاد کنیم. در برنامه نوشته شده، ما از PWM نرم افزاری استفاده کردیم که با این کار می توان روی تمام پایه های میکروکنترلر هم PWM داشته باشیم. نمایی از مدار عملی بسته شده را در شکل زیر مشاهده می نمایید:

Controlling LED RGB Strip with Atmega8-9

ویدئوی عملکرد مدار را هم ببینید:

 

همان طور که در ویدئوی بالا مشاهده می کنید، برنامه طوری نوشته شده است که هر نیم ثانیه یک رنگ به صورت تصادفی روی RGB نواری یجاد شده و بدین ترتیب یک رقص نور زیبا ایجاد شده است. می توانید شماتیک مدار و برنامه نوشته شده و مقاله کامل شامل توضیحات برنامه را از قسمت زیر دریافت نمایید:

پرداخت و دریافت

[ratings]

درباره ی مدیر سایت

پاسخ دهید

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