Inhoudsopgave:

Arduino en de TLC5940 PWM LED Driver IC: 7 stappen
Arduino en de TLC5940 PWM LED Driver IC: 7 stappen

Video: Arduino en de TLC5940 PWM LED Driver IC: 7 stappen

Video: Arduino en de TLC5940 PWM LED Driver IC: 7 stappen
Video: Using TLC5940 LED drivers to drive 10 rgb leds 2024, November
Anonim
Arduino en de TLC5940 PWM LED Driver IC
Arduino en de TLC5940 PWM LED Driver IC

In dit artikel gaan we het Texas Instruments TLC5940 16-kanaals LED-stuurprogramma IC onderzoeken. Onze reden om dit te doen is om een andere, gemakkelijkere manier te demonstreren om veel LED's aan te sturen - en ook servo's. Allereerst zijn hier een paar voorbeelden van de TLC5940. U kunt TLC5940 bestellen bij PMD Way met gratis levering wereldwijd.

De TLC5940 is verkrijgbaar in de DIP-versie en ook voor opbouwmontage. Het is echt een handig onderdeel, waarmee je de helderheid van zestien afzonderlijke LED's via PWM (pulsbreedtemodulatie) kunt aanpassen - en je kunt ook meer dan één TLC5940 in serie schakelen om nog meer te regelen.

Tijdens deze tutorial leggen we uit hoe je een of meer TLC5940 IC's met LED's aanstuurt en kijken we ook naar het aansturen van servo's. Download nu een kopie van de TLC5940 (.pdf) zoals u er tijdens dit proces naar verwijst. Download en installeer bovendien de Arduino-bibliotheek TLC5940 van Alex Leone, die u hier kunt vinden. Als je niet zeker weet hoe je een bibliotheek moet installeren, klik dan hier.

Stap 1: Bouw een TLC5940-demonstratiecircuit

Bouw een TLC5940-demonstratiecircuit
Bouw een TLC5940-demonstratiecircuit

Het volgende circuit is minimaal vereist om zestien LED's van uw Arduino of compatibel te bedienen. Je kunt het gebruiken om te experimenteren met verschillende functies en een idee te krijgen van wat er allemaal mogelijk is. Je zal nodig hebben:

  • Een Arduino Uno of compatibel bord
  • 16 normale, alledaagse LED's die een voorwaartse stroom tot 20 mA. kunnen hebben
  • een weerstand van 2 kΩ (geef of neem 10%)
  • een 0.1uF keramiek en een 4.7uF elektrolytische condensator

Let op de LED-oriëntatie - en onthoud dat de TLC5940 een LED-driver met gemeenschappelijke anode is - dus alle LED-anoden zijn met elkaar verbonden en vervolgens met 5V.

Stap 2:

Voor dit specifieke circuit heeft u geen externe 5V-voeding nodig, maar u kunt er in de toekomst wel een nodig hebben. Het doel van de weerstand is om de hoeveelheid stroom te regelen die door de LED's kan stromen. De vereiste weerstandswaarde wordt berekend met de volgende formule:

R = 39,06 / Imax waarbij R (in Ohm) de weerstandswaarde is en Imax (in Ampère) de maximale hoeveelheid stroom die u door de LED's wilt laten vloeien.

Als u bijvoorbeeld LED's hebt met een voorwaartse stroom van 20 mA, zou de weerstandsberekening zijn: R = 39,06 / 0,02 = 1803 Ohm. Zodra je het circuit hebt samengesteld, open je de Arduino IDE en upload je de schets BasicUse.pde die zich in de voorbeeldmap voor de TLC5940-bibliotheek bevindt.

U zou een uitvoer moeten krijgen die lijkt op wat in de video wordt getoond.

Stap 3: De TLC5940 bedienen

Nu het circuit werkt, hoe kunnen we de TLC5940 bedienen? Ten eerste de verplichte functies - neem de bibliotheek aan het begin van de schets op met:

#include "Tlc5940.h"

en initialiseer vervolgens de bibliotheek door het volgende in void setup() te plaatsen:

Tlc.init(x);

x is een optionele parameter – als u alle kanalen op een bepaalde helderheid wilt instellen zodra de schets begint, kunt u een waarde tussen 0 en 4095 voor x in de Tlc.init()-functie invoegen.

Nu om een kanaal/LED aan of uit te zetten. Elk kanaal is genummerd van 0 tot 15, en de helderheid van elk kanaal kan worden aangepast tussen 0 en 4095. Dit is een proces dat uit twee delen bestaat… Eerst – gebruik een of meer van de volgende functies om de vereiste kanalen en de respectieve helderheid (PWM) in te stellen peil):

Tlc.set (kanaal, helderheid);

Als u bijvoorbeeld de eerste drie kanalen op volle helderheid wilt hebben, gebruikt u:

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

Het tweede deel is om het volgende te gebruiken om de TLC5940 bij te werken met de vereiste instructies uit deel één:

Tlc.update();

Als u alle kanalen tegelijk wilt uitschakelen, gebruikt u eenvoudig:

Tlc.clear();

Stap 4:

U hoeft geen TLC.update() aan te roepen na de clear-functie. Het volgende is een snelle voorbeeldschets die de helderheid/PWM-waarden van alle kanalen op verschillende niveaus instelt:

#include "Tlc5940.h"void setup() { Tlc.init(0); // initialiseer TLC5940 en zet alle kanalen uit}

lege lus()

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

De mogelijkheid om de individuele helderheid voor elk kanaal/LED te regelen kan ook handig zijn bij het besturen van RGB-LED's - u kunt vervolgens eenvoudig de gewenste kleuren selecteren via verschillende helderheidsniveaus voor elk element. In de video is een demonstratie te zien.

Stap 5: Twee of meer TLC5940's gebruiken

U kunt een flink aantal TLC5940's aan elkaar koppelen om meer LED's aan te sturen. Ten eerste - sluit de volgende TLC5940 aan op de Arduino zoals weergegeven in het demonstratiecircuit - behalve sluit de SOUT-pin (17) van de eerste TLC5940 aan op de SIN-pin (26) van de tweede TLC5940 - terwijl de gegevens van de Arduino door de eerste TLC5940 tot de tweede enzovoort. Herhaal dan het proces als je een derde hebt, enz. Vergeet de weerstand niet die de stroom instelt!

Open vervolgens het bestand tlc_config.h in de TLC5940-bibliotheekmap. Wijzig de waarde van NUM_TLCS in het aantal TLC5940's dat u met elkaar hebt verbonden, sla vervolgens het bestand op en verwijder ook het bestand Tlc5940.o dat zich ook in dezelfde map bevindt. Herstart tenslotte de IDE. U kunt dan verwijzen naar de kanalen van de tweede en verder TLC5940 opeenvolgend vanaf de eerste. Dat wil zeggen, de eerste is 0~15, de tweede is 16~29, enzovoort.

Stap 6: Servo's bedienen met de TLC5940

Omdat de TLC5940 PWM-uitgang (pulsbreedtemodulatie) genereert, is hij ook geweldig voor het aansturen van servo's. Net als LED's kun je er tot zestien tegelijk bedienen. Ideaal voor het maken van spinachtige robots, vreemde klokken of het maken van wat lawaai.

Zorg er bij het kiezen van uw servo voor dat deze tijdens bedrijf niet meer dan 120 mA trekt (de maximale stroom per kanaal) en let ook op het gedeelte "Stroom en warmte beheren" aan het einde van deze tutorial. En gebruik externe voeding met servo's, vertrouw niet op de 5V-lijn van de Arduino.

Het aansluiten van een servo is eenvoudig - de GND-lijn wordt aangesloten op GND, de 5V (of voedingsspanningskabel) wordt aangesloten op uw 5V (of een andere geschikte voeding) en de servobesturingspin wordt aangesloten op een van de uitgangen van de TLC5940. Ten slotte - en dit is belangrijk - sluit een weerstand van 2,2 kΩ aan tussen de TLC5940-uitgangspen(nen) die worden gebruikt en 5V. Het besturen van een servo is niet zo anders dan een LED. Je hebt de eerste twee regels nodig aan het begin van de schets:

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

dan het volgende in void setup():

tlc_initServos();

Gebruik vervolgens de volgende functie om te selecteren welke servo (kanaal) moet worden bediend en de gewenste hoek (hoek):

tlc_setServo(kanaal, hoek);

Net als de LED's kun je er een paar samenvoegen en vervolgens de opdracht uitvoeren met:

Tlc.update();

Dus laten we dat allemaal in actie zien. De volgende voorbeeldschets veegt vier servo's over 90 graden:

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

ongeldige setup()

{ tlc_initServos(); // Opmerking: hierdoor wordt de PWM-frequentie verlaagd naar 50 Hz. }

lege 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); } }

De video toont deze schets in actie met vier servo's.

Als je servo's niet in de juiste hoek draaien - je vraagt bijvoorbeeld om 180 graden en ze draaien maar tot 90 of daaromtrent, is wat extra werk vereist.

U moet het tlc_servos.h-bestand in de TLC5940 Arduino-bibliotheekmap openen en experimenteren met de waarden voor SERVO_MIN_WIDTH en SERVO_MAX_WIDTH. Wijzig bijvoorbeeld SERVO_MIN_WIDTH van 200 in 203 en SERVO_MAX_WIDTH van 400 in 560.

Stap 7: Stroom en warmte beheren

Zoals eerder vermeld kan de TLC5940 maximaal 120 mA per kanaal aan. Na wat experimenteren merk je misschien dat de TLC5940 wel warm wordt – en dat is oké.

Merk op dat er een maximale limiet is aan de hoeveelheid vermogen die kan worden gedissipeerd voordat het onderdeel wordt vernietigd. Als u alleen normale LED's van tuinvariëteiten of kleinere servo's gebruikt, is stroom geen probleem. Als u echter van plan bent de TLC5940 maximaal te gebruiken, lees dan de opmerkingen van de bibliotheekauteurs.

Conclusie

Nogmaals, je bent op weg om een ongelooflijk handig onderdeel te besturen met je Arduino. Nu kun je met wat fantasie allerlei visuele displays maken of plezier hebben met veel servo's.

Dit bericht wordt u aangeboden door pmdway.com - dat TLC5940-producten biedt, samen met alles voor makers en elektronica-enthousiastelingen, met gratis levering wereldwijd.

Aanbevolen: