lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
Beste,
Ik ben in het bezit van het mooie TLC5947 IC, en gesoldeerd op een printplaat. Maar ik krijg hem niet aangestuurd.
Code
Aansturen moet gebeuren dmv een 18F4550. Momenteel stuur ik het IC als volgt aan :
- (SIN) Data = 1 (om te testen)
- (CLK) Clock 288 bitjes in. (24*12 bits)(12bits PWM per kanaal)
- (XLAT) Latch de output door deze poort even hoog en weer laag te maken
Een dergelijke opbouw van code word gebruikt om de 74HC595 aan te sturen, en dat werkt perfect.
Schema
Ik gebruik een RGB Matrix met een common anode. Deze word aangestuurd door een 595 en een UDN (line driver). Werkt allemaal perfect: 8 pinnen krijgen 5 volt aangeleverd.
Dan zijn alle cathodes van de matrix op de TLC aangesloten.
Er is een 2,2K Ohm weerstand gebruikt op IREF van de TLC om zo de stroom tot ongeveer 21mA te begrensen.
Resultaat
De TLC stuurt 3V uit op alle uitgangen. Ik had dus verwacht dat de TLC ook de matrix aan kon sturen via de cathode, zoals ik in de datasheet zie.
Vraag
Heeft iemand enig idee hoe de TLC5947 (correct) moet worden aangestuurd, of zit ik fout met de hardware?
Thanks!
Op 18 november 2010 16:52:31 schreef lemonadez:
- (SIN) Data = 1 (om te testen)
- (CLK) Clock 288 bitjes in. (24*12 bits)(12bits PWM per kanaal)
- (XLAT) Latch de output door deze poort even hoog en weer laag te maken....
Resultaat
De TLC stuurt 3V uit op alle uitgangen. Ik had dus verwacht dat de TLC ook de matrix aan kon sturen via de cathode, zoals ik in de datasheet zie.
1) wat doe je met de blank pin?
2) SPI aansturing klopt volgens mij
3) de TLC trekt 21mA de poorten in, hij 'geeft' geen 3V!! Het is immers een stroombron.
EDIT/
Je kunt die TLC niet zomaar in een matrix hangen...
lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
Ik zie net dat ik t verkeerde pinnetje had gemeten, er komt inderdaad geen spanning uit de TLC.
De blank pin heb ik nog niet gebruikt. Ik heb mijn informatie merendeels van deze site gehaald, en zij maken ook geen gebruik van de BLANK.
Zometeen maar eens experimenteren met de blank pin.
zet die blankpin voorlopig maar even op 0, dan kun je gewoon eindeloos de SPI inklokken, zonder dat je flicker krijgt.
lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
Ik zat blijkbaar toch goed te meten, echter die 3,5V word niet uitgestuurd door de TLC. Het is het voltage dat over de LED valt (ben even aant testen met een rode LED). Bij een blauwe LED is dat 2.7V
Er word dus 5V aangeleverd door de UDN, deze gaat naar de + van de LED, vervolgens meet ik 3.5V op de min van LED.
In theorie zou de TLC dan de rest naar de ground moeten trekken, toch ?
Op 18 november 2010 17:36:48 schreef lemonadez:
Er word dus 5V aangeleverd door de UDN, deze gaat naar de + van de LED, vervolgens meet ik 3.5V op de min van LED.In theorie zou de TLC dan de rest naar de ground moeten trekken, toch ?
Ik snap waar je heen wilt, maar post eens een schema waar die UDN ook in zit.
De TLC heeft sink uitgangen. Op het moment dat jij als PWM value 0xFFF geeft voor een uitgang, zal de uitgang laag worden en de stroom die door de LED loopt, loopt dan via de output transistor van de TLC naar ground.
De spanning op de uitgang is dan de CE overgang van de uitgangstransistor. Dit gaat dus richting de 0V.
Ik vermoed dat je iets met de UDN doet wat niet goed gaat.
lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
Vereenvoudigde tekening
De UDN input is op de output van de 595 gezet, en de UDN output gaat naar de plus van de led (matrix).
Hieronder de code die ik gebruik
// EDIT
Ik meet de VCC op de TLC en meet slechts 0.9V. Denk dat ik dit eerst maar eens moet gaan oplossen 
Code
#include <p18cxxx.h>
#include <delays.h>
#pragma config FOSC = HS
#pragma config PWRT = OFF
#pragma config BOR = OFF
#pragma config WDT = OFF
#pragma config CCP2MX = OFF
#pragma config LVP = OFF
// LED Indicators
#define LED4 PORTDbits.RD2
// Global
#define WRITE PORTEbits.RE0
int i,j = 0; // Counters
int delay = 10; // Delay voor inklokken
// 74HC595
#define CLOCK595 PORTAbits.RA3
#define DATA595 PORTAbits.RA4
// TLC
#define XLAT PORTAbits.RA1
#define DATA5947 PORTAbits.RA5
#define CLOCK5947 PORTAbits.RA2
void main(void){
// Input Output
TRISA = 0b11000001;
TRISE = 0b11111110;
TRISD = 0b00000000;
// Clear Ports
PORTA = 0;
PORTE = 0;
PORTD = 0;
WRITE = 0;
// Stabilisatie delay
Delay10KTCYx(200);
// Data inklokken voor de rijen (74HC595)
// Voor testdoeleinde alle rijen hoog
DATA595 = 1;
for(i=0;i<8;i++){
CLOCK595 = 1;
Delay10KTCYx(delay);
CLOCK595 = 0;
Delay10KTCYx(delay);
}
WRITE = 1;
Delay10KTCYx(delay);
WRITE = 0;
Delay10KTCYx(delay);
DATA595 = 0;
// WRITE is tevens BLANK, maar deze word
// laag gemaakt, dus zou geen problemen
// moeten geven
// Oneindige lus
while(1)
{
// Data voor de TLC, voor test doeleinden
// alles hoog maken
DATA5947 = 1;
for(i=0;i<288;i++){
CLOCK5947 = 1;
Delay10KTCYx(delay);
CLOCK5947 = 0;
Delay10KTCYx(delay);
}
// Latch even hoog maken
XLAT = 1;
Delay10KTCYx(delay);
// En weer laag maken
XLAT = 0;
Delay10KTCYx(delay);
}
}lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
LOL
mede student is op 1 punt vergeten om de dubbelzijdige print door de verbinden. Laat dat zou net de voedingsspanning zijn.
Gelukkig is het 'probleem' opgelost, en het display werkt dus nu.
Nu de matrix koppelen aan de USB poort 
Je meet dus 1.5V over de LED. Wat voor LED is dit? Rood? Die zou dan moeten branden.
Weet je zeker dat je de juiste stroom-instel-weerstand hebt gebruikt?
Zie ik goed dat de BLANK pin aan de latchpin van de 595 hebt gehangen?
(tenminste ik denk dat WRITE in jouw code latchpin van de 595 is..)
Zou ik effe niet doen. Hang die BLANK pin gewoon aan nul.
verder opmerkingen wordt lastig met dit 'versimpelde' schema. Hoe zit die UDN precies aangesloten.?
Hoe meet je alles? DMM of scoop?
EDIT//crosspost
laat maar....
lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
Toch nog een probleempje.. Er is nu wel beeld, maar de aansturing werkt op de een of andere manier niet.
De LEDs gaan namelijk niet meer uit. maw de TLC klokt de bitjes niet juist in ofzo..
de TLC heeft een IREF van 2,2k Ohm, en een 100nF condensator over de voedingsspanning. Verder is alles 1 op 1 aangesloten (cathode van de leds en programmeer draden)
Ben voor testdoeleinden maar weer eens in PIC Basic begonnen met een 16F648. Hoe simpel het ook is, die TLC accepteert de bitjes niet.
Het clocksignaal ziet er goed uit op de scoop, evenals het latch signaal. De data en blank zijn allebei laag (de leds moeten immers uit).
Dit is de code
Device=16F648A
Config INTRC_OSC_NOCLKOUT,WDT_OFF
ALL_DIGITAL = true;
TRISA = %11111111;
TRISB = %11110000;
PORTA = 0;
PORTB = 0
DelayMS 50
Dim i As Word
Symbol datapin = PORTB.2
Symbol clockpin = PORTB.0
Symbol latchpin = PORTB.1
Symbol blankpin = PORTB.3
main:
datapin = 0;
For i = 0 To 288 Step 1
clockpin = 1;
DelayMS 1;
clockpin = 0;
DelayMS 1;
Next
blankpin = 1;
latchpin = 1;
DelayMS 1;
blankpin = 0;
latchpin = 0;
DelayMS 1;
GoTo main