Innholdsfortegnelse:
- Trinn 1: Bygg en TLC5940 demonstrasjonskrets
- Steg 2:
- Trinn 3: Kontrollere TLC5940
- Trinn 4:
- Trinn 5: Bruke to eller flere TLC5940 -er
- Trinn 6: Kontrollere servoer med TLC5940
- Trinn 7: Administrere strøm og varme
Video: Arduino og TLC5940 PWM LED Driver IC: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
I denne artikkelen skal vi undersøke Texas Instruments TLC5940 16-kanals LED-driver IC. Vår grunn til å gjøre dette er å demonstrere en annen, enklere måte å kjøre mange lysdioder - og også servoer på. Først opp, her er noen eksempler på TLC5940. Du kan bestille TLC5940 fra PMD Way med gratis levering over hele verden.
TLC5940 er tilgjengelig i DIP-versjonen, og kan også monteres på overflaten. Det er virkelig en praktisk del, slik at du kan justere lysstyrken til seksten individuelle lysdioder via PWM (pulsbreddemodulering)-og du kan også kjede mer enn én TLC5940 for å kontrollere enda mer.
I løpet av denne opplæringen vil vi forklare hvordan du kan kontrollere en eller flere TLC5940 ICer med lysdioder, og også se på kontrollerende servoer. På dette tidspunktet kan du laste ned en kopi av TLC5940 (.pdf) som du vil referere til den gjennom denne prosessen. Videre kan du laste ned og installere TLC5940 Arduino -biblioteket av Alex Leone som du finner her. Hvis du ikke er sikker på hvordan du installerer et bibliotek, klikker du her.
Trinn 1: Bygg en TLC5940 demonstrasjonskrets
Følgende krets er minimumskravet for å kontrollere seksten lysdioder fra din Arduino eller kompatible. Du kan bruke den til å eksperimentere med forskjellige funksjoner og få en ide om hva som er mulig. Du vil trenge:
- Et Arduino Uno eller kompatibelt brett
- 16 vanlige LED -lys hver dag som kan ha en fremoverstrøm på opptil 20 mA
- en 2 kΩ motstand (gi eller ta 10%)
- en 0,1 uF keramikk og en 4,7 uF elektrolytisk kondensator
Legg merke til LED-retningen-og husk at TLC5940 er en LED-driver for vanlige anoder-så alle LED-anodene er koblet sammen og deretter til 5V.
Steg 2:
For denne kretsen trenger du ikke en ekstern 5V strømforsyning - men du kan trenge en i fremtiden. Formålet med motstanden er å kontrollere mengden strøm som kan strømme gjennom lysdiodene. Den nødvendige motstandsverdien beregnes med følgende formel:
R = 39,06 / Imax hvor R (i ohm) er motstandsverdien og Imax (i ampere) er den maksimale strømmen du vil strømme gjennom lysdiodene.
For eksempel, hvis du har lysdioder med 20 mA fremoverstrøm - vil motstandsberegningen være: R = 39,06 / 0,02 = 1803 ohm. Når du har kretsen montert - åpner du Arduino IDE og laster opp skissen BasicUse.pde som er i eksempelmappen for TLC5940 -biblioteket.
Du bør bli presentert med utgang som ligner det som vises i videoen.
Trinn 3: Kontrollere TLC5940
Nå som kretsen fungerer, hvordan kontrollerer vi TLC5940? Først de obligatoriske funksjonene - inkluder biblioteket i begynnelsen av skissen med:
#include "Tlc5940.h"
og initialiser deretter biblioteket ved å plassere følgende i ugyldig oppsett ():
Tlc.init (x);
x er en valgfri parameter - hvis du vil sette alle kanalene til en viss lysstyrke så snart skissen starter, kan du sette inn en verdi mellom 0 og 4095 for x i funksjonen Tlc.init ().
Nå for å slå en kanal/LED på eller av. Hver kanal er nummerert fra 0 til 15, og hver kanals lysstyrke kan justeres mellom 0 og 4095. Dette er en todelt prosess … Først-bruk en eller flere av følgende funksjoner for å sette opp nødvendige kanaler og respektive lysstyrke (PWM nivå):
Tlc.set (kanal, lysstyrke);
Hvis du for eksempel vil ha de tre første kanalene på med full lysstyrke, bruker du:
Tlc.set (0, 4095); Tlc.set (1, 4095); Tlc.set (2, 4095);
Den andre delen er å bruke følgende for å oppdatere TLC5940 med nødvendige instruksjoner fra del en:
Tlc.update ();
Hvis du vil slå av alle kanaler samtidig, bruker du bare:
Tlc.clear ();
Trinn 4:
Du trenger ikke å ringe en TLC.update () etter slettefunksjonen. Følgende er en rask eksempelskisse som setter lysstyrke/PWM -verdiene til alle kanalene til forskjellige nivåer:
#include "Tlc5940.h" void setup () {Tlc.init (0); // initialiser TLC5940 og slå av alle kanaler}
hulrom ()
{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); }
Muligheten til å kontrollere individuell lysstyrke for hver kanal/LED kan også være nyttig når du kontrollerer RGB -lysdioder - du kan deretter enkelt velge nødvendige farger via forskjellige lysstyrkenivåer for hvert element. En demonstrasjon vises i videoen.
Trinn 5: Bruke to eller flere TLC5940 -er
Du kan daisy-chain ganske mange TLC5940s sammen for å kontrollere flere lysdioder. Først - koble den neste TLC5940 til Arduino som vist i demonstrasjonskretsen - unntatt koble SOUT -pinnen (17) til den første TLC5940 til SIN -pinnen (26) på den andre TLC5940 - mens dataene går fra Arduino, gjennom den første TLC5940 til den andre og så videre. Gjenta deretter prosessen hvis du har en tredje, etc. Ikke glem resisotr som setter strømmen!
Deretter åpner du filen tlc_config.h som ligger i biblioteksmappen TLC5940. Endre verdien på NUM_TLCS til antallet TLC5940s du har koblet sammen, lagre deretter filen og slett også filen Tlc5940.o som ligger i samme mappe. Endelig start IDE på nytt. Du kan deretter referere til kanalene til den andre og videre TLC5940 sekvensielt fra den første. Det vil si at den første er 0 ~ 15, den andre er 16 ~ 29, og så videre.
Trinn 6: Kontrollere servoer med TLC5940
Siden TLC5940 genererer PWM-utgang (pulsbreddemodulering), er den også flott for å kjøre servoer. Akkurat som lysdioder - du kan kontrollere opptil seksten samtidig. Ideell for å lage edderkopplignende roboter, merkelige klokker eller lage støy.
Når du velger servoen din, må du sørge for at den ikke trekker mer enn 120 mA når du bruker den (maksimal strøm per kanal), og vær oppmerksom på delen "Administrere strøm og varme" på slutten av denne opplæringen. Og bruk ekstern strøm med servoer, ikke stol på Arduinos 5V -linje.
Det er enkelt å koble til en servo - GND -linjen kobles til GND, 5V (eller forsyningsspenningsledningen) kobles til din 5v (eller annen passende forsyning) og servokontrollpinnen kobles til en av TLC5940 -utgangene. Til slutt - og dette er viktig - koble en 2,2 kΩ motstand mellom TLC5940 -utgangspinnen (e) som brukes og 5V. Å kontrollere en servo er ikke så annerledes enn en LED. Du trenger de to første linjene i begynnelsen av skissen:
#include "Tlc5940.h" #include "tlc_servos.h"
deretter følgende i ugyldig oppsett ():
tlc_initServos ();
Deretter bruker du følgende funksjon for å velge hvilken servo (kanal) du vil bruke og den nødvendige vinkelen (vinkelen):
tlc_setServo (kanal, vinkel);
Akkurat som lysdiodene kan du sette sammen noen av disse sammen, og deretter utføre kommandoen med:
Tlc.update ();
Så la oss se alt det i aksjon. Følgende eksempelskisse feier fire servoer over 90 grader:
#include "Tlc5940.h" #include "tlc_servos.h"
ugyldig oppsett ()
{tlc_initServos (); // Merk: dette vil redusere PWM -frekvensen til 50Hz. }
hulrom ()
{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 skissen i aksjon med fire servoer.
Hvis servoene ikke roterer til riktig vinkel - for eksempel ber du om 180 grader og de bare roterer til 90 eller deromkring, er det nødvendig med litt ekstra arbeid.
Du må åpne filen tlc_servos.h som ligger i TLC5940 Arduino bibliotekmappe og eksperimentere med verdiene for SERVO_MIN_WIDTH og SERVO_MAX_WIDTH. For eksempel endre SERVO_MIN_WIDTH fra 200 til 203 og SERVO_MAX_WIDTH fra 400 til 560.
Trinn 7: Administrere strøm og varme
Som nevnt tidligere kan TLC5940 håndtere maksimalt 120 mA per kanal. Etter litt eksperimentering kan du legge merke til at TLC5940 blir varm - og det er ok.
Vær oppmerksom på at det er en maksimal grense for mengden strøm som kan forsvinne før du ødelegger delen. Hvis du bare bruker vanlige LED-lamper i hagen eller mindre servoer, vil ikke strøm være et problem. Men hvis du planlegger å bruke TLC5940 maksimalt - vennligst les notatene fra biblioteksforfatterne.
Konklusjon
Nok en gang er du på vei til å kontrollere en utrolig nyttig del med din Arduino. Nå med litt fantasi kan du lage alle slags visuelle skjermer eller ha det gøy med mange servoer.
Dette innlegget blir brakt til deg av pmdway.com - som tilbyr TLC5940 -produkter sammen med alt for produsenter og elektronikkentusiaster, med gratis levering over hele verden.
Anbefalt:
Boomstick - Animert LED -driver: 10 trinn
Boomstick - Animert LED -driver: Boomstick er et prosjekt for å lage en animert streng med programmerbare RGB -lysdioder, drevet av en liten Arduino, og reaktiv til musikk. Denne guiden fokuserer på en maskinvarekonfigurasjon som du kan montere for å kjøre Boomstick -programvaren. Denne h
DIY 4xN LED Driver: 6 trinn
DIY 4xN LED Driver: LED -skjermer er mye brukt i systemer som spenner fra digitale klokker, tellere, tidtakere, elektroniske målere, grunnleggende kalkulatorer og andre elektroniske enheter som kan vise numerisk informasjon. Figur 1 viser et eksempel på en 7-segment LED-dis
ATTiny84 Basert 3A Step-Down LED Driver: 7 trinn (med bilder)
ATTiny84-basert 3A nedtrekkbar LED-driver: Hvis du vil drive 10W LEDer, kan du bruke denne 3A LED-driveren. Med 3 Cree XPL lysdioder kan du oppnå 3000 lumen
PWM Med ESP32 - Dimmende LED med PWM på ESP 32 Med Arduino IDE: 6 trinn
PWM Med ESP32 | Dimmende LED med PWM på ESP 32 Med Arduino IDE: I denne instruksen vil vi se hvordan du genererer PWM -signaler med ESP32 ved hjelp av Arduino IDE & PWM brukes i utgangspunktet til å generere analog utgang fra hvilken som helst MCU, og den analoge utgangen kan være alt mellom 0V til 3,3V (i tilfelle esp32) & fra
Arduino LED -knappepute som driver behandling av animasjoner: 36 trinn (med bilder)
Arduino LED -knappepute som driver prosessering av animasjoner: Hva denne knappputen er laget av en PCB og andre komponenter produsert av Sparkfun. Den drives av en Arduino Mega. Hver knapp er fin og squishy og tilfredsstillende å trykke på, og den har en RGB LED inni! Jeg har brukt den til å kontrollere animasjoner jeg