Indholdsfortegnelse:

Arduino og TLC5940 PWM LED Driver IC: 7 trin
Arduino og TLC5940 PWM LED Driver IC: 7 trin

Video: Arduino og TLC5940 PWM LED Driver IC: 7 trin

Video: Arduino og TLC5940 PWM LED Driver IC: 7 trin
Video: TLC5940, 16 канальный 12 битный PWM драйвер 2024, Juli
Anonim
Arduino og TLC5940 PWM LED Driver IC
Arduino og TLC5940 PWM LED Driver IC

I denne artikel vil vi undersøge Texas Instruments TLC5940 16-kanals LED driver IC. Vores grund til at gøre dette er at demonstrere en anden, lettere måde at køre mange lysdioder - og også servoer på. Først og fremmest er her et par eksempler på TLC5940. Du kan bestille TLC5940 fra PMD Way med gratis levering over hele verden.

TLC5940 fås i DIP-versionen og kan også monteres på overfladen. Det er virkelig en praktisk del, så du kan justere lysstyrken på seksten individuelle lysdioder via PWM (pulsbreddemodulation)-og du kan også daisy-chain mere end én TLC5940 for at styre endnu mere.

I løbet af denne vejledning forklarer vi, hvordan du styrer en eller flere TLC5940 IC'er med LED'er og ser også på styrende servoer. På dette tidspunkt skal du downloade en kopi af TLC5940 (.pdf), som du vil henvise til den gennem denne proces. Desuden kan du downloade og installere TLC5940 Arduino -biblioteket af Alex Leone, som kan findes her. Hvis du ikke er sikker på, hvordan du installerer et bibliotek, skal du klikke her.

Trin 1: Byg et TLC5940 -demonstrationskredsløb

Byg et TLC5940 demonstrationskredsløb
Byg et TLC5940 demonstrationskredsløb

Det følgende kredsløb er det minimum, der kræves for at styre seksten lysdioder fra din Arduino eller kompatible. Du kan bruge den til at eksperimentere med forskellige funktioner og få en idé om, hvad der er muligt. Du får brug for:

  • Et Arduino Uno eller kompatibelt bord
  • 16 normale, daglige lysdioder, der kan have en fremadgående strøm på op til 20 mA
  • en 2 kΩ modstand (giv eller tag 10%)
  • en 0,1uF keramik og en 4,7uF elektrolytisk kondensator

Bemærk LED-orienteringen-og husk, at TLC5940 er en LED-driver med almindelig anode-så alle LED-anoder er forbundet sammen og derefter til 5V.

Trin 2:

Til dette særlige kredsløb har du ikke brug for en ekstern 5V strømforsyning - men du kan få brug for en i fremtiden. Formålet med modstanden er at kontrollere mængden af strøm, der kan strømme gennem lysdioderne. Den nødvendige modstandsværdi beregnes med følgende formel:

R = 39,06 / Imax, hvor R (i ohm) er modstandsværdien, og Imax (i ampere) er den maksimale mængde strøm, du vil strømme gennem lysdioderne.

For eksempel, hvis du har lysdioder med en 20 mA fremadgående strøm - vil modstandsberegningen være: R = 39,06 / 0,02 = 1803 ohm. Når du har samlet kredsløbet - skal du åbne Arduino IDE og uploade skitsen BasicUse.pde, som er i eksempelmappen til TLC5940 -biblioteket.

Du skal præsenteres for output svarende til det, der vises i videoen.

Trin 3: Styring af TLC5940

Nu hvor kredsløbet fungerer, hvordan styrer vi TLC5940? Først de obligatoriske funktioner - inkluderer biblioteket i starten af skitsen med:

#include "Tlc5940.h"

og initialiser derefter biblioteket ved at placere følgende i void setup ():

Tlc.init (x);

x er en valgfri parameter - hvis du vil indstille alle kanalerne til en bestemt lysstyrke, så snart skitsen starter, kan du indsætte en værdi mellem 0 og 4095 for x i funktionen Tlc.init ().

Nu for at tænde eller slukke en kanal/LED. Hver kanal er nummereret fra 0 til 15, og hver kanals lysstyrke kan justeres mellem 0 og 4095. Dette er en todelt proces … Brug først en eller flere af følgende funktioner til at konfigurere de nødvendige kanaler og respektive lysstyrke (PWM niveau):

Tlc.set (kanal, lysstyrke);

Hvis du f.eks. Ville have de første tre kanaler tændt med fuld lysstyrke, skal du bruge:

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

Den anden del er at bruge følgende til at opdatere TLC5940 med de nødvendige instruktioner fra del et:

Tlc.update ();

Hvis du vil slukke alle kanaler på én gang, skal du blot bruge:

Tlc.clear ();

Trin 4:

Du behøver ikke ringe til en TLC.update () efter rydningsfunktionen. Følgende er en hurtig eksempelskitse, der sætter lysstyrke/PWM -værdierne for alle kanalerne til forskellige niveauer:

#include "Tlc5940.h" void setup () {Tlc.init (0); // initialiser TLC5940 og deaktiver alle kanaler}

hulrum ()

{for (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); forsinkelse (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); forsinkelse (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); forsinkelse (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); forsinkelse (1000); }

Muligheden for at styre individuel lysstyrke for hver kanal/LED kan også være nyttig, når du styrer RGB -lysdioder - du kan derefter nemt vælge de nødvendige farver via forskellige lysstyrkeniveauer for hvert element. En demonstration vises i videoen.

Trin 5: Brug af to eller flere TLC5940'er

Du kan daisy-chain en del TLC5940'er sammen for at styre flere LED'er. Først - forbind den næste TLC5940 til Arduino som vist i demonstrationskredsløbet - undtagen tilslut SOUT -stiften (17) på den første TLC5940 til SIN -stiften (26) på den anden TLC5940 - mens dataene bevæger sig fra Arduino, igennem den første TLC5940 til den anden og så videre. Gentag derefter processen, hvis du har en tredje osv. Glem ikke den resisotr, der sætter strømmen!

Åbn derefter filen tlc_config.h, der er placeret i biblioteksmappen TLC5940. Skift værdien af NUM_TLCS til antallet af TLC5940'er, du har forbundet sammen, gem derefter filen og slet også filen Tlc5940.o, der også findes i den samme mappe. Endelig genstart IDE. Du kan derefter henvise til kanalerne i den anden og yderligere TLC5940 sekventielt fra den første. Det vil sige, den første er 0 ~ 15, den anden er 16 ~ 29 og så videre.

Trin 6: Styring af servoer med TLC5940

Da TLC5940 genererer PWM (pulsbreddemodulation) output, er den også fantastisk til at køre servoer. Ligesom lysdioder - du kan styre op til seksten på én gang. Ideel til at skabe edderkoppelignende robotter, mærkelige ure eller støj.

Når du vælger din servo, skal du sørge for, at den ikke trækker mere end 120 mA under drift (den maksimale strøm pr. Kanal), og følg også afsnittet "Håndtering af strøm og varme" i slutningen af denne vejledning. Og brug ekstern strøm med servoer, ikke stol på Arduinos 5V -linje.

Det er enkelt at tilslutte en servo - GND -ledningen tilsluttes GND, 5V (eller forsyningsspændingsledningen) tilsluttes din 5v (eller anden passende forsyning), og servostyringsstiften tilsluttes en af TLC5940's udgange. Endelig - og det er vigtigt - tilslut en 2,2 kΩ modstand mellem TLC5940 udgangsstifterne og 5V. Styring af en servo er ikke så forskellig fra en LED. Du skal bruge de to første linjer i starten af skitsen:

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

derefter følgende i void setup ():

tlc_initServos ();

Brug derefter følgende funktion til at vælge, hvilken servo (kanal) der skal betjenes, og den nødvendige vinkel (vinkel):

tlc_setServo (kanal, vinkel);

Ligesom LED'erne kan du samle et par af disse sammen og derefter udføre kommandoen med:

Tlc.update ();

Så lad os se alt det i aktion. Følgende eksempelskitse fejer fire servoer på tværs af 90 grader:

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

ugyldig opsætning ()

{tlc_initServos (); // Bemærk: dette vil sænke PWM -frekvensen til 50Hz. }

hulrum ()

{for (int vinkel = 0; vinkel = 0; vinkel--) {tlc_setServo (0, vinkel); tlc_setServo (1, vinkel); tlc_setServo (2, vinkel); tlc_setServo (3, vinkel); Tlc.update (); forsinkelse (5); }}

Videoen viser denne skitse i aktion med fire servoer.

Hvis servoerne ikke roterer til den korrekte vinkel - f.eks. Beder du om 180 grader, og de kun roterer til 90 eller deromkring, kræves lidt ekstra arbejde.

Du skal åbne filen tlc_servos.h, der er placeret i biblioteksmappen TLC5940 og eksperimentere med værdierne for SERVO_MIN_WIDTH og SERVO_MAX_WIDTH. Skift f.eks. SERVO_MIN_WIDTH fra 200 til 203 og SERVO_MAX_WIDTH fra 400 til 560.

Trin 7: Håndtering af strøm og varme

Som tidligere nævnt kan TLC5940 maksimalt klare 120 mA pr. Kanal. Efter nogle eksperimenter kan du bemærke, at TLC5940 bliver varm - og det er ok.

Bemærk, at der er en maksimal grænse for mængden af strøm, der kan spredes, før du ødelægger delen. Hvis du bare bruger normale lysdioder i haven eller mindre servoer, er strøm ikke et problem. Men hvis du planlægger at bruge TLC5940 maksimalt - skal du gennemgå noterne fra bibliotekets forfattere.

Konklusion

Igen er du på vej til at kontrollere en utrolig nyttig del med din Arduino. Nu med en vis fantasi kan du oprette alle slags visuelle displays eller have det sjovt med mange servoer.

Dette indlæg bringes til dig af pmdway.com - som tilbyder TLC5940 -produkter sammen med alt til producenter og elektronikentusiaster, med gratis levering over hele verden.

Anbefalede: