设为首页收藏本站

[基础教程] 搞活动没个好看的灯光怎么行——超实用的高亮灯

marcusme 发表于 2015-11-16 21:42:26 | 显示全部楼层 [复制链接]
7 4648
DSC_5680.JPG

当时为了万圣节大家扮鬼效果更炫酷(日光灯怎么能衬托阴森的气氛嘛),我做了这个小东西。当时效果还不错,完事儿后我就想,这个小东西制作容易,代码简单,重点是亮度够大!50平米的空间里,可以让整个地方都映射出任何想要的颜色。

再一想自己的大学生活,每每过生日的时候,一群人总喜欢买好蛋糕和好多好多好吃好喝的东西到操场上深夜开趴。当时为了方便多是大家把宿舍的充电小台灯带了出来,但是一到户外就发现这东西不给力啊不给力~

于是,我就觉着这个小东西应该能用在很多地方,什么表白、扮鬼烘托气氛吶,深夜开趴照个眀吶都可以。

所以,特在此给大家分享一下制作过程。


Step1项目器材

  序号  
名称
数量
  1  
1
  2  
1
  3  
3
  4  
3
  5  
1

12V的电源适配器是问朋友借的,所以没有购买链接。应该可以用12V的电池组代替。
如果手头上没有12V的电源,9V的也可以代替,在代码上修改一下模拟口的输出值就ok啦。


Step2 方案选择


制作开始之前,要考虑好要把它用在什么地方。
下面这张图片显示了高亮LED各种颜色的工作电压:

高亮规格.png

我使用的时候是打算为了给整个场地参加活动的人做烘托气氛以及照明使用,所以对灯光亮度要求较高,一开始就决定了带散热片使用。基于这样的想法,我选用了手头上现成的12V电源适配器作为电源。 但是,电压最高的时候是绿灯和蓝灯最亮的时候,额定电压也是11V呀,明显12V是超量程的。那怎么办呢?

下面来到第一个方案:

刚开始,我理所应当地决定使用电阻分压。对于红灯,让电阻分压5V,对于绿灯和蓝灯,让电阻分压1V。然后再看,红灯额定电流是0.4A,(12V-7V)/0.4=12.5欧,(12V-11V)/0.35=2.8欧。哦了,于是我给红灯准备了13欧的电阻,给蓝灯和绿灯准备了5欧的电阻。(没有3欧的当时一想电阻稍微大一点,亮度也就弱那么一点点,咱不怕~)          

你也以为万事大吉了?
         大错特错!
后来,当我焊好之后接上电源一使用,我擦嘞!电阻烫的跟烧猪蹄而似的,还隐约间冒出一股烧烤电阻的味道!!!!

烧焦的电阻.png
图片中可以看见中间蓝色的电阻已经被烧黑了有木有(这简直是谋杀~)
后来,我再一查资料,才知道电阻额定功率一般只有0.25W,可是我细细算来,接红色端的电阻P=U*I=5*0.4=2W,接蓝色和绿色端的电阻P=U*I=1*0.35=0.35W。十分明显,功率都超了,接红色端的电阻甚至了8倍。这么个玩儿法,电阻不烧才见鬼了。

     无奈选择方案二
没有办法咯,简单便宜的方法行不通,只能用专门为了功率较大的LED使用的驱动了。
使用驱动之后一切都简单多了(只需要连接四根线就ok了),因为在设计驱动板的时候,工程师已经用了专门的稳压芯片使得驱动板能够稳定输入高亮LED所需的电压和功率(有兴趣滴盆友可以跳到最后看一看)。
Ok,这些问题解决之后,就开始着手制作了。


Step3 上手制作


1.      小灯固定;

高亮RGB-LED上没有引脚,所以我只能使用热熔胶将其固定在洞洞板上。 但是固定之前可不能忘记一个工作:将散热片贴到LED上。
IMG_20151116_095020915_HDR.jpg
上图有右方是一个没有粘接上去的散热片,粘接上去之后就是图中的样子了。

2.      选线焊制;
       我使用了三个小灯,每个小灯有四个引脚,每个引脚都需要焊接一根导线出来。所以,一共需要3*4=12根导线(这里挺难焊的,早知道不用这么多个了~~~)
      为了便于区分,所以,控制红色端的引脚焊接上红色导线,控制绿色和蓝色短的引脚分别焊接上绿色和蓝色导线,电源端的导线自然就焊接上相应的白色导线。
            
            不同的颜色控制端上面会有比较醒目的标志,焊接的时候千万要注意哦:
原理图.png



            焊制好之后就是下面这个样子了:

DSC_5681.JPG

3.      线路连接;

    为了更清晰的显示各线焊接和连接,制作了连接图,在下:

连线图 - 副本.jpeg
Step4 代码部分

  1. int RedPin = 10;      //为红色灯光的控制定义引脚
  2. int GreenPin = 11;    //为绿色灯光的控制定义引脚
  3. int BluePin = 9;      //为蓝色灯光的驱动定义引脚

  4. void setup()
  5. {  
  6.   pinMode(RedPin, OUTPUT);    //设置三个引脚为输出模式
  7.   pinMode(GreenPin, OUTPUT);
  8.   pinMode(BluePin, OUTPUT);  
  9. }

  10. void loop()
  11. {
  12.   analogWrite(GreenPin, 0);
  13.   analogWrite(BluePin, 0);
  14.   Red_dizeng();//调用红色灯逐渐亮起的程序
  15.   delay(4000);
  16.   Red_dijian();//调用红色灯逐渐熄灭的程序
  17.   analogWrite(RedPin, 0);
  18.   analogWrite(BluePin, 0);
  19.   Green_dizeng();//调用绿色灯逐渐亮起的程序
  20.   delay(4000);
  21.   Green_dijian();//调用绿色灯逐渐熄灭的程序
  22.   analogWrite(RedPin, 0);
  23.   analogWrite(GreenPin, 0);
  24.   Blue_dizeng();  //调用蓝色灯逐渐亮起的程序
  25.   delay(4000);
  26.   Blue_dijian();//调用蓝色灯逐渐熄灭的程序
  27. }
  28. void Red_dizeng()//红灯逐渐亮起程序
  29. {
  30.   int p;
  31.   for(p=0;p<71;p++)
  32.   {
  33.     analogWrite(RedPin, p);
  34.     delay(10);
  35.     }
  36.   }
  37. void Red_dijian()//红灯逐渐熄灭程序
  38. {
  39. int p;
  40. for(p=71;p>0;p--)
  41. {
  42.    analogWrite(RedPin, p);
  43.    delay(10);
  44.    }
  45.   }
  46.   void Green_dizeng()//绿灯逐渐亮起程序
  47. {
  48.   int p;
  49.   for(p=0;p<175;p++)
  50.   {
  51.     analogWrite(GreenPin, p);
  52.     delay(10);
  53.     }
  54.   }
  55.   void Green_dijian()//绿灯逐渐熄灭程序
  56. {
  57. int p;
  58. for(p=175;p>0;p--)
  59. {
  60.    analogWrite(GreenPin, p);
  61.    delay(10);
  62.    }
  63.   }
  64.    void Blue_dizeng()//蓝灯逐渐亮起程序
  65. {
  66.   int p;
  67.   for(p=0;p<175;p++)
  68.   {
  69.     analogWrite(BluePin, p);
  70.     delay(10);
  71.     }
  72.   }
  73.   void Blue_dijian()//蓝灯逐渐熄灭程序
  74. {
  75. int p;
  76. for(p=175;p>0;p--)
  77. {
  78.    analogWrite(BluePin, p);
  79.    delay(10);
  80.    }
  81.   }
复制代码




step5视频展示:
录了一段特low的视频,随意看看就好。





step6附加——驱动板原理:

接下来我会地为大家介绍一下我们的驱动板是怎么工作的,有兴趣的同学阔以继续往下看看。


MOS管驱动电路.png


以上是驱动板核心电路之一,现在我为大家做个简短的分析:  
      
PWM1口就是跟单片机的一个数字口相连,代码控制UNO所产生的PWM波(脉宽调制波,就是电压一下为高一下为低,高低电压所占一个脉冲的时间不同)会从这个口进入该电路。当来从这个口进入的电路为高电平的时候NPN型三极管Q8050就会被导通也就是说此时电流可以通过电阻R2流过Q2,从集电极(上方)流过发射极(下方)。

三极管导通的原理是载流子和空穴相互运动的过程,这里就不深究了。对于三级管放大功能,大家可以想象成为一个小的水管来控制一个大水管。大的水管里边儿装有一个控制阀门,小水管的水流量可以控制这个阀门,当小水管没有水流过的时候,阀门就不会打开。如果小水管有水流流过并且水流越来越大的时候,阀门就会打开,并且越开越大
。这样,大水管的水流自然也大了起来。就像下面这幅图一样(忘了从哪里看到的了,谢谢原作者这么贴切的栗子图~~)
三极管原理图.png   
      
那么此时,因为电阻R2及其之下的三极管被导通,所以12V的电源会在这里产生分压作用,则PNP型三极管Q8550的基极上会产生压降此压降会在瞬间达到它的导通电压,所以这只三极管也会因此导通。


此时,5V电压所产生的电流就会从Q1的发射极流过集电极(从左往右),然后再以非常快的速度流过三极管Q3的基极以及电阻R6,经过分压作用在基极上产生压降,导通三极管Q3。若此时MOS_1口外接了元器件(高亮RGB)则,12V的电压就会加到MOS_1这个管脚上,并且通过Q3跟地导通,从而实现元器件回路的实现。这样,所控制的高亮灯就被点亮啦



在这个地方,驱动板最大的用处就是将UNO产生的5VPWM波来控制12V的电源导通和关端,这样才能用于有效驱动所需电压为7-11V的元件。这里之所以要用PWM波就是因为最后产生的等效电压是取决于电源和高电平占空比的综合作用的,公式如下:

V(有效)=V(电源)*占空比;
占空比又如何得到呢?

当在程序里给这个数字口一个模拟量255的时候,占空比就是1也就是只有高电平没有低电平。所以,占空比=程序给的数字/255;
也就是说,这里我想要7V的输出电压,那么占空比就应该是7/12=0.58333;

那么,我们在程序里就应该用analogewrite写入255*0.58333=148。
当然,这也不会绝对的。随着电源的不一样或者不同驱动板一些细微的差别,可能会导致按照以上公式计算出来的实际输出电压跟预料的有一定差距,这个在实际应用的时候找一个万用表做个测试找到最合适的电压就行了。



_9Vqudong.zip (590 Bytes, 下载次数: 6)
发表于 2015-11-17 08:28:41 | 显示全部楼层
好好玩
以前在舞台的后台就看到,灯光师傅把一大排电位器推来推去,制造各种变色闪烁效果,觉得特别过瘾。
LZ这个是mini版的神器啊~要是在PCB板上搭出来,再加上锂电池,DC-DC,就可以随时玩啦~
回复 支持 反对

使用道具 举报

发表于 2015-11-17 09:35:28 | 显示全部楼层
完全可以的呀,就是用锂电池耗电厉害一些。
回复 支持 反对

使用道具 举报

发表于 2015-11-17 12:24:10 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

发表于 2015-11-17 13:58:14 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

发表于 2015-11-18 07:13:42 | 显示全部楼层
好玩啊
回复 支持 反对

使用道具 举报

发表于 2015-11-20 13:28:26 | 显示全部楼层
钢铁侠的反应堆靠你了。
回复 支持 反对

使用道具 举报

发表于 2016-1-9 11:04:10 | 显示全部楼层
很好很好  极好的  我喜欢有电路图的东东   这玩意真能产品化了 配一个电池盒,加个usb充电  锂电玩不起
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则 允许回帖同步到新浪微博  

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表