TLC5940 16 通道 PWM 驱动扩展 Arduino 输出能力
TLC5940 核心特性
- 16 通道恒流驱动,12 位 PWM(4096 级)
- 电流范围:0~120 mA (VCC>3.6V) / 0~60 mA (VCC<3.6V)
- 串行数据接口,30 MHz 传输速率
- **级联扩展**:SOUT 接下一片 SIN,Arduino 仍占 4 线即可控制 32/48/64 通道
关键硬件设计
- **恒流灌入型**:LED 阳极接 VCC,阴极接 OUTn(电流流向 IC 内部)
- 电流设定电阻
Riref接 IREF 引脚(引脚 20)到 GND,查数据表选值:20 mA 红光约 2 kΩ - 去耦电容:VCC 侧 0.1 μF + 10 μF
- 建议外部供电 LED,避免超出 Arduino 200 mA 总电流限制
Arduino 库与基础代码
使用 Alex Leone 的 Tlc5940 库,引脚固定(Uno: DIN=11, SCK=13, XLAT=9, BLANK=10, GSCLK=3)。
#include "Tlc5940.h"
void setup() {
Tlc.init(0); // 全通道关闭初始化
}
void loop() {
// 单通道点亮
Tlc.set(0, 4095); // 通道 0, 最大占空比
Tlc.update(); // 刷新输出
delay(1000);
// 全通道同时点亮
for (int i = 0; i < 16; i++) Tlc.set(i, 4095);
Tlc.update();
delay(1000);
// 全灭
Tlc.clear(); Tlc.update();
delay(1000);
// 跑马灯
for (int i = 0; i < 16; i++) {
Tlc.set(i, 4095); Tlc.update(); delay(200);
Tlc.clear(); Tlc.update(); delay(200);
}
}
注意:Tlc.set() 仅写入缓存,**必须调用 Tlc.update() 才会刷新到输出**。
多片级联配置
- 硬件:前片 SOUT (Pin 17) → 后片 SIN (Pin 26),其余控制线并联
- 修改库文件夹下
tlc_config.h:#define NUM_TLCS 2 - 重启 Arduino IDE,通道编号变为 0~31,编程方式完全相同
实战案例:DIY LED 心形相框(2 片 TLC5940 驱动 32 颗 LED)。
扩展应用
除 LED,亦可驱动舵机(需额外电平转换)、直流电机(配合 H 桥)、任何接受 PWM 的负载。12 位分辨率在调光、色彩混合、精细电机控制中表现优异。
制造工艺
- 使用 OpenSensors 监测空气质量:Arduino 与 Python 实战指南
- 打造安全的 Arduino RFID 门锁——分步指南
- 用 Arduino 制作万能红外遥控器:分步指南
- DIY 数字身高仪:Arduino Nano + VL53L0X 激光测距 + OLED 显示
- 热敏电阻测温轻松上手:Arduino 分步实战教程
- Arduino 合成乐音:从零实现 88 键钢琴全音域
- Arduino Nano 指纹传感器项目——分步教程
- Arduino Modbus 从机开发全攻略:基于 RS485 扩展板的分步实现指南
- 用 Arduino UNO 自制迷你钢琴 — 图文教程
- Arduino Nano 打造 JARVIS v1 家庭自动化:分步教程
- 掌握 Arduino 多任务编程:原型线程分步教程
- Arduino入门教程01:开始你的第一个项目