Taula de continguts:

Arduino i el controlador IC TLC5940 PWM LED: 7 passos
Arduino i el controlador IC TLC5940 PWM LED: 7 passos

Vídeo: Arduino i el controlador IC TLC5940 PWM LED: 7 passos

Vídeo: Arduino i el controlador IC TLC5940 PWM LED: 7 passos
Vídeo: ATmega328 controlling a TLC5940 2024, De novembre
Anonim
Arduino i el controlador IC TLC5940 PWM LED
Arduino i el controlador IC TLC5940 PWM LED

En aquest article examinarem l’IC del controlador LED de 16 canals de Texas Instruments TLC5940. La nostra raó per fer-ho és demostrar una altra manera més senzilla de conduir molts LED, i també servos. En primer lloc, aquí teniu alguns exemples del TLC5940. Podeu demanar TLC5940 a PMD Way amb lliurament gratuït a tot el món.

El TLC5940 està disponible en la versió DIP i també de muntatge superficial. Realment és una part convenient, que us permet ajustar la brillantor de setze LED individuals mitjançant PWM (modulació d’amplada de pols), i també podeu encadenar més d’un TLC5940 per controlar encara més.

Durant aquest tutorial, explicarem com controlar un o més IC TLC5940 amb LED i també analitzarem el control dels servos. En aquest moment, si us plau, descarregueu una còpia del TLC5940 (.pdf), ja que hi fareu referència a través d’aquest procés. A més, descarregueu i instal·leu la biblioteca Arduino TLC5940 d'Alex Leone que es pot trobar aquí. Si no esteu segur de com instal·lar una biblioteca, feu clic aquí.

Pas 1: creeu un circuit de demostració TLC5940

Construïu un circuit de demostració TLC5940
Construïu un circuit de demostració TLC5940

El següent circuit és el mínim necessari per controlar setze LEDs des del vostre Arduino o compatible. Podeu utilitzar-lo per experimentar amb diverses funcions i fer-vos una idea del que és possible. Necessitarà:

  • Un Arduino Uno o placa compatible
  • 16 LED normals i quotidians que poden tenir un corrent directe de fins a 20 mA
  • una resistència de 2 kΩ (donar o prendre un 10%)
  • una ceràmica de 0,1 uF i un condensador electrolític de 4,7 uF

Preneu nota de l'orientació del LED, i recordeu que el TLC5940 és un controlador LED d'ànode comú, de manera que tots els ànodes LED estan connectats junts i després a 5 V.

Pas 2:

Per a aquest circuit en concret, no necessiteu una font d’alimentació externa de 5 V, tot i que és possible que en necessiteu una en el futur. El propòsit de la resistència és controlar la quantitat de corrent que pot circular pels LED. El valor de resistència requerit es calcula amb la fórmula següent:

R = 39,06 / Imax on R (en ohms) és el valor de la resistència i Imax (en amperes) és la quantitat màxima de corrent que voleu que circuli pels LED.

Per exemple, si teniu LEDs amb un corrent directe de 20 mA, el càlcul de la resistència seria: R = 39,06 / 0,02 = 1803 Ohms. Un cop tingueu el circuit muntat, obriu l'IDE d'Arduino i pengeu l'esbós BasicUse.pde que es troba a la carpeta d'exemple de la biblioteca TLC5940.

Us hauríem de presentar una sortida similar a la que es mostra al vídeo.

Pas 3: controlar el TLC5940

Ara que el circuit funciona, com controlem el TLC5940? En primer lloc, les funcions obligatòries: inclouen la biblioteca al començament de l’esbós amb:

#include "Tlc5940.h"

i, a continuació, inicialitzeu la biblioteca col·locant el següent a void setup ():

Tlc.init (x);

x és un paràmetre opcional: si voleu establir tots els canals amb una certa brillantor tan aviat com s'iniciï l'esbós, podeu inserir un valor entre 0 i 4095 per a x a la funció Tlc.init ().

Ara per encendre o apagar un canal / LED. Cada canal està numerat de 0 a 15 i la brillantor de cada canal es pot ajustar entre 0 i 4095. Es tracta d'un procés de dues parts … Primer: utilitzeu una o més de les funcions següents per configurar els canals necessaris i la brillantor respectiva (PWM nivell):

Tlc.set (canal, brillantor);

Per exemple, si voleu tenir els tres primers canals activats a la màxima brillantor, utilitzeu:

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

La segona part és utilitzar el següent per actualitzar el TLC5940 amb les instruccions necessàries de la primera part:

Tlc.update ();

Si voleu desactivar tots els canals alhora, només cal que utilitzeu:

Tlc.clear ();

Pas 4:

No cal que truqueu a TLC.update () després de la funció d'esborrar. El següent és un esbós d’exemple ràpid que estableix els valors de brillantor / PWM de tots els canals a diferents nivells:

#include "Tlc5940.h" void setup () {Tlc.init (0); // inicialitzar TLC5940 i desactivar tots els canals}

bucle buit ()

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

La possibilitat de controlar la brillantor individual per a cada canal / LED també pot ser útil quan es controlen els LED RGB; llavors podeu seleccionar fàcilment els colors necessaris mitjançant diferents nivells de brillantor per a cada element. Al vídeo es mostra una demostració.

Pas 5: utilitzar dos o més TLC5940

Podeu encadenar molts TLC5940 junts per controlar més LED. Primer: connecteu el següent TLC5940 a l’Arduino tal com es mostra al circuit de demostració, excepte connecteu el pin SOUT (17) del primer TLC5940 al pin SIN (26) del segon TLC5940, ja que les dades viatgen des de l’Arduino, a través de el primer TLC5940 al segon, etc. A continuació, repetiu el procés si en teniu un tercer, etc. No oblideu el resisotr que defineix el corrent.

A continuació, obriu el fitxer tlc_config.h situat a la carpeta de la biblioteca TLC5940. Canvieu el valor de NUM_TLCS pel nombre de TLC5940 que heu connectat, després deseu el fitxer i també suprimiu el fitxer Tlc5940.o que també es troba a la mateixa carpeta. Finalment, reinicieu l'IDE. A continuació, podeu fer referència als canals del segon i a altres TLC5940 seqüencialment des del primer. És a dir, el primer és 0 ~ 15, el segon és 16 ~ 29, etc.

Pas 6: Control de servos amb el TLC5940

Com que el TLC5940 genera una sortida PWM (modulació d’amplada de pols), també és ideal per conduir servos. Igual que els LED: podeu controlar fins a setze alhora. Ideal per crear robots semblants a les aranyes, rellotges estranys o fer soroll.

En triar el servo, assegureu-vos que no consumeixi més de 120 mA en funcionament (el corrent màxim per canal) i també tingueu en compte la secció "Gestió de corrent i calor" al final d'aquest tutorial. I utilitzeu alimentació externa amb servos, no confieu en la línia de 5V d’Arduino.

Connectar un servo és senzill: la línia GND es connecta a GND, el cable de 5V (o cable de tensió d’alimentació) es connecta al vostre 5v (o un altre subministrament adequat) i el pin de control del servo es connecta a una de les sortides del TLC5940. Finalment, i això és important, connecteu una resistència de 2,2 kΩ entre els pins de sortida TLC5940 que s’utilitzen i 5 V. Controlar un servo no és tan diferent a un LED. Necessiteu les dues primeres línies al començament de l'esbós:

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

a continuació, a configuració nul·la ():

tlc_initServos ();

A continuació, utilitzeu la funció següent per seleccionar quin servo (canal) voleu operar i l'angle (angle) requerit:

tlc_setServo (canal, angle);

Igual que els LED, podeu agrupar-ne alguns i executar l'ordre amb:

Tlc.update ();

Veiem, doncs, tot això en acció. L’esbós d’exemple següent barreja quatre servos en 90 graus:

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

configuració nul·la ()

{tlc_initServos (); // Nota: això reduirà la freqüència PWM a 50Hz. }

bucle buit ()

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

El vídeo mostra aquest esbós en acció amb quatre servos.

Si els servos no giren a l'angle correcte, per exemple, demaneu 180 graus i només giren a 90 o per aquí, es requereix una mica de treball addicional.

Heu d’obrir el fitxer tlc_servos.h situat a la carpeta de la biblioteca Arduino TLC5940 i experimentar amb els valors de SERVO_MIN_WIDTH i SERVO_MAX_WIDTH. Per exemple, canvieu SERVO_MIN_WIDTH de 200 a 203 i SERVO_MAX_WIDTH de 400 a 560.

Pas 7: Gestió de corrent i calor

Com es va esmentar anteriorment, el TLC5940 pot gestionar un màxim de 120 mA per canal. Després d’experimentar, és possible que noteu que el TLC5940 s’escalfa, i això està bé.

Tingueu en compte que hi ha un límit màxim de potència que es pot dissipar abans de destruir la peça. Si només feu servir LED normals de jardí o servos més petits, l’alimentació no serà un problema. Tanmateix, si teniu previst utilitzar el TLC5940 al màxim, reviseu les notes proporcionades pels autors de la biblioteca.

Conclusió

Un cop més esteu en camí de controlar una part increïblement útil amb el vostre Arduino. Ara, amb certa imaginació, podeu crear tot tipus de pantalles visuals o divertir-vos amb molts servos.

Aquest article us el proporciona pmdway.com, que ofereix productes TLC5940, juntament amb tot per a fabricants i aficionats a l'electrònica, amb lliurament gratuït a tot el món.

Recomanat: