如何扩展Arduino PWM输出–TLC5940教程

在这个Arduino教程中,我们将学习如何使用TLC5940 PWM驱动器使用Arduino板。TLC5940是一个16通道LED驱动器,提供PWM输出,非常适合扩展Arduino PWM功能。不仅是LED,但有了这个IC,我们还可以控制伺服,直流电机和其他电子元件使用PWM信号。必威lol

如何扩展Arduino PWM输出---TLC5940教程

基本特征


  • VCC=3V至5V
  • 16个通道
  • 12位(4096步)PWM控制
  • 驾驶能力
    - 0 mA to 120 mA (VCC > 3.6V)
    –0 mA至60 mA(VCC<3.6 V)
  • 串行数据接口
  • 30 MHz数据传输速率
  • 菊花链

菊花链接是一个很好的特性,这意味着我们可以将多个TLC5970集成电路串联在一起。有了这个,我们可以扩展Arduino的PWM能力到超过16个输出,例如32,48,或64 PWM输出,并仍然使用Arduino板使用相同的4引脚控制一个TLC5940 IC。

你可以从下面的任何一个网站获得本教程的组件:

必威外围提钱披露:这些是附属链接。作为一名亚马逊员工,我从符合条件的购买中获得收入。

Arduino和TLC5940接线


为了控制TLC5940,我们需要占用Arduino板的4个引脚。由于我们将使用Alex Leone制造的TLC5940 Arduino库,我们需要根据库配置或使用以下电路示意图将IC连接到Arduino:

Arduino-and-TLC5940-Wiring——电路图

上面的电路图是使用外部电源供电的led灯,而且它可以连接使用Arduino VCC如果绘制电流的总量不超过Arduino的极限(绝对最大额定值,直流电流VCC和接地插脚- 200 mA)。

我们还需要注意的是,TLC5940是一个恒流接收器,所以电流流向输出引脚。这意味着当连接LED时,我们需要将负极引线(阴极)连接到IC的输出引脚,正极引线(阳极)连接到5V VCC。

我们还需要两个去耦电容器和一个电阻器来控制流经输出的电流量。电阻器的值取决于我们想要控制的组件,可以使用下面的图表从数据表TLC5940。

TLC5940电阻值图

因此,根据图表,为了控制需要20mA电流的LED,我们需要一个2K的电阻器。

源代码


一旦我们下载并安装TLC5940Arduino图书馆由Alex Leone制作,我们可以使用他的“BasicUse”演示示例来理解如何控制IC的输出。

下面是我为本教程编写的一个简单代码,用于使用此库控制16个LED。阅读代码中的注释以了解函数的工作原理。

/* * Arduino和TLC5940 Tutorial - Simple Example * by Dejan Nedelkovski, www.HowTbet188官方网站oMechatronics.com */ #include " TLC5940 .h" void setup() {Tlc.init(0);//初始化TLC5940并关闭所有通道}void loop() {Tlc.set(0,4095);//(Output Pin from 0 to 15,PWM Value from 0 to 4095) //注意:前面的功能不会立即激活输出。当Tlc.update()函数被执行时,输出将被激活!Tlc.update ();//激活之前设置的输出延迟(1000);//同时激活所有16个输出,我们可以使用For循环设置所有的PWM值为4095。然后Tlc.updata()函数将同时激活它们。For (int I = 0;我< 16; i++) { Tlc.set(i, 4095); } Tlc.update(); delay(1000); //The Tlc.clear() function clears all the outputs, or sets the PWM value of all outputs to 0 Tlc.clear(); Tlc.update(); delay(1000); // This for loop will active all 16 LEDs one by one for (int i = 0; i < 16; i++) { Tlc.set(i, 4095); Tlc.update(); delay(200); Tlc.clear(); Tlc.update(); delay(200); } }

控制多个TLC5940


为了串联多个IC,我们可以使用上面所示的相同电路原理图。唯一的区别是,第一个IC的SOUT(信号输出–引脚17)需要连接到第二个IC的SIN(信号输入–引脚26),以此类推。

TLC5940-Tutorial-Library-configuration

至于编程部分,我们需要做一些修改。在TLC5940库文件夹中,我们需要修改tlc_config.h文件,并将变量NUM_TLCS的值更改为串联的TLC5940 IC的数量,在我们的情况下,该值为2。完成此操作后,现在我们可以轻松地寻址0到31之间的所有LED,并使用与前面所述相同的编程方法。

作为一个例子,在下面的链接中,你可以查看我的DIY LED心脏相框- Arduino项目,我使用2个TLC5940芯片控制32个LED。

DIY LED心形相框Arduino项目

8反应

  1. 丹尼尔

    是否有可能控制例如10 RGB Led二极管,但“单独”?我需要的是控制10个led,每个都要亮另一种颜色

    谢谢你的回答

    回复
    • 德扬Nedelkovski

      每个RGB LED需要3个不同的引脚。所以对于10个RGB LED,你需要30个引脚,2个这样的IC。然而,也有不同的方式,更多的控制LED少引脚,如多路复用或charlieplexing。

      回复
  2. 维克多

    使用TLC5940,我可以控制每个输出的PWM值,还是16个输出的PWM值必须相同?

    回复

留下一个回复

您的电子邮件地址将不会发布。

推荐

最佳入门级示波器初学者和爱好者2019年

最适合初学者和爱好者的示波器

推荐

2019年针对初学者的8个最佳Arduino入门工具包

8个最好的arduino初学者工具包

推荐

最佳3D打印机初学者和爱好者- 3D打印

适合初学者和爱好者的最佳3D打印机