如何使用Arduino控制数百个单独的led?


10

我正在从事一个涉及数百个LED的电子项目。(我知道有多达六到七百个LED灯。)有没有办法用一个或几个Arduino来控制这么多LED灯?我想能够访问/控制每个LED 单独为我所想要做的是情节的LED推上了世界的挂图。然后,我将Arduino与Google Analytics(分析)连接,当有人从世界上某个地方导航到我的网站时,最接近其所在区域的LED几乎会实时点亮。

任何帮助,将不胜感激。谢谢!我已经尝试研究一些内容,并阅读了有关多路复用和charlie-plexing的信息,但是这些似乎最多可以达到100个左右?我假设我将需要外部硬件/组件来控制这么多的LED,但是究竟需要什么才能做到这一点?有没有其他人创造过这么大的LED矩阵?

Answers:


9

当您单独复用大量LED时,常见的方法是使用N x M矩阵。时间分为N步,在每一步中,您将激活N条行线之一,并激活与要启用的LED对应的列线。请注意,每条行线可以承载LED电流的M倍,这需要一些缓冲。每个LED的时间仅为1 / N,因此要保持正常亮度,必须将电流增加N倍。大多数LEDS不喜欢这样。由于涉及大电流,因此在这种情况下Charlieplexing不切实际。

从您的问题中我了解到您想一次仅启用1个LED?在这种情况下,Charlieplexing没有任何问题。具有31个I / O引脚的uC可以驱动900个LED。听起来像是建筑梦con。


五年后更新:如果您有太多时间在手,则正常的多路复用或Charlieplexing效果很好,但是当我现在必须控制100个LED时,我会购买一长条WS2801 LED。


我想我要补充一点。好吧,如果问题出在大电流上,那就使用高压。像9v,但在很短的时间内10ms并正确计算了占空比。由于它也增加了LED灯的使用寿命。
Standard Sandun

LED固定的电压是固定的,Arduino的输出电压也是固定的(对于某些类型的3.3V,其输出电压可能是5V)。使用较高的电流和较小的占空比通常会缩短 LED寿命。
Wouter van Ooijen 2012年

9

您可以使用便宜且容易找到的74HC595(或类似寄存器)移位寄存器,只需使用arduino的几个引脚即可轻松控制数百个LED。

甚至在Arduino网站上也有一个教程!

通过74HC595进行串行到并行移出

移出和595芯片

有时您可能会用完Arduino板上的引脚,并需要使用移位寄存器对其进行扩展。本示例基于74HC595。数据表将74HC595称为“具有输出锁存器的8位串行输入,串行或并行输出移位寄存器;三态”。换句话说,您可以使用它一次控制8个输出,而只占用微控制器上的几个引脚。您可以将多个寄存器链接在一起以进一步扩展输出。


那将是很多移位寄存器,但它可以工作:)您将需要大约88个(每个芯片700 leds / 8 leds)移位寄存器和1 mcu。
2012年

1
不要忘记其他的逻辑驱动器,因为有88个输入可以处理。
伊格纳西奥·巴斯克斯

2

我将以模块化方式构建它。Maxim的6960将为您驱动64个LED,尽管价格有点贵。它们由串行接口驱动,您最多可以将256个连接在一起。

7218/7221也可以使用。


2

这个问题的答案有点晚了,但是这里有528个LED Charlieplex集成在单个PICAXE 40X2上。如果所有引脚都专用于该工作,则最多可以增加930个LED。

内部版本:http//www.picaxeforum.co.uk/entry.php?25- The-PICaxe- orrery

视频:http : //www.youtube.com/watch?v=82LvqiaH-iA

PICAXE体系结构的速度很慢,因此在闪烁成为问题之前,可以同时点亮的最大LED数量限制为大约15个。更快的处理器和更聪明的编程将大大增加这个数字。


1

我不确定我的答案是否正确...但是为什么不谈论WS2811可寻址LED条纹呢?

我们想做一个LED矩阵来显示文本。这里有一个项目(https://www.pjrc.com/teensy/td_libs_OctoWS2811.html),该项目是在Teensy上完成的,与Arduino差不多。

我认为它使用PWM(脉冲宽度调制)的概念,因此允许通过单根导线将复杂的数据发送到LED灯条。

但是我不确定我的答案是否正确...


问题在于所需的时间限制了可以链接在一起的LED的数量,并且将它们分布在多个链中会增加总体处理时间。
伊格纳西奥·巴斯克斯

0

在最近的问题中,我们就驱动许多LED进行了很多讨论。我的答案似乎直接适用于您在此处遇到的问题。在这里查看答案:

长距离驱动LED


4
如果您的答案对两个问题都适用,那么您是否可以提出适用的信息并将其调整为适合该问题的标志,则表示完全相同。
Kortuk 2012年

0

根据 带有Arduino Uno的74H595移位寄存器上http://bildr.org/?s=shift+register上的信息 ,它说“如果您将其中的1000个链接在一起”,则在LED显示屏上启动了一个项目, 320个LED。当我超过100个LED时,闪烁会变差,并最终炸掉Arduino。

因此,我与Sparkfun的技术支持人员进行了交谈,后者向我出售了74H595的突破板。他说您一次只能打开五个或六个LED。因此,我回头阅读了BLDR上的文章,并意识到可以使用74H595 / Arduino来控制数千个LED,但一次只能拥有十几个左右。(这是有道理的,因为Arduino将通过5伏输出允许200mA电流,而每个LED消耗20mA电流,因此大约10伏它可以安全地供电)

已经看到可以用1mA电流接通的晶体管。如果是这样,那么可以设计一种电路来控制具有更高电压/电流收集器流向发射极的晶体管。然后可以使用Arduino / 74H595组合来控制电路中电流更高的晶体管。

艾伦在达拉斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.