پس از آزمایش با آردوینو و پردازش ارتباط سریال، میخواستم کار جالبی انجام دهم. من چند عدد LED RGB در اطراف خوابیده بودم، بنابراین به فکر ساختن چیزی با آنها افتادم. من در نهایت با یک بارق/لامپ کنترل شده توسط یک طرح پردازشی که دستورات را از یک کنترلر MIDI هرکول DJ Control Steel دریافت می کند، به پایان رسید.
از 2 LED RGB 3W، 6 درایور جریان ثابت برای اطمینان از دریافت جریان مناسب هر LED و ATMEGA8 استفاده می کند. از یک رابط RS232 و یک مبدل USB <-> RS232 برای برقراری ارتباط با رایانه استفاده می کند.
سه حالت دارد:
حالت عادی - این به کاربر اجازه می دهد تا به صورت دستی قرمز، سبز و آبی را تغییر دهد و اگر فرکانس بارق بیش از 0 باشد، مانند یک بارق چشمک می زند (با چرخه کار قابل تنظیم).
حالت محو شدن - بین رنگ ها محو می شود (رنگ).
حالت بارق محو - اگر فرکانس بارق 0 باشد مانند حالت محو شدن عمل می کند، اما اگر بیشتر از 0 باشد مانند یک بارق چشمک می زند، با چرخه کار قابل تنظیم رنگ بارق را محو می کند.
مرحله 1: قطعات و ابزار
شما به ابزارهای زیر نیاز خواهید داشت: – آهن لحیم کاری (برای لحیم کاری) همچنین به مقداری لحیم کاری نیاز خواهید داشت. حالا به سراغ قطعات بروید. 1x 10K مقاومت 1/4W برای درایور LED شما نیاز دارید: مقاومت 6x 1,2 اهم 1 وات من از 2 LED RGB 3W که از Dealextreme خریدم استفاده کردم. محفظه از Futura Elttronica (یک شرکت ایتالیایی) با کد محصول AUS11 است. من یک ZIP با تمام فایلهای پروژه در آن پیوست میکنم.
– ابزار شبیه Dremel/Dremel (برای سوراخ کردن و برش محفظه)
اگر آردوینو ندارید یا میخواهید برای خود یک برد برای این پروژه بسازید، به موارد زیر نیاز دارید:
2x 1K 1/4W مقاومت
4x 1uF 25V خازن الکترولیتی
1x 100uF 25V خازن الکترولیتی 3x 100nF 25V 25V خازن
چندلایه 2x1UF 25V CerpaCacitorC2x5Xaci 1x MAX232 1x ATMEGA8/ATMEGA48/ATMEGA88/ATMEGA168/ATMEGA328 (توجه: ATMEGA48 نمی تواند بوت لودر داشته باشد و فلاش آن برای این پروژه خیلی کوچک است) 1x RS232 DB9 Connector 1x کانکتور منبع تغذیه (بستگی به منبع تغذیه شما دارد)
6 x 47 اهم 1/4 مقاومت
6 x 100 اهم تریمر
6 x 4,3 ولت زنر دیود
2 x LM324
مرحله 2: آردوینو
شما می توانید از یک برد آردوینو استفاده کنید، اما من به تازگی یک برد را خودم ساختم و با استفاده از یک برنامه نویس موازی آن را بوت کردم. از یک رابط سریال با MAX232 و یک آداپتور USB <-> RS232 از Dealextreme استفاده می کند. من از ATMEGA8 استفاده کردم اما این برد از ATMEGA48، ATMEGA88، ATMEGA168 و ATMEGA328 نیز پشتیبانی می کند - توجه داشته باشید که ATMEGA48 برای این پروژه بسیار کوچک است و قابل بوت نیست.
مرحله 3: طرح آردوینو
طرح را پیوست کردم. وقتی کامپایل شد 6390 بایت است. شما می توانید دو تنظیمات را پیکربندی کنید:
پین های LED RGB: پین های دیجیتالی که درایورها وصل می شوند. اول قرمز، سپس سبز و سپس آبی است.
افزایش رنگ محو: در حالت محو شدن، این میزان افزایش رنگ برای هر چرخه است.
مرحله 4: درایور جریان ثابت
LED ها باید دارای جریان الکتریکی باشند. من 6 درایور ساده با خروجی جریان قابل تنظیم (500 میلی آمپر حداکثر) ساختم. اینها چگونه کار می کنند؟ ساده است. LED برای افزایش قدرت با ترانزیستور به خروجی opamp متصل می شود. یک مقاومت با مقدار کمی به صورت سری با LED وجود دارد. افت ولتاژ روی مقاومت IR (قانون اهم) است. به عنوان مثال، اگر 300 میلی آمپر در یک مقاومت 1.2 اهم جریان داشته باشد، افت ولتاژ V = 0.3 x 1.2 = 0.36 V است.
opamp ولتاژ خروجی را تغییر می دهد تا زمانی که اختلاف بین + و – 0 شود. اگر – را بین امیتر و مقاومت وصل کنیم افت ولتاژ روی مقاومت وارد - می شود. تنها کاری که باید انجام دهیم این است که + را به افت ولتاژی که میخواهیم روی مقاومت برسانیم و opamp خروجی را برای ایجاد این افت تنظیم میکند. به عنوان مثال، اگر مقاومت 1.2 اهم باشد و 0.36 ولت را در ورودی + قرار دهیم، افت روی مقاومت 0.36 ولت و جریان جریان 300 میلی آمپر خواهد بود. من یک دیود زنر قرار دادم زیرا تنظیم کردن 5 ولت به 0.3 - 0.4 ولت با استفاده از تقسیم کننده ولتاژ غیر عملی است. دیود زنر 4.3 ولت کاهش می یابد و قیچی بسیار دقیق تر است. مقاومت 47 اهم فقط برای محدود کردن جریان به 15 میلی آمپر در صورت چرخش کامل تریمر وجود دارد. برای هر LED به یک درایور نیاز دارید. مشکل اصلی LED های Dealextreme این است که آند معمولی هستند، بنابراین راهی برای قرار دادن آنها در سری وجود ندارد. بنابراین من به 6 راننده (2 قرمز، 2 سبز و 2 آبی) نیاز دارم. خروجی میکروکنترلر به "In" می رود. من از دو عدد LM324 (اپمپ چهارگانه) استفاده کردم تا 8 عدد اپمپ داشته باشم (2 عدد استفاده نشده). ترانزیستور BC337 است (اما می توانید آن را تغییر دهید). اگر از BC337 استفاده می کنید، اگر مجموع اتلاف انرژی کمتر از 620 میلی وات باشد، نیازی به هیت سینک ندارید. با یک LED 3.5 ولت این به معنای حداکثر جریان 410 میلی آمپر بدون هیت سینک است. اگر می توانید آن را به هر حال هیت سینک کنید.
حداکثر اتلاف R1 0.35 وات است، بنابراین یک مقاومت 1/2 وات کار می کند، اما بهتر است یک مقاومت 1 وات قرار دهید. چرا؟ زیرا هر چه مقاومت بزرگتر باشد خنک تر می ماند. گرمایش باعث ایجاد یک رانش کوچک در مقدار مقاومت می شود که بر جریان تأثیر می گذارد. نیازی به مقاومت های دقیق نیست زیرا تریمر آن را جبران می کند اما مقاومت باید بسیار پایدار باشد. پس سردش کن!
لیست قطعات (یک درایور):
R1: 1.2 اهم 1 وات مقاومت
R2: 47 اهم 1/4 وات مقاومت
D1: 4.3 ولت زنر دیود
100 اهم تریمر
BC337
و هر چهار درایور یک LM324.
مرحله 5: تنظیم منبع فعلی
برای تنظیم منبع جریان به یک مولتی متر که بتواند جریان را اندازه گیری کند و یک مقاومت 1.2 اهم 1 وات نیاز دارید. ال ای دی را وصل نکنید به جای LED، مولتی متر (در حالت اندازه گیری جریان) و مقاومت را به صورت سری وصل کنید. In را به +5V وصل کنید و شروع به چرخاندن دیگ کنید تا مولتی متر جریان مورد نظر را بخواند. اکنون درایور شما تنظیم شده است. LED را با یک مولتی متر به صورت سری وصل کنید و جریان را بررسی کنید. این کار را برای هر راننده تکرار کنید - من درایورهای خود را روی 300 میلی آمپر تنظیم کردم (ال ای دی های من حداکثر 350 میلی آمپر مصرف می کنند).
برای جزئیات بیشتر: StrobeDuino – بارق/لامپ RGB با کنترل کامپیوتر
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
After experimenting with Arduino and Processing serial communication i wanted to do something cool. I had some RGB LEDs lying around so i thought about making something with them. I ended up with a strobe/lamp controlled by a Processing sketch that receives the commands from a Hercules DJ Control Steel MIDI controller.
It uses 2 3W RGB LEDs, 6 constant current drivers to ensure every LED gets the proper current and an ATMEGA8. It uses a RS232 interface and a RS232 <-> USB converter to communicate with the computer.
It’s got three modes:
Normal mode – This allows the user to manually change red, green and blue and if the strobe frequency is more than 0 it blinks like a strobe (with adjustable duty cycle).
Fading mode – Fades between colors (hue).
Fading strobe mode – If the strobe frequency is 0 it acts like fading mode, but if it’s more than 0 it blink like a strobe, with adjustable duty cycle fading the strobe color.
Step 1: Parts & Tools
You will need the following tools:
– Soldering iron (to solder)
– Dremel/Dremel-like tool (to drill and cut the enclosure)
You’ll also need some solder. Now on to the parts.
If you haven’t got an Arduino or you want to make yourself a board for this project, you’ll need:
1x 10K 1/4W Resistor
2x 1K 1/4W Resistor
4x 1uF 25V Electrolytic Capacitor
1x 100uF 25V Electrolytic Capacitor
3x 100nF 25V Multilayer Capacitor
2x 22pF 25V Ceramic Capacitor
1x 16MHz Crystal
1x MAX232
1x ATMEGA8/ATMEGA48/ATMEGA88/ATMEGA168/ATMEGA328 (NOTE: ATMEGA48 can’t have a bootloader and it’s flash is too small for this project)
1x RS232 DB9 Connector
1x Power supply connector (depends on your power supply)
For the LED driver you need:
6x 1,2 Ohm 1W Resistor
6x 47 Ohm 1/4 Resistor
6x 100 Ohm Trimmer
6x 4,3V Zener Diode
2x LM324
I used 2 3W RGB LEDs I bought from Dealextreme.
The enclosure is from Futura Elettronica (an Italian company), product code AUS11.
I attach a ZIP with all the project files in it.
Step 2: The Arduino
You can use an Arduino board but I just built one myself and I bootloaded it using a parallel programmer. It uses a serial interface with a MAX232 and a RS232 <-> USB adapter from Dealextreme. I used an ATMEGA8 but this board supports also ATMEGA48, ATMEGA88, ATMEGA168 and ATMEGA328 – Note that ATMEGA48 is too small for this project and it isn’t bootloadable.
Step 3: The Arduino sketch
I attached the sketch. When compiled it’s 6390 bytes. You can configure two settings:
RGB LED pins: the digital pins where the drivers are connected. First one is Red, then Green and then Blue.
Fading hue increment: when in fading mode, this is how much to increment the hue for every cycle.
Step 4: The constant current driver
LEDs must be current driven. I made 6 simple drivers with adjustable current output (500mA max). How do these work? It’s simple. The LED is connected to the output of the opamp with a transistor to increase power. There’s a small value resistor in series with the LED. The voltage drop on the resistor is IR (Ohm’s law). For example, if 300mA is flowing trought a 1.2 Ohm resistor the voltage drop is V = 0.3 x 1.2 = 0.36V.
The opamp changes the output voltage until the difference between + and – is 0. If we attach the – between the emitter and the resistor the voltage drop on the resistor will enter -. All we need to do is to bring + to the voltage drop we want on the resistor and the opamp will adjust the output to give this drop. For example, if the resistor is 1.2 Ohm and we put 0.36V on the + input the drop on the resistor will be 0.36V and the current flowing 300mA. I put a zener diode because it would be unpractical to regulate 5v down to 0.3V – 0.4V using a voltage divider. The zener diode drops 4.3V and the trimmer is a lot more precise. The 47 Ohm resistor is there just to limit the current to 15mA in case of a fully turned trimmer. You need one driver for every LED. The main problem with those Dealextreme LEDs is that they’re common anode, so there’s no way to put them in series. So I need 6 drivers (2 Red, 2 Green and 2 Blue). The microcontroller output goes to “In”. I used two LM324 (Quadruple opamp) to have 8 opamps (2 unused). The transistor is BC337 (but you can change it). If you use BC337 you don’t need heatsinking if the total power dissipation is less than 620mW. With a 3.5V LED this means 410mA maximum current without heatsinking. If you can, heatsink it anyway.
R1 maximum dissipation is 0.35W, so a 1/2W resistor would work, but its’ better to put a 1W resistor. Why? Because the bigger the resistor, the cooler it stays. Heating causes a small drift in the resistor value wich affects the current. There’s no need for precision resistors because the trimmer compensates it but the resistor must be very stable. So keep it cold!
Part list (one driver):
R1: 1.2 Ohm 1W Resistor
R2: 47 Ohm 1/4W Resistor
D1: 4.3V Zener diode
100 Ohm trimmer
BC337
And one LM324 every four drivers.
Step 5: Setting the current source
To set the current source you need a multimeter that can measure current and a 1.2 Ohm 1W resistor. DON’T connect the LED. Instead of the LED connect in series the multimeter (in current measurement mode) and the resistor. Attach In to +5V and start turning the pot until the multimeter reads the desidered current. Now your driver is set. Attach the LED with a multimeter in series and check the current. Repeat this for every driver – I set my drivers to 300mA (my LEDs can take 350mA max).
For more detail: StrobeDuino – Computer-controlled RGB strobe/lamp
[/membership]