Innehållsförteckning:

Arduino och TLC5940 PWM LED Driver IC: 7 steg
Arduino och TLC5940 PWM LED Driver IC: 7 steg

Video: Arduino och TLC5940 PWM LED Driver IC: 7 steg

Video: Arduino och TLC5940 PWM LED Driver IC: 7 steg
Video: Controlling RGB LEDS with Arduino and TLC5940 2024, Juli
Anonim
Arduino och TLC5940 PWM LED Driver IC
Arduino och TLC5940 PWM LED Driver IC

I denna artikel kommer vi att undersöka Texas Instruments TLC5940 16-kanals LED-drivrutins IC. Vår anledning till detta är att visa ett annat, enklare sätt att köra många lysdioder - och även servon. Först och främst, här är några exempel på TLC5940. Du kan beställa TLC5940 från PMD Way med gratis leverans över hela världen.

TLC5940 finns i DIP-versionen och även på ytmontering. Det är verkligen en bekväm del, så att du kan justera ljusstyrkan på sexton individuella lysdioder via PWM (pulsbreddsmodulering)-och du kan också kedja mer än en TLC5940 för att styra ännu mer.

Under denna handledning kommer vi att förklara hur man styr en eller flera TLC5940 IC: er med lysdioder och även titta på styrande servon. Vid det här laget, ladda ner en kopia av TLC5940 (.pdf) som du kommer att hänvisa till den genom denna process. Dessutom kan du ladda ner och installera TLC5940 Arduino -biblioteket av Alex Leone som finns här. Om du inte är säker på hur du installerar ett bibliotek, klicka här.

Steg 1: Bygg en demonstrationskrets för TLC5940

Bygg en TLC5940 demonstrationskrets
Bygg en TLC5940 demonstrationskrets

Följande krets är det minimum som krävs för att styra sexton lysdioder från din Arduino eller kompatibla. Du kan använda den för att experimentera med olika funktioner och få en uppfattning om vad som är möjligt. Du kommer behöva:

  • Ett Arduino Uno eller kompatibelt kort
  • 16 normala, vardagliga lysdioder som kan ha en framström på upp till 20 mA
  • ett 2 kΩ motstånd (ge eller ta 10%)
  • en 0,1uF keramik och en 4,7uF elektrolytkondensator

Notera LED-orienteringen-och kom ihåg att TLC5940 är en vanlig anod LED-drivrutin-så alla LED-anoder är anslutna tillsammans och sedan till 5V.

Steg 2:

För den här kretsen behöver du inte en extern 5V strömförsörjning - men du kan behöva en i framtiden. Syftet med motståndet är att styra mängden ström som kan flöda genom lysdioderna. Det erforderliga motståndsvärdet beräknas med följande formel:

R = 39,06 / Imax där R (i ohm) är motståndsvärdet och Imax (i ampere) är den maximala ström som du vill flöda genom lysdioderna.

Till exempel, om du har lysdioder med en 20 mA framström - skulle motståndsberäkningen vara: R = 39,06 / 0,02 = 1803 ohm. När du har kretsen monterad - öppna Arduino IDE och ladda upp skissen BasicUse.pde som finns i exempelmappen för TLC5940 -biblioteket.

Du bör presenteras med utdata som liknar det som visas i videon.

Steg 3: Kontroll av TLC5940

Nu när kretsen fungerar, hur styr vi TLC5940? Först de obligatoriska funktionerna - inkludera biblioteket i början av skissen med:

#inkludera "Tlc5940.h"

och initiera sedan biblioteket genom att placera följande i void setup ():

Tlc.init (x);

x är en valfri parameter - om du vill ställa in alla kanaler till en viss ljusstyrka så snart skissen börjar kan du infoga ett värde mellan 0 och 4095 för x i funktionen Tlc.init ().

Nu för att slå på eller av en kanal/LED. Varje kanal är numrerad från 0 till 15, och varje kanals ljusstyrka kan justeras mellan 0 och 4095. Detta är en tvådelad process … Använd först en eller flera av följande funktioner för att ställa in erforderliga kanaler och respektive ljusstyrka (PWM nivå):

Tlc.set (kanal, ljusstyrka);

Om du till exempel vill ha de tre första kanalerna på med full ljusstyrka, använd:

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

Den andra delen är att använda följande för att uppdatera TLC5940 med de nödvändiga instruktionerna från del ett:

Tlc.update ();

Om du vill stänga av alla kanaler på en gång använder du bara:

Tlc.clear ();

Steg 4:

Du behöver inte ringa en TLC.update () efter rensningsfunktionen. Följande är en snabb exempelskiss som ställer in ljusstyrkan/PWM -värdena för alla kanaler till olika nivåer:

#include "Tlc5940.h" void setup () {Tlc.init (0); // initiera TLC5940 och inaktivera alla kanaler}

void loop ()

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

Möjligheten att styra individuell ljusstyrka för varje kanal/LED kan också vara användbar vid kontroll av RGB -lysdioder - du kan sedan enkelt välja önskade färger via olika ljusstyrkanivåer för varje element. En demonstration visas i videon.

Steg 5: Använd två eller fler TLC5940s

Du kan koppla ihop en hel del TLC5940 tillsammans för att styra fler lysdioder. Först - koppla upp nästa TLC5940 till Arduino som visas i demonstrationskretsen - förutom att ansluta SOUT -stiftet (17) på den första TLC5940 till SIN -stiftet (26) på den andra TLC5940 - när data går från Arduino, genom den första TLC5940 till den andra och så vidare. Upprepa sedan processen om du har en tredje osv. Glöm inte resisotr som ställer in strömmen!

Öppna sedan filen tlc_config.h som finns i biblioteksmappen TLC5940. Ändra värdet på NUM_TLCS till antalet TLC5940s du har anslutit tillsammans, spara sedan filen och ta bort filen Tlc5940.o som också finns i samma mapp. Slutligen starta om IDE. Du kan sedan hänvisa till kanalerna för den andra och ytterligare TLC5940 sekventiellt från den första. Det vill säga den första är 0 ~ 15, den andra är 16 ~ 29, och så vidare.

Steg 6: Kontrollera servon med TLC5940

Eftersom TLC5940 genererar PWM-utmatning (pulsbreddsmodulering), är den också bra för att köra servon. Precis som lysdioder - du kan styra upp till sexton samtidigt. Perfekt för att skapa spindelliknande robotar, konstiga klockor eller göra buller.

När du väljer din servo, se till att den inte drar mer än 120 mA vid drift (maximal ström per kanal) och beakta även avsnittet "Hantera ström och värme" i slutet av denna handledning. Och använd extern ström med servon, lita inte på Arduinos 5V -linje.

Att ansluta en servo är enkelt - GND -ledningen ansluts till GND, 5V (eller matningsspänningsledningen) ansluts till din 5v (eller annan lämplig matning) och servokontrollstiften ansluts till en av TLC5940: s utgångar. Slutligen - och detta är viktigt - anslut ett motstånd på 2,2 kΩ mellan TLC5940 -utgångsstiften som används och 5V. Att styra en servo är inte så annorlunda än en LED. Du behöver de två första raderna i början av skissen:

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

sedan följande i void setup ():

tlc_initServos ();

Använd sedan följande funktion för att välja vilken servo (kanal) du vill använda och önskad vinkel (vinkel):

tlc_setServo (kanal, vinkel);

Precis som lysdioderna kan du samla några av dessa tillsammans och sedan utföra kommandot med:

Tlc.update ();

Så låt oss se allt det där. Följande exempelskiss sveper fyra servon över 90 grader:

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

void setup ()

{tlc_initServos (); // Obs: detta kommer att sänka PWM -frekvensen till 50Hz. }

void loop ()

{för (int vinkel = 0; vinkel = 0; vinkel--) {tlc_setServo (0, vinkel); tlc_setServo (1, vinkel); tlc_setServo (2, vinkel); tlc_setServo (3, vinkel); Tlc.update (); fördröjning (5); }}

Videon visar denna skiss i aktion med fyra servon.

Om servon inte roterar till rätt vinkel - till exempel ber du om 180 grader och de bara roterar till 90 eller däromkring, lite extra arbete krävs.

Du måste öppna filen tlc_servos.h som finns i biblioteksmappen TLC5940 Arduino och experimentera med värdena för SERVO_MIN_WIDTH och SERVO_MAX_WIDTH. Till exempel ändra SERVO_MIN_WIDTH från 200 till 203 och SERVO_MAX_WIDTH från 400 till 560.

Steg 7: Hantera ström och värme

Som nämnts tidigare kan TLC5940 hantera maximalt 120 mA per kanal. Efter lite experimenterande kanske du märker att TLC5940 blir varm - och det är ok.

Observera att det finns en maxgräns för mängden effekt som kan släppas innan delen förstörs. Om du bara använder normala trädgårds-lysdioder eller mindre servon, kommer ström inte att vara ett problem. Men om du planerar att använda TLC5940 till max - läs anteckningarna från biblioteksförfattarna.

Slutsats

Återigen är du på väg att styra en otroligt användbar del med din Arduino. Nu med lite fantasi kan du skapa alla möjliga visuella skärmar eller ha kul med många servon.

Detta inlägg kommer till dig av pmdway.com - som erbjuder TLC5940 -produkter tillsammans med allt för tillverkare och elektronikentusiaster, med gratis leverans över hela världen.

Rekommenderad: