Arduino PWM出力を拡張する方法–TLC5940チュートリアル
このArduinoチュートリアルでは、Arduinoボードを使用してTLC5940PWMドライバーを使用する方法を学習します。 TLC5940は、PWM出力を提供する16チャネルLEDドライバーであり、ArduinoPWM機能を拡張するのに最適です。 LEDだけでなく、このICを使用すると、PWM信号を使用してサーボ、DCモーター、その他の電子部品を制御することもできます。
デイジーチェーン接続は優れた機能です。つまり、複数のTLC5970ICを直列に接続できます。これにより、ArduinoのPWM機能を16を超える出力(たとえば、32、48、または64のPWM出力)に拡張し、1つのTLC5940ICを制御する場合と同じ4つのピンをArduinoボードで使用できます。
このチュートリアルのコンポーネントは、以下のいずれかのサイトから入手できます。
TLC5940を制御するには、Arduinoボードの4つのピンを占有する必要があります。 AlexLeone製のTLC5940Arduinoライブラリを使用するため、ライブラリ構成に従って、または次の回路図を使用して、ICをArduinoに接続する必要があります。
上記の回路図は、LEDに電力を供給するために外部電源を使用していますが、引き出される電流の合計量がArduinoの制限(絶対最大定格、DC電流VCC)を超えない場合は、ArduinoVCC自体を使用して接続することもできます。およびGNDピン– 200mA)。
また、TLC5940は定電流シンクであるため、電流は出力ピンに向かって流れることに注意する必要があります。つまり、LEDを接続するときは、負のリード線(カソード)をICの出力ピンに接続し、正のリード線(アノード)を5VVCCに接続する必要があります。
また、デカップリング用に2つのコンデンサと、出力を流れる電流の量を制御するための抵抗が必要です。抵抗の値は、制御するコンポーネントによって異なり、TLC5940のデータシートから次の図を使用して選択できます。
したがって、図によると、20mAの電流を必要とするLEDを制御するには、2Kの抵抗が必要です。
AlexLeone製のTLC5940Arduinoライブラリをダウンロードしてインストールすると、彼の「BasicUse」デモの例を使用して、ICの出力を制御する方法を理解できます。
これは、このライブラリを使用して16個のLEDを制御するためにこのチュートリアル用に作成した簡単なコードです。関数がどのように機能するかを理解するために、コード内のコメントを読んでください。
これらのICの1つ以上を直列に接続するために、上記と同じ回路図を使用できます。唯一の違いは、最初のICのSOUT(信号出力–ピン17)を2番目のICのSIN(信号入力–ピン26)に接続する必要があることです。
プログラミングの部分に関しては、いくつかの変更を加える必要があります。 TLC5940ライブラリフォルダで、tlc_config.hファイルを変更し、変数NUM_TLCSの値を直列に接続されたTLC5940 ICの数に変更する必要があります。この場合、値は2です。これで、すべてに簡単に対処できます。 LEDは0から31で、前述と同じプログラミング方法を使用します。
例として、次のリンクで、私のDIY LEDハートフォトフレーム–Arduinoプロジェクトをチェックできます。ここでは32個のLEDを制御するために2つのTLC5940ICを使用しています。
– 0 mA〜120 mA(VCC> 3.6V)
– 0 mA〜60 mA(VCC <3.6V)
ArduinoとTLC5940の配線
/*
* 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を制御する
製造プロセス