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.
http://circuits.datasheetdir.com/58/TLC5947-circuits.jpg

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...

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.

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.

Vereenvoudigde tekening
http://img135.imageshack.us/img135/9273/tlc.png

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 :o

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

	}

}

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....

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