|
在本篇文章中,我们将学习如何基于Arduino开发板使用PWM驱动器TLC5940。TLC5940是一款16通道LED驱动器,提供PWM输出,非常适合扩展Arduino开发板的PWM功能。这款IC不仅仅带有LED,我们还可以使用PWM信号控制伺服系统、直流电机和其他电子元件。
基本参数 ● VCC = 3V至5V ● 16个通道 ● 12位(4096步)PWM控制 ● 驱动能力
- 0 mA至120 mA(VCC> 3.6V)
- 0 mA至60 mA(VCC <3.6V) ● 串行数据接口 ● 30 MHz数据传输速率 ● 菊花链连接
菊花链是一个很棒的功能,这意味着我们可以将多个TLC5970串联在一起。有了这个,我们可以将Arduino的PWM功能扩展到16个以上的输出,例如32、48或64个PWM输出,并且仍然使用与Arduino开发板相同的4个引脚来控制一个TLC5940。
本篇文章所需的组件如下所示: ● Arduino Nano开发板 ● 超亮红色LED灯 ● TLED驱动器LC5940
Arduino与TLC5940的接线方式 为了控制TLC5940,我们需要占用Arduino开发板的4个引脚。由于我们将使用由Alex Leone制作的TLC5940 Arduino库,我们需要根据他的库配置或使用以下电路原理图将IC连接到Arduino:
上面的电路原理图使用外部电源为LED供电,但如果所需电流总量不超过Arduino的极限(VCC和GND引脚直流电流的绝对最大额定值 - 200 mA),它也可以使用直接连接到Arduino的VCC网络。
我们还需要注意的是,TLC5940是一个恒流源电流,因此电流流向输出引脚。这意味着当连接LED时,我们需要将负极引线(阴极)连接到IC的输出引脚,将正极引线(阳极)连接到5V VCC。
我们还需要2个用于去耦的电容和一个用于控制流过输出的电流量的电阻。电阻值取决于我们要控制的组件,可以使用TLC5940数据手册中的下图进行选择。
因此,根据图表,为了控制需要20mA电流的LED,我们需要一个2K电阻。
源代码 下载并安装由Alex Leone制作的TLC5940 Arduino库后,我们可以使用他的“BasicUse”演示示例来了解如何控制IC的输出。
这是我为本教程制作的一个简单代码,用于使用此库控制16个LED。阅读代码中的注释,以了解函数的工作原理。 - /*
- * Arduino and TLC5940 Tutorial - Simple Example
- * by Dejan Nedelkovski, www.HowToMechatronics.com
- */
- #include "Tlc5940.h"
- void setup() {
- Tlc.init(0); // Initiates the TLC5940 and set all channels off
- }
-
- void loop() {
- Tlc.set(0,4095); //(Output Pin from 0 to 15,PWM Value from 0 to 4095)
- // Note: The previous function doesn't activates the output right away. The output will be activated when the Tlc.update() function will be executed!
-
- Tlc.update(); // Activates the previously set outputs
- delay(1000);
- // For activating all 16 outputs at the same time we can use a for loop for setting all of them to be set to PWM value of 4095. Then the Tlc.updata() function will active them all at the same time.
- for (int i = 0; i < 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,我们可以使用与上面所示相同的电路原理图。 唯一的区别是第一个IC的SOUT(信号输出 - 引脚17)需要连接到第二个IC的SIN(信号输入 - 引脚26),依此类推。
至于编程部分,我们需要做一些修改。 在TLC5940库文件夹中,我们需要修改tlc_config.h文件,并将变量NUM_TLCS的值更改为串联连接的TLC5940的数量,在本例中,该值为2。完成此操作后,现在我们可以轻松定位从0到31的所有LED,并使用与前述相同的编程方法。 |