Inhaltsverzeichnis:

Arduino und der PWM-LED-Treiber-IC TLC5940 - Gunook
Arduino und der PWM-LED-Treiber-IC TLC5940 - Gunook

Video: Arduino und der PWM-LED-Treiber-IC TLC5940 - Gunook

Video: Arduino und der PWM-LED-Treiber-IC TLC5940 - Gunook
Video: 1Amp LED Shield For Arduino Nano, Constant Current driver with Dimmer Option 2024, Juli
Anonim
Arduino und der PWM-LED-Treiber-IC TLC5940
Arduino und der PWM-LED-Treiber-IC TLC5940

In diesem Artikel werden wir den 16-Kanal-LED-Treiber-IC TLC5940 von Texas Instruments untersuchen. Damit wollen wir eine andere, einfachere Möglichkeit zeigen, viele LEDs – und auch Servos – anzusteuern. Hier sind zunächst einige Beispiele für den TLC5940. Sie können TLC5940 bei PMD Way versandkostenfrei weltweit bestellen.

Der TLC5940 ist in der DIP-Version und auch für die Oberflächenmontage erhältlich. Es ist wirklich ein praktisches Teil, mit dem Sie die Helligkeit von sechzehn einzelnen LEDs per PWM (Pulsweitenmodulation) anpassen können – und Sie können auch mehr als einen TLC5940 in Reihe schalten, um noch mehr zu steuern.

In diesem Tutorial erklären wir, wie Sie einen oder mehrere TLC5940-ICs mit LEDs steuern und schauen uns auch die Steuerung von Servos an. Laden Sie an dieser Stelle bitte eine Kopie des TLC5940 (.pdf) herunter, da Sie während dieses Vorgangs darauf verweisen. Laden Sie außerdem die Arduino-Bibliothek TLC5940 von Alex Leone herunter und installieren Sie sie, die Sie hier finden. Wenn Sie sich nicht sicher sind, wie Sie eine Bibliothek installieren, klicken Sie hier.

Schritt 1: Erstellen Sie eine TLC5940-Demonstrationsschaltung

Bauen Sie eine TLC5940-Demonstrationsschaltung
Bauen Sie eine TLC5940-Demonstrationsschaltung

Die folgende Schaltung ist das Minimum, das erforderlich ist, um sechzehn LEDs von Ihrem Arduino oder kompatiblen zu steuern. Sie können damit mit verschiedenen Funktionen experimentieren und sich ein Bild davon machen, was möglich ist. Du wirst brauchen:

  • Ein Arduino Uno oder ein kompatibles Board
  • 16 normale Alltags-LEDs, die einen Durchlassstrom von bis zu 20 mA haben können
  • ein 2 kΩ Widerstand (geben oder nehmen Sie 10%)
  • eine 0,1uF Keramik und ein 4,7uF Elektrolytkondensator

Beachten Sie die LED-Ausrichtung – und denken Sie daran, dass der TLC5940 ein LED-Treiber mit gemeinsamer Anode ist – alle LED-Anoden sind also miteinander verbunden und dann an 5V.

Schritt 2:

Für diese spezielle Schaltung benötigen Sie keine externe 5-V-Stromversorgung – möglicherweise benötigen Sie jedoch in Zukunft eine. Der Widerstand dient dazu, die Strommenge zu steuern, die durch die LEDs fließen kann. Der erforderliche Widerstandswert wird mit folgender Formel berechnet:

R = 39,06 / Imax wobei R (in Ohm) der Widerstandswert und Imax (in Ampere) die maximale Strommenge ist, die durch die LEDs fließen soll.

Wenn Sie beispielsweise LEDs mit einem Durchlassstrom von 20 mA haben, lautet die Widerstandsberechnung: R = 39,06 / 0,02 = 1803 Ohm. Sobald Sie die Schaltung zusammengebaut haben, öffnen Sie die Arduino-IDE und laden Sie die Skizze BasicUse.pde hoch, die sich im Beispielordner für die TLC5940-Bibliothek befindet.

Ihnen sollte eine Ausgabe ähnlich der im Video gezeigten präsentiert werden.

Schritt 3: Steuern des TLC5940

Nun, da die Schaltung funktioniert, wie steuern wir den TLC5940? Zuerst die obligatorischen Funktionen – binden Sie die Bibliothek am Anfang der Skizze ein mit:

#include "Tlc5940.h"

und initialisieren Sie dann die Bibliothek, indem Sie Folgendes in void setup() platzieren:

Tlc.init(x);

x ist ein optionaler Parameter – wenn Sie gleich beim Start des Sketches alle Kanäle auf eine bestimmte Helligkeit setzen möchten, können Sie in der Funktion Tlc.init() einen Wert zwischen 0 und 4095 für x einfügen.

Schalten Sie nun einen Kanal/eine LED ein oder aus. Jeder Kanal ist von 0 bis 15 nummeriert und die Helligkeit jedes Kanals kann zwischen 0 und 4095 eingestellt werden. Dies ist ein zweiteiliger Vorgang… Erstens – verwenden Sie eine oder mehrere der folgenden Funktionen, um die erforderlichen Kanäle und die jeweilige Helligkeit (PWM Niveau):

Tlc.set (Kanal, Helligkeit);

Wenn Sie beispielsweise die ersten drei Kanäle mit voller Helligkeit einschalten möchten, verwenden Sie:

Tlc.set (0, 4095); Tlc.set (1, 4095); Tlc.set(2, 4095);

Der zweite Teil besteht darin, den TLC5940 wie folgt mit den erforderlichen Anweisungen aus Teil 1 zu aktualisieren:

Tlc.update();

Wenn Sie alle Kanäle auf einmal ausschalten möchten, verwenden Sie einfach:

Tlc.clear();

Schritt 4:

Sie müssen nach der clear-Funktion kein TLC.update() aufrufen. Im Folgenden finden Sie eine kurze Beispielskizze, die die Helligkeits-/PWM-Werte aller Kanäle auf verschiedene Stufen festlegt:

#include "Tlc5940.h"void setup() { Tlc.init(0); // TLC5940 initialisieren und alle Kanäle ausschalten }

Leere Schleife ()

{ für (int i = 0; i < 16; i++) { Tlc.set(i, 1023); } Tlc.update(); Verzögerung (1000); für (int i = 0; i < 16; i++) { Tlc.set(i, 2046); } Tlc.update(); Verzögerung (1000); für (int i = 0; i < 16; i++) { Tlc.set(i, 3069); } Tlc.update(); Verzögerung (1000); für (int i = 0; i < 16; i++) { Tlc.set(i, 4095); } Tlc.update(); Verzögerung (1000); }

Auch bei der Ansteuerung von RGB-LEDs kann die individuelle Helligkeitssteuerung für jeden Kanal/LED hilfreich sein – dann können Sie die gewünschten Farben einfach über verschiedene Helligkeitsstufen für jedes Element auswählen. Eine Demonstration wird im Video gezeigt.

Schritt 5: Verwenden von zwei oder mehr TLC5940s

Sie können mehrere TLC5940s miteinander verketten, um mehr LEDs zu steuern. Zuerst – verdrahten Sie den nächsten TLC5940 wie in der Demonstrationsschaltung gezeigt mit dem Arduino – außer dass Sie den SOUT-Pin (17) des ersten TLC5940 mit dem SIN-Pin (26) des zweiten TLC5940 verbinden – während die Daten vom Arduino durch der erste TLC5940 zum zweiten und so weiter. Wiederholen Sie dann den Vorgang, wenn Sie einen dritten haben usw. Vergessen Sie nicht den Widerstand, der den Strom einstellt!

Öffnen Sie als Nächstes die Datei tlc_config.h, die sich im Bibliotheksordner TLC5940 befindet. Ändern Sie den Wert von NUM_TLCS in die Anzahl der TLC5940, die Sie miteinander verbunden haben, speichern Sie dann die Datei und löschen Sie auch die Datei Tlc5940.o, die sich ebenfalls im selben Ordner befindet. Starten Sie abschließend die IDE neu. Sie können dann sequentiell vom ersten auf die Kanäle des zweiten und des weiteren TLC5940 verweisen. Das heißt, der erste ist 0~15, der zweite 16~29 und so weiter.

Schritt 6: Steuern von Servos mit dem TLC5940

Da der TLC5940 einen PWM-Ausgang (Pulsweitenmodulation) erzeugt, eignet er sich auch hervorragend zum Antrieb von Servos. Genau wie LEDs – Sie können bis zu sechzehn gleichzeitig steuern. Ideal, um spinnenartige Roboter, seltsame Uhren oder Geräusche zu erzeugen.

Achten Sie bei der Auswahl Ihres Servos darauf, dass es im Betrieb nicht mehr als 120 mA verbraucht (der maximale Strom pro Kanal) und beachten Sie auch den Abschnitt „Strom und Wärme verwalten“am Ende dieses Tutorials. Und verwenden Sie externe Stromversorgung mit Servos, verlassen Sie sich nicht auf die 5V-Leitung des Arduino.

Das Anschließen eines Servos ist einfach – die GND-Leitung wird an GND angeschlossen, die 5V (oder Versorgungsspannungsleitung) wird an Ihre 5V (oder eine andere geeignete Versorgung) angeschlossen und der Servosteuerstift wird an einen der Ausgänge des TLC5940 angeschlossen. Schließlich – und das ist wichtig – schließen Sie einen 2,2 kΩ Widerstand zwischen den verwendeten Ausgangspins des TLC5940 und 5 V an. Die Steuerung eines Servos unterscheidet sich nicht wesentlich von einer LED. Sie benötigen die ersten beiden Zeilen am Anfang der Skizze:

#include "Tlc5940.h"#include "tlc_servos.h"

dann folgendes in void setup():

tlc_initServos();

Verwenden Sie als Nächstes die folgende Funktion, um auszuwählen, welches Servo (Kanal) betrieben werden soll und den erforderlichen Winkel (Winkel):

tlc_setServo (Kanal, Winkel);

Genau wie bei den LEDs können Sie einige davon zusammenfassen und dann den Befehl ausführen mit:

Tlc.update();

Sehen wir uns das alles in Aktion an. Die folgende Beispielskizze überstreicht vier Servos über 90 Grad:

#include "Tlc5940.h"#include "tlc_servos.h"

Void-Setup ()

{ tlc_initServos(); // Hinweis: Dadurch wird die PWM-Frequenz auf 50 Hz gesenkt. }

Leere Schleife ()

{ for (int angle = 0; angle = 0; angle--) { tlc_setServo (0, angle); tlc_setServo(1, Winkel); tlc_setServo(2, Winkel); tlc_setServo(3, Winkel); Tlc.update(); Verzögerung(5); } }

Das Video zeigt diese Skizze in Aktion mit vier Servos.

Wenn sich Ihre Servos nicht im richtigen Winkel drehen – zum Beispiel fragen Sie nach 180 Grad und sie drehen sich nur um 90 oder ungefähr, ist ein wenig Mehrarbeit erforderlich.

Sie müssen die Datei tlc_servos.h im Arduino-Bibliotheksordner TLC5940 öffnen und mit den Werten für SERVO_MIN_WIDTH und SERVO_MAX_WIDTH experimentieren. Ändern Sie beispielsweise SERVO_MIN_WIDTH von 200 auf 203 und SERVO_MAX_WIDTH von 400 auf 560.

Schritt 7: Verwaltung von Strom und Wärme

Wie bereits erwähnt, kann der TLC5940 maximal 120 mA pro Kanal verarbeiten. Nach einigem Experimentieren werden Sie vielleicht feststellen, dass der TLC5940 warm wird – und das ist in Ordnung.

Beachten Sie, dass die Energiemenge, die vor der Zerstörung des Teils abgeführt werden kann, maximal begrenzt ist. Wenn Sie nur normale Garten-LEDs oder kleinere Servos verwenden, ist die Stromversorgung kein Problem. Wenn Sie jedoch den TLC5940 maximal nutzen möchten, lesen Sie bitte die Hinweise der Bibliotheksautoren.

Abschluss

Wieder einmal sind Sie auf dem Weg, mit Ihrem Arduino ein unglaublich nützliches Teil zu steuern. Jetzt können Sie mit etwas Fantasie alle möglichen visuellen Anzeigen erstellen oder mit vielen Servos Spaß haben.

Dieser Beitrag wird Ihnen von pmdway.com zur Verfügung gestellt – das TLC5940-Produkte zusammen mit allem für Hersteller und Elektronik-Enthusiasten mit kostenlosem Versand weltweit anbietet.

Empfohlen: