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

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

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

基本特征


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

Daisy链接是一个很好的特征,意味着我们可以将多个TLC5970 IC系列串联连接。有了这个,我们可以将Arduino的PWM功能扩展到16个输出,例如32,48或64个PWM输出,仍然使用Arduino板使用的相同4个引脚,用于控制一个TLC5940 IC。

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

必威外围提钱披露:这些是附属链接。作为一名亚马逊助理,我的收入来自符合条件的购买。

Arduino和TLC5940接线


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

Arduino-and-tlc5940-winding ---电路原理图

The circuit schematics above is using external power supply for powering the LEDs, but also it can be connected just using the Arduino VCC itself if the total amount of drawn current doesn’t exceed the limit of the Arduino (Absolute Maximum Rating, DC Current VCC and GND Pins – 200 mA).

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

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

TLC5940-Resistor-Value-Diagram

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

源代码


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

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

/ * * Arduino和TLC5940教程 - 简单榜样*由Dejan Nedelkovski,www.www.mfxpo.com * /bet188官方网站 #include“tlc5940.h”void setup(){tlc.init(0);//启动TLC5940并将所有频道关闭} void loop(){tlc.set(0,4095);//(输出引脚从0到15,PWM值从0到4095)//注意:之前的功能不会立即激活输出。将执行TLC.Update()函数时将激活输出!tlc.update();//激活先前设置的输出延迟(1000);//同时激活所有16个输出,我们可以使用for循环将所有它们设​​置为设置为4095的PWM值。然后TLC.Updata()函数将同时激活它们。for(int i = 0; i <16; i ++){tlc.set(i,4095);tlc.update();延迟(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  - 教程库配置

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

例如,在以下链接上,您可以查看我的DIY LED心脏照片框架 - Arduino项目,其中我使用2 TLC5940 IC来控制32个LED。

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

8回复

  1. 丹尼尔

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

    谢谢你的回答

    回复
    • Dejan Nedelkovski.

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

      回复
  2. 胜利者

    使用TLC5940,我可以控制每个输出的PWM值,否则它必须与16个输出相同的PWM值?

    回复

发表评论

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

推荐

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

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

推荐

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

初学者的8个最佳Arduino Starter Kits

推荐

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

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