INHOUDSOPGAWE:

Arduino en die TLC5940 PWM LED Driver IC: 7 stappe
Arduino en die TLC5940 PWM LED Driver IC: 7 stappe

Video: Arduino en die TLC5940 PWM LED Driver IC: 7 stappe

Video: Arduino en die TLC5940 PWM LED Driver IC: 7 stappe
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Julie
Anonim
Arduino en die TLC5940 PWM LED Driver IC
Arduino en die TLC5940 PWM LED Driver IC

In hierdie artikel gaan ons die Texas Instruments TLC5940 16-kanaal LED bestuurder IC ondersoek. Ons rede hiervoor is om 'n ander, makliker manier om baie LED's - en ook servo's - te bestuur, aan te toon. Hier is eerstens 'n paar voorbeelde van die TLC5940. U kan TLC5940 bestel by PMD Way met gratis aflewering wêreldwyd.

Die TLC5940 is beskikbaar in die DIP-weergawe, en ook op die oppervlak. Dit is regtig 'n gerieflike deel, waarmee u die helderheid van sestien individuele LED's kan aanpas via PWM (pulswydte modulasie)-en u kan ook meer as een TLC5940 daisy-ketting aanskakel om nog meer te beheer.

Tydens hierdie tutoriaal sal ons verduidelik hoe u een of meer TLC5940 IC's met LED's kan beheer, en ook kyk na die bedienende servo's. Laai op hierdie stadium 'n afskrif van die TLC5940 (.pdf) af, aangesien u deur hierdie proses daarna sal verwys. Laai ook af en installeer die TLC5940 Arduino -biblioteek deur Alex Leone, wat u hier kan vind. As u nie seker is hoe u 'n biblioteek moet installeer nie, klik dan hier.

Stap 1: Bou 'n TLC5940 demonstrasiekring

Bou 'n TLC5940 demonstrasiekring
Bou 'n TLC5940 demonstrasiekring

Die volgende kring is die minimum wat benodig word om sestien LED's van u Arduino of versoenbaar te beheer. U kan dit gebruik om met verskillende funksies te eksperimenteer en 'n idee te kry van wat moontlik is. Jy sal nodig hê:

  • 'N Arduino Uno of versoenbare bord
  • 16 normale alledaagse LED's met 'n voorwaartse stroom van tot 20 mA
  • 'n 2 kΩ weerstand (gee of neem 10%)
  • 'n 0.1uF keramiek en 'n 4.7uF elektrolitiese kondensator

Let op die LED-oriëntasie-en onthou dat die TLC5940 'n LED-bestuurder met 'n gewone anode is-sodat al die LED-anodes aan mekaar gekoppel is en dan na 5V.

Stap 2:

Vir hierdie spesifieke stroombaan benodig u nie 'n eksterne 5V -kragtoevoer nie - maar u benodig dit in die toekoms. Die doel van die weerstand is om die hoeveelheid stroom wat deur die LED's kan vloei, te beheer. Die vereiste weerstandswaarde word bereken met die volgende formule:

R = 39,06 / Imax waar R (in Ohm) die weerstandswaarde is en Imax (in Amps) die maksimum hoeveelheid stroom is wat u deur die LED's wil vloei.

As u byvoorbeeld LED's het met 'n 20 mA stroomsterkte - sou die weerstandsberekening wees: R = 39,06 / 0,02 = 1803 Ohm. Sodra u die kring bymekaargemaak het - maak die Arduino IDE oop en laai die skets BasicUse.pde op wat in die voorbeeldmap vir die TLC5940 -biblioteek is.

U moet 'n uitset kry wat soortgelyk is aan wat in die video vertoon word.

Stap 3: Beheer van die TLC5940

Noudat die stroombaan werk, hoe beheer ons die TLC5940? Eerstens die verpligte funksies - sluit die biblioteek aan die begin van die skets in met:

#sluit "Tlc5940.h" in

en initialiseer dan die biblioteek deur die volgende in die leemte -opstelling () te plaas:

Tlc.init (x);

x is 'n opsionele parameter - as u alle kanale op 'n sekere helderheid wil stel sodra die skets begin, kan u 'n waarde tussen 0 en 4095 vir x in die funksie Tlc.init () invoeg.

Nou om 'n kanaal/LED aan of af te skakel. Elke kanaal is van 0 tot 15 genommer, en die helderheid van elke kanaal kan aangepas word tussen 0 en 4095. Dit is 'n tweeledige proses … Gebruik eers een of meer van die volgende funksies om die vereiste kanale en die onderskeie helderheid (PWM) op te stel vlak):

Tlc.set (kanaal, helderheid);

As u byvoorbeeld die eerste drie kanale op volle helderheid wil aanskakel, gebruik:

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

Die tweede deel is om die volgende te gebruik om die TLC5940 op te dateer met die vereiste instruksies uit deel een:

Tlc.update ();

As u alle kanale tegelyk wil afskakel, gebruik dan:

Tlc.clear ();

Stap 4:

U hoef nie 'n TLC.update () na die duidelike funksie te bel nie. Die volgende is 'n vinnige voorbeeldskets wat die helderheid/PWM -waardes van al die kanale op verskillende vlakke stel:

#sluit 'Tlc5940.h' leemte -opstelling () {Tlc.init (0) in; // initialiseer TLC5940 en stel alle kanale uit}

leemte lus ()

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

Die vermoë om die individuele helderheid vir elke kanaal/LED te beheer, kan ook nuttig wees as u RGB -LED's beheer - u kan dan maklik die vereiste kleure kies deur verskillende helderheidsvlakke vir elke element. 'N Demonstrasie word in die video gewys.

Stap 5: Gebruik twee of meer TLC5940's

U kan 'n hele paar TLC5940's saam verbind om meer LED's te beheer. Sluit eers die volgende TLC5940 aan op die Arduino soos in die demonstrasiekring aangedui - behalwe dat die SOUT -pen (17) van die eerste TLC5940 met die SIN -pen (26) van die tweede TLC5940 verbind word - terwyl die data van die Arduino af beweeg die eerste TLC5940 na die tweede ensovoorts. Herhaal dan die proses as u 'n derde het, ens. Moenie vergeet van die resisotr wat die stroom stel nie!

Maak dan die lêer tlc_config.h oop in die TLC5940 biblioteekmap. Verander die waarde van NUM_TLCS na die aantal TLC5940s wat u aanmekaar gekoppel het, stoor die lêer en verwyder ook die lêer Tlc5940.o wat in dieselfde gids geleë is. Herlaai uiteindelik die IDE. U kan dan opeenvolgend van die eerste na die kanale van die tweede en verder TLC5940 verwys. Dit wil sê, die eerste is 0 ~ 15, die tweede is 16 ~ 29, ensovoorts.

Stap 6: Beheer van servo's met die TLC5940

Aangesien die TLC5940 PWM (pulswydte modulasie) uitset genereer, is dit ook ideaal om servo's te bestuur. Net soos LED's - u kan tot sestien gelyktydig beheer. Ideaal om spinnekop-robotte te skep, vreemde horlosies of om lawaai te maak.

As u u servo kies, moet u verseker dat dit nie meer as 120 mA trek tydens die werking nie (die maksimum stroom per kanaal) en moet u ook let op die gedeelte "Bestuur stroom en hitte" aan die einde van hierdie tutoriaal. En gebruik eksterne krag met servo's, moenie staatmaak op die Arduino se 5V -lyn nie.

Om 'n servo aan te sluit, is eenvoudig - die GND -lyn maak verbinding met GND, die 5V (of voedingsspanningskabel) sluit aan op u 5v (of ander geskikte toevoer) en die servobestuurpen sluit aan by een van die TLC5940 se uitsette. Laastens - en dit is belangrik - verbind 'n weerstand van 2,2 kΩ tussen die TLC5940 -uitsetpen (e) wat gebruik word en 5V. Die bestuur van 'n servo is nie so anders as 'n LED nie. U het die eerste twee reëls aan die begin van die skets nodig:

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

dan die volgende in leemte -opstelling ():

tlc_initServos ();

Gebruik vervolgens die volgende funksie om te kies watter servo (kanaal) u wil gebruik en die vereiste hoek (hoek):

tlc_setServo (kanaal, hoek);

Net soos die LED's, kan u 'n paar hiervan saamvoeg en die opdrag uitvoer met:

Tlc.update ();

Laat ons dit alles in aksie sien. Die volgende voorbeeldskets vee vier servo's oor 90 grade:

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

leemte opstelling ()

{tlc_initServos (); // Let wel: dit verlaag die PWM -frekwensie tot 50Hz. }

leemte lus ()

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

Die video toon hierdie skets in aksie met vier servo's.

As u servo's nie in die regte hoek draai nie - u vra byvoorbeeld 180 grade en draai slegs tot 90 of daar rondom, is 'n bietjie ekstra werk nodig.

U moet die tlc_servos.h -lêer in die TLC5940 Arduino -biblioteekmap oopmaak en eksperimenteer met die waardes vir SERVO_MIN_WIDTH en SERVO_MAX_WIDTH. Verander byvoorbeeld SERVO_MIN_WIDTH van 200 na 203 en SERVO_MAX_WIDTH van 400 na 560.

Stap 7: Bestuur stroom en hitte

Soos vroeër genoem, kan die TLC5940 'n maksimum van 120 mA per kanaal hanteer. Na 'n bietjie eksperimenteer kan u agterkom dat die TLC5940 wel warm word - en dit is oké.

Let daarop dat daar 'n maksimum beperking is op die hoeveelheid krag wat kan verdwyn voordat die onderdeel vernietig word. As u net normale LED's in die tuin of kleiner servo's gebruik, is krag nie 'n probleem nie. As u egter van plan is om die TLC5940 tot die maksimum te gebruik - kyk na die aantekeninge wat die biblioteekskrywers verskaf het.

Afsluiting

Weereens is u op pad om 'n ongelooflike nuttige deel met u Arduino te beheer. Met 'n bietjie verbeelding kan u allerhande visuele uitstallings skep of baie pret hê met baie servo's.

Hierdie pos word aan u gebring deur pmdway.com - wat TLC5940 -produkte bied, saam met alles vir vervaardigers en elektronika -entoesiaste, met gratis aflewering wêreldwyd.

Aanbeveel: