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

在本教程中,我们将学习如何使用Arduino板的TLC5940 PWM驱动程序。TLC5940是一个16通道LED驱动器,提供PWM输出,非常适合Arduino PWM功能的扩展。不仅仅是led,我们还可以使用PWM信号控制伺服、直流电机和其他电子元件。yabo7. com

How-To-Extend-Arduino-PWM-Outpits——TLC5940-Tutorial

基本特征


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

Daisy链接是一个很棒的功能,这意味着我们可以将多个TLC5970 ICs串联在一起。有了这个,我们可以扩展Arduino的PWM功能到超过16个输出,例如32、48或64个PWM输出,并且仍然使用Arduino板使用的相同的4个引脚来控制TLC5940 IC。

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

yaboAG娱乐城披露:这些是附属链接。作为一名亚马逊助理,我的收入来自符合条件的购买。

Arduino和TLC5940接线


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

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

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

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

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

TLC5940-Resistor-Value-Diagram

所以根据图表,为了控制需要20mA电流的led,我们需要一个2K电阻。

源代码


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

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

/* * Arduino和TLC5940教程-简单的例子* by Dejan Nedelkovski, www.HowToMechatronics.com *亚搏手机版官方下载/ #include " TLC5940 . jpg "h" void setup() {Tlc.init(0);} void loop() {Tlc.set(0,4095);//(输出引脚从0到15,PWM值从0到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的SOUT(信号输出-引脚17)需要连接到第二个IC的SIN(信号输入-引脚26),以此类推。

TLC5940-Tutorial-Library-configuration

至于编程部分,我们需要做一些修改。在TLC5940库文件夹中,我们需要修改tlc_config.h文件,并将变量NUM_TLCS的值更改为串行连接的TLC5940 ICs的数量,在本例中该值为2。完成这些之后,现在我们可以轻松地处理从0到31的所有led,并使用前面描述的相同编程方法。

例如,在下面的链接中,您可以查看我的DIY LED心脏相框- Arduino项目,其中我使用2个TLC5940 ICs控制32个LED。

DIY-LED-Heart-Photo-Frame-Arduino-Project

8反应

  1. 丹尼尔

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

    谢谢你的回答

    回复
    • 德扬Nedelkovski

      每个RGB LED需要3个不同的引脚。所以对于10个RGB led,你需要30个引脚,2个集成电路。然而,也有不同的方法来更多地控制更少的引脚led,如多路复用或charlieplexing。

      回复
  2. 维克多

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

    回复

留下一个回复

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

推荐

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

最好的示波器为初学者和爱好者

推荐

8个最好的Arduino入门工具包,适合2019年初学者

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

推荐

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

最好的3D打印机为初学者和业余爱好者