【问题标题】:Using adafruit TLC5947 controlled by Arduino Mini使用Arduino Mini控制的adafruit TLC5947
【发布时间】:2014-09-20 13:34:45
【问题描述】:

我们目前正在进行一个小项目,但遇到了一些问题。我们需要一个 0-10V PWM 信号来控制一些 LED。由于我们需要单独控制大约 30 个 LED,我们决定使用两个由 Arduino MINI 控制的 Adafruit 24 通道 12 位 LED 驱动器。

我们将下一段代码上传到 Arduino,但 adafruit 板上没有电压输出。我们怀疑问题出在编程上,我们在网上搜索了解决方案,但找不到任何解决方案。有人可以帮助我们吗?

#include "Adafruit_TLC5947.h"

#define NUM_TLC5974 1

#define data   4
#define clock   5
#define latch   6
#define oe  -1  // set to -1 to not use the enable pin (its optional)

Adafruit_TLC5947 tlc = Adafruit_TLC5947(NUM_TLC5974, clock, data, latch);

void setup() {

  Serial.begin(9600);

  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);

  tlc.begin();

  tlc.setPWM(0, 2000);
  tlc.write();

  tlc.setPWM(1, 4096);
  tlc.write();

  tlc.setPWM(2, 1000);
  tlc.write();


}

void loop() {
}

【问题讨论】:

    标签: arduino led pwm


    【解决方案1】:

    如果您想在 TLC5947 的任何通道上获得电压,您必须在每个通道上添加一个上拉电阻。 TLC5947 的输出是集电极开路,这就是我们将 LED 的阴极连接到通道,将阳极连接到源极的原因。

    【讨论】:

      【解决方案2】:
      1. 您是否在 IRef 引脚和 地面?
      2. 把东西放在 void loop() 中。原因-您不能保留移位寄存器 处于浮动状态的 TLC 内部。

      由于你在 setup() 中做事,它只会在 uC pin 上写入一次。 如果您看到 tlc.write() 的代码,则锁存器引脚翻转并且移位寄存器再次变为空。当代码到达 void loop() 时,它基本上什么都不做,并且你在 setup() 中定义的状态已经随着 tlc.write() 语句消失了。

      【讨论】:

      • 我至少不同意第 2 点:tlc.setPWM 从微控制器向 TLC5947 芯片发出 SPI 命令,导致 TLC 芯片产生 PWM 信号,那么您不需要 µC,除非您想更改 PWM 比率或通道。
      • 我们在 Adafruit 的 IRef 引脚和地之间添加了一个 1k 电阻,现在我们确实得到了一个信号。然而,我们得到的信号异常小。 Adafruit 连接到 5V 电源,但我们获得的最大信号 (PWM 100%) 只是其中的一小部分。然而,这确实让我想到了下一个问题。当我们想要达到高达 10V 的电压时,我们尝试将 Adafruit 连接到 10V 电源。然而,Adafruit 上的 ON-LED 没有显示任何生命迹象。根据数据表,这应该不是问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 2019-07-27
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      相关资源
      最近更新 更多