一个arduino可以控制多少个单独的灯

电器工程 Arduino 引领 教程
2022-01-15 10:34:39

我想使用普通的 Arduino 板来控制 LED - 我可以从板上单独控制的灯最多是多少?

有没有关于如何连接它的教程?

4个回答

我相信使用 Charlie-plexing N 线控制 N*(N-1) 个 LED。维基百科上有一篇很好的文章。

我的一个朋友 Jimmie P. Rodgers 在 Arduino Shield 上安装了 126 个 LED。他使用 charlie-plexing 来控制 LED。关于他的董事会的一些信息在 ——jimmieprodgers.com/2009/12/my-development-process/(archive.org副本)


在上一次波士顿 Arduino 用户组会议上,Jimmie P. Rodgers 绘制了一个 Charlie-plexing 图作为带有标记网络的矩阵。以这种方式绘制的示意图似乎很好地传达了这个概念。我创建了几个类似的示意图——见http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html

您可以使用移位寄存器 ( http://en.wikipedia.org/wiki/Shift_register ) 从单个串行流中获得任意数量的并行输出。

您将需要关注您的电源限制。实际上,我自己从未使用过 Arduino,但我假设它像 PIC 一样有电流限制。此外,移位寄存器本身也有电流限制。如果遇到这种情况,您将需要考虑使用 MOSFET 之类的东西来控制 LED,而无需直接从微控制器中获取大量电力。

任何给定的 AVR 微控制器引脚都允许提供高达 40 mA 的电流,并且芯片提供或吸收的总电源(即在地和 Vcc 引脚)需要低于 200 mA。

对于需要大量 LED 但一次只能点亮一个 LED 的情况,Charlieplexing 是一个很好的解决方案。标准 Arduino 板(如 Duemilanove)提供 17 个“空闲”I/O 引脚,不包括 TX、RX、复位或引脚 13。因此,您可以连接 17*16=272 个 LED。这可以很好地工作,特别是如果您保持一个 LED 点亮,或者在几个 LED 之间快速扫描。但是,如果您尝试用一种模式点亮整个矩阵,您会发现每个 LED 的开启时间(略少于)1/272,因此如果您的驱动电流在任何给定时刻为 30 mA,则每个 LED 的平均电流约为 0.1 mA——相当暗淡。

如果您不需要那么多 LED,而是需要更高的亮度,那么传统的多路复用可能是更好的选择。在这种情况下,您将一些行用作矩阵中的行,而将一些行用作列。如果您使用 10 mA LED 电流,您可以定义一个 4 列和 13 行的矩阵,其中一行中的所有 4 个 LED 可以一次点亮,然后您扫描行。然后每行在 10 mA 电流下的时间为 1/13,因此平均 LED 电流可高达 0.76 mA,但您只能获得 4*13=104 个 LED。(每个 LED 肯定比使用 charlieplexing 更亮。)

最后一个示例中的限制是 AVR 上每个引脚的电流为 40 mA——因为每行驱动引脚的电流为 4x10=40 mA。如果您允许将外部晶体管(既便宜又小)添加到行输出,那么您可以避免该特定限制并变得更亮。例如,您可以制作一个 8x9 阵列,有 8 行和 9 列,总共 72 个 LED。通过晶体管选择 8 行之一一次打开。给定行中的所有 9 个 LED 一次可以点亮,以 20 mA 驱动,因此 180 mA 来自晶体管,并且您保持在 AVR 的电流限制之下。现在每个 LED 的平均电流为 20 mA/8 = 2.5 mA——通常相当亮。

这里有一个非常好的详细教程,其中包括有关使用 Arduino 运行 8x8x8 LED 立方体的部分。(不要错过他们制作的 YouTube 电影)

在此处输入图像描述