在本教程中,我们将学习如何使用Arduino板的TLC5940 PWM驱动程序。TLC5940是一个16通道LED驱动器,提供PWM输出,非常适合Arduino PWM功能的扩展。不仅仅是led,我们还可以使用PWM信号控制伺服、直流电机和其他电子元件。yabo7. com
基本特征
- 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。
你可以从下面的任何网站获得本教程的组件:
- Arduino纳米 .............................亚马逊/Banggood/阿里巴巴全球速卖通
- 超亮红色led ...............亚马逊/Banggood/阿里巴巴全球速卖通
- TLC5940领导的司机 ...............亚马逊/阿里巴巴全球速卖通
yaboAG娱乐城披露:这些是附属链接。作为一名亚马逊助理,我的收入来自符合条件的购买。
Arduino和TLC5940接线
为了控制TLC5940,我们需要占用您的Arduino板的4个引脚。由于我们将使用Alex Leone制作的TLC5940 Arduino库,因此需要根据Alex Leone的库配置或使用以下电路原理图将IC连接到Arduino:
上面的电路图是使用外部电源供电的led灯,而且它可以连接使用Arduino VCC如果绘制电流的总量不超过Arduino的极限(绝对最大额定值,直流电流VCC和接地插脚- 200 mA)。
我们还需要注意TLC5940是一个恒流接收器,因此电流流向输出引脚。这意味着当连接led时,我们需要连接IC的负极(阴极)和输出引脚,正极(阳极)和5V VCC。
我们还需要2个电容来解耦和一个电阻来控制流过输出的电流。电阻器的值取决于我们想要控制的组件,可以使用下面的图表来选择数据表TLC5940。
所以根据图表,为了控制需要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库文件夹中,我们需要修改tlc_config.h文件,并将变量NUM_TLCS的值更改为串行连接的TLC5940 ICs的数量,在本例中该值为2。完成这些之后,现在我们可以轻松地处理从0到31的所有led,并使用前面描述的相同编程方法。
例如,在下面的链接中,您可以查看我的DIY LED心脏相框- Arduino项目,其中我使用2个TLC5940 ICs控制32个LED。
是否有可能控制例如10个RGB Led二极管,但“单独”?我需要的是控制10个led,每个都必须在另一种颜色亮
谢谢你的回答
每个RGB LED需要3个不同的引脚。所以对于10个RGB led,你需要30个引脚,2个集成电路。然而,也有不同的方法来更多地控制更少的引脚led,如多路复用或charlieplexing。
对于你的LED相框,你使用什么板,你得到什么线
所有的一切都在项目的帖子中解释。
嘿,我想知道用这些装置是否可以控制mewell ldd-700 ?
对不起,我没有这方面的经验。
使用TLC5940,我可以控制每个输出的PWM值吗?或者它必须是相同的16个输出的PWM值?
是的,您可以分别控制每个输出。