×

Arduino供电、传感器控制的褪色LED灯带

消耗积分:0 | 格式:zip | 大小:0.48 MB | 2023-07-11

h1654155275.6372

分享资料个

描述

我最近更新了我的厨房,并且知道照明会“提升”橱柜的外观。3)不要使组件过热(重要!!!)-如果它似乎没有流动,让它冷却,过一会儿再试,也不要在同一个区域工作太久。4) 除非你有三只手或有拿筷子的经验,否则买一个 Helping Hands 的东西来把组件固定在一起(例如https://amzn.to/2VFJJC4 )。

为了让生活更轻松,我还拆焊了 MOSFET 板上的 3 针连接器。为此,将一些焊料熔化到现有的焊料连接处以帮助其再次流动,然后在焊料仍处于熔化状态时使用一把钳子将引脚拉过。如果您有一个脱焊泵或灯芯在拉出组件之前将熔化的焊料吸走,这会有所帮助(例如https://amzn.to/2Z8P9aT ),但您可以不用它。同样,如果你愿意,你可以直接焊接到引脚上(不过,如果你直接连接到威廉希尔官方网站 板上会更整洁)。

现在,看一下接线图。

拿一根细单芯线,从末端取下一点绝缘层(我发现 rolson 剥线钳和切割器https://amzn.to/2DcSkom很好)然后扭动电线并在上面熔化一点焊料把他们抱在一起。将电线穿过板上的孔,然后将电线焊接到位。

继续将所有电线连接到我列出的 Arduino(使用您需要的数字引脚数量 - 我有 4 组灯,但您可以使用更多或更少)。最好使用符合用途的彩色电缆(例如 12V 红色、GND 黑色等)。

为了使事情整洁并防止短路,我建议在焊接之前为每个连接在电线上滑动一小块热缩套管 ( https://amzn.to/2Dc6lD3 )。焊接时将它拿得远一点,然后一旦接头冷却并在测试完所有内容后,将其滑到连接处并用热风枪加热几秒钟。它缩小以形成整齐的接头。

注意:我在某处读到,Arduino D12 或 D8 上的某些引脚之间存在一些串扰。为安全起见,我将 D3 用于第四个输出 - 但如果您想尝试其他输出,请随意,只是不要忘记在代码中更新它。

将电缆切割成合理的长度以放入盒子内,然后再次切割末端并镀锡。这一次,将电缆焊接到引脚上的 MOSFET 板上,如图所示。每个数字输出(D9、D10、D11 和 D3)应焊接到四块板之一。对于 GND 输出,我将它们全部放在一起并用一团焊料将它们连接起来——这不是最简洁的方法,但无论如何它们都藏在一个盒子里……

Arduino 到 MOSFET

输入电压我以相同的方式连接 +12V 和 GND,并将它们和一些较短的 2 芯电缆放入 Chocblock 中。这让我可以使用 Choblock 来消除来自 LED 驱动器/PSU 的输入电源的应力,还可以让更粗的 2 芯电缆更整齐地连接起来。我最初在电缆的末端镀锡,但发现它们在 MOSFET 板上的连接中不太合适,所以最终切断了镀锡的末端并且它们更适合。

我又拿了一些 4 厘米长的 2 芯电缆,并将它们焊接到 2.1 插座上。请注意,它们上面有三个引脚,其中一个用于在移除连接时提供馈电。使用内部引脚 (12V) 和外部 (GND) 的连接,并使第三个引脚断开连接。然后将每根电缆穿过盒子侧面的孔,加上螺母,然后将它们插入MOSFET连接器输出端子并拧紧。

连接传感器

使用一些四芯电缆,剪下足够长的长度,以便从您隐藏 PSU 和盒子的位置到您要放置传感器的位置(确保这是一个在您走进该区域时会抓住您的位置,但当有人从隔壁房间走过时不会绊倒!)。

将电线焊接到传感器板上的针脚(如果愿意,可以移除针脚),并使用短电缆(黑色!)连接一根连接电缆,将 GND 电缆连接到开关的一侧。然后将另一根电线从 4 芯电缆焊接到开关的另一侧。

将传感器和开关放入白盒中,然后将电缆绕过您的房间,然后将电缆的另一端推入黑盒中的孔并将电线焊接到 Arduino 上的正确引脚上。

在盒子内部的电缆周围放置一个小电缆扎带,以帮助防止电缆被拉扯并损坏您与 Arduino 的连接。

力量

我买的 LED 驱动器(电源)有两个输出尾部 - 都有 12V 和 GND 输出,所以我同时使用了这两个并分开使用,这样 2 个 LED 通过两个 MOSFET 并由其中一个供电电源输出,其他2个LED来自另一个输出。根据您使用的 LED 的负载,您可能选择了不同的电源并且只有一个输出。

因此,我的盒子有 2 个孔供电源线进入,然后我在里面放了一个 Chocblock 以进行连接并提供应力消除。

 

第 4 步:Arduino 程序

该程序(随附)应该是相对不言自明的,我已尝试在整个过程中提供评论。请随时根据您自己的项目要求对其进行修改。

重要提示:我最初是在一套零件和一个 Arduino UNO 上设置的。如果您随后使用 Arduino NANO 板,它们上的引导加载程序可能会更旧。你不需要更新这个(有一种方法可以做到这一点,但这个项目不需要)。您需要做的就是确保在Tools>Board中选择 Arduino NANO ,然后在Tools>Processor 中选择正确的。选择 COM 端口后,如果连接到串行控制台(工具 > 串行监视器),您还可以选择查看发生了什么。

这是我的第一个 Arduino 项目,我很高兴下载、安装和使用 Arduino 编程工具(让您输入程序并将它们上传到威廉希尔官方网站 板的东西)真的很容易。(从https://www.arduino.cc/en/main/software下载 IDE

只需将威廉希尔官方网站 板插入 USB 端口,它就会显示为一个设备,您可以将程序上传到威廉希尔官方网站 板并运行代码!

代码如何工作

基本上,在我定义所有内容的顶部有一些设置。在这里,您可以更改用于灯的引脚、灯的最大亮度(最大 255)、淡出的速度以及淡出的速度。

还有一个偏移值,它是一个光衰落到下一个光衰落之间的间隙 - 因此您无需等待每个光衰落 - 您可以在前一个光衰落完成之前开始下一个淡入淡出。

我选择了对我有用的价值观,但请随意尝试。但是:1)我不建议将最大亮度调得太高——虽然它可以工作,但我觉得灯光太亮而且不微妙(而且,对于一长串 LED,额外的电流会使 MOSFET 变热——其中换一个更通风的盒子)。2) 偏移适用于当前值,但由于 LED 不会根据施加的功率以线性方式增加亮度,您可能会发现还需要调整其他参数,直到获得良好效果。3) 在渐亮例程中,我将台下灯的最大亮度设置为 255(它们消耗的电流较少,因此不会使 MOSFET 过热,而且我想看看我在煮什么!)。

在设置部分之后,有一个大循环。

这从板载 LED 上的一两个闪光灯开始(因此您可以看到它正在工作,并且还可以作为延迟让您有机会走出传感器的范围)。然后代码进入循环,等待传感器触发的变化。

一旦它得到这个,它就会调用 TurnOn 路由,它会从 0 开始计数到所有 4 个设备的总值处于所选最大值,增加您在 FadeSpeed1 值中指定的数量。它使用约束命令来防止每个输出大于最大亮度。

然后它位于另一个循环中,如果再次触发传感器则重置一个值。如果这没有重置,那么当 Arduino 的计时器达到这一点时,它会跳出循环并调用 TurnOff 例程。

在“开启状态”循环期间的任何时候,如果按下开关超过几毫秒,我们就会使灯闪烁以确认,然后设置一个标志,使定时器值始终被重置——因此灯永远不会熄灭再次。第二次按下开关会使灯再次闪烁并退出循环,从而使灯淡出并重置。

 

第 5 步:将其全部放入盒子中

一旦你把所有东西都连接起来,就该测试它了。

我发现传感器的原始位置不起作用,所以我缩短了电缆并将其放置在新位置 - 我暂时用一滴热熔胶将其粘起来,但它在那里工作得很好,我有让它卡在那里而不是使用维可牢尼龙搭扣垫。

在传感器上,有几个可变电位器,可让您调整 PIR 的灵敏度以及传感器被触发的时间。由于我们在代码中控制“多长时间”元素,您可以将其保留在最低值,但可以随意调整灵敏度选项。还有一个跳线——我把它留在了默认位置,它允许传感器被“重新触发”——如果它只检测到你一次然后总是超时,那么是时候移动这个开关了!

为了帮助测试,我暂时将灯亮的时间缩短到 12 秒左右,而不是等待 2 分钟左右。请注意,如果您使其小于完全淡入所需的时间,代码将始终超过最长时间并立即淡出。

对于 LED 灯条,您需要在灯条上标记的点处切割灯条。然后,使用一把锋利的刀(但要注意不要切透!),切开防水涂层直至金属条,然后将其剥离,露出两个焊盘。在这些上面放一些焊料(再次注意不要使它们过热)并连接一根双芯线。然后在电线的另一端,焊接一个插头,这样你就可以把它插到插座上,让威廉希尔官方网站 驱动。

注意:虽然我为 LED 灯条购买了一些 90 度连接器,您可以简单地滑动,但我发现它们的连接非常糟糕,以至于它们会闪烁或失败。因此,我将条带切割成我想要的尺寸,并在 LED 条带之间焊接了一根连接电缆。当我不得不运行橱柜下的条带时,这也有帮助,因为我必须在洗碗机和冰箱所在的位置进行更长的连接。

将所有东西插在一起,然后将电源插入主电源。然后,如果您靠近 PIR 传感器,它应该会触发,您应该会看到灯光以优雅的方式逐渐变暗。

如果像我一样,灯以错误的顺序淡出,只需弄清楚哪根电缆是哪根电缆,然后将电缆拔出/交换到另一个插座,直到它很好地褪色。

您可能还想调整程序设置(我注意到 LED 灯条越长,它们在“全亮度”下显示的越暗),您只需将 arduino 插入计算机并重新上传新程序即可。

虽然我在某处读到将两个电源插入 Arduino 不是一个好主意(USB 也提供电源),但我最终将 arduino 插入电源,然后将 USB 连接插入计算机,以便我可以使用串行端口监视器监视正在发生的事情。这对我来说效果很好,所以如果你也想这样做,我已经在代码中留下了串行消息。

确认一切正常后,就可以将所有东西都装进盒子里了。为此,我只使用了热胶。

如果你看一下盒子里所有东西的位置,你会看到 MOSFET 板可以放在盒子的任一侧,然后可以将这些环路输出的电缆和 2.1mm 插座放在旁边通过孔和连接到 MOSFET 本身的螺母将其固定到位。一点点胶水有助于将它们固定到位,但如果需要,它们仍然可以再次拉下。

Arduino 应该侧向放置在盒子的顶部,用于电源输入的巧克力块应该位于底部。

如果你有时间测量并重新焊接所有的电缆,请随意这样做,但因为它既在一个盒子里又藏在我的台面下面,我把我的“老鼠窝”电线留在了中间空间盒子(远离 MOSFET 上的散热器,以防它们变热)。

然后只需盖上盒子的盖子,插上电源即可享用!

第 6 步:总结和未来

我希望你觉得这很有用,虽然我是为我的新厨房设计的(有四个 LED 元件),但它很容易适应其他用途。

我发现我们不倾向于使用主厨房灯,因为这些 LED 灯可以为大多数用途提供足够的光线,并使厨房成为一个更有趣的地方。

这是我的第一个 Arduino 项目,当然不会是我的最后一个项目,因为编码部分允许我使用我的(生锈的!)编码技能而不是电子设计过程,并且 Arduino 连接和支持提供了许多非常酷的功能而不需要做很多威廉希尔官方网站 。

我本可以自己购买 MOSFET(或使用其他方法)来驱动 LED 灯条的高电流,但这意味着购买支持组件(二极管、电阻器等),板上的 SMD LED 很有用,所以我觉得为威廉希尔官方网站 板多付一点钱是合理的。

您可能想要修改它以驱动其他类型的照明威廉希尔官方网站 ,甚至是特定项目中的风扇或其他电机威廉希尔官方网站 。它应该工作相同,脉冲宽度调制方法应该适用于这些设备。

在我们的厨房里,灯应该是用来强调的,所以我们一直都在使用它们。然而,我最初考虑添加一个光传感器,以仅在足够暗的情况下启用“ON”状态。由于代码中的分阶段循环,很容易将光敏电阻器添加到 Arduino 上的模拟引脚之一,然后更改“OFF”循环中的断开条件以简单地等待传感器和 LDR 到低于某个值,例如while ((digitalRead(SENSOR) == LOW) and (LDR <= 128)); .

让我知道你的想法或你对这个以及任何其他建议的看法!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'Arduino供电、传感器控制的褪色LED灯带',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);