亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

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

在本 Arduino 教程中,我们将学习如何使用 Arduino 板使用 TLC5940 PWM 驱动程序。 TLC5940 是一款 16 通道 LED 驱动器,可提供 PWM 输出,非常适合扩展 Arduino PWM 功能。不仅是 LED,通过这个 IC,我们还可以使用 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 IC 串联在一起。有了这个,我们可以将 Arduino 的 PWM 功能扩展到超过 16 个输出,例如 32、48 或 64 个 PWM 输出,并且仍然使用 Arduino 板用于控制一个 TLC5940 IC 的相同 4 个引脚。

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

  • Arduino Nano…………………………..
  • 超亮红色 LED………………
  • TLC5940 LED 驱动器………………

Arduino 和 TLC5940 接线

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

上面的电路原理图是使用外部电源为 LED 供电,但如果消耗的电流总量不超过 Arduino 的限制(绝对最大额定值,直流电流 VCC),也可以仅使用 Arduino VCC 本身连接和 GND 引脚 – 200 mA)。

我们还需要注意,TLC5940 是一个恒流吸收器,因此电流流向输出引脚。这意味着在连接 LED 时,我们需要将负极引线(Cathode)连接到 IC 的输出引脚,将正极引线(Anode)连接到 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);
  }
}Code language: Arduino (arduino)

控制多于一个 TLC5940

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

至于编程部分,我们需要做一些修改。在 TLC5940 库文件夹中,我们需要修改 tlc_config.h 文件并将变量 N​​UM_TLCS 的值更改为串联连接的 TLC5940 IC 的数量,在我们的例子中该值为 2。完成此操作后,现在我们可以轻松解决所有问题从 0 到 31 的 LED,并使用与前面描述的相同的编程方法。

例如,在以下链接中,您可以查看我的 DIY LED Heart Photo Frame – Arduino 项目,我使用 2 个 TLC5940 IC 来控制 32 个 LED。


制造工艺

  1. 如何在 OpenSensors 上测量空气质量
  2. Arduino RFID 锁教程
  3. 如何破解红外遥控器
  4. 你有多高?
  5. 使用热敏电阻有多容易?!
  6. 如何用 Arduino 制作音乐
  7. Arduino 指纹传感器教程
  8. 如何在 Arduino 中使用 Modbus
  9. Arduino 教程:迷你钢琴
  10. Arduino 教程:JARVIS v1 |如何制作家庭自动化
  11. 如何对 Arduino 进行多线程(原线程教程)
  12. Arduino教程01:入门