hallo.

Sinds kort ben ik bezig met een led cube van 5x5x5 te bouwen.
Hij heeft even (1 seconde) gegaan na de glitches in de programmataal eruit te halen, maar nu geeft hij niets meer.

Eerst alle verbindingen gecontroleerd, dat was in orde.

Bij het uitmeten onder stroom heb ik een kortsluiting gemaakt, waardoor er zwarte plekjes zijn ontstaan op mijn shiftregisters. alle verdiepen brandden wel daarna.

code in de microcontroller is ook in orde, want heb daarna nog half de leds laten gaan (1 kolom wel, 1 kolom niet).

IC uitgemeten, en ik kwam op een weerstand van 8ohm tussen VDD en gnd van de 74595, wat niet normaal is :-)

Heb dan even die van ernaast genomen en in de plaats gezet, maar nu wilt hij helemaal niet meer. voor mijn uitganstransistoren meet ik op de ingangen en op de basis 5V, maar aan de uitgang noppes. weet iemand of die transistoren 25 leds aankunnen, of mijn fout eventueel ergens anders ligt?

schema:
http://www.basgoossens.net/schema.png

code:


#include <system.h>
// Set the device configuration bits
#pragma DATA _CONFIG, _CP_OFF & _PWRTE_OFF & _WDT_OFF & _BODEN_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF
// Tell the compiler the device clock frequency to get the correct delays generated
#pragma CLOCK_FREQ	4000000

// IO's
volatile bit data1 	@ PORTB.0;
volatile bit clk1 	@ PORTB.1;
volatile bit data2 	@ PORTB.2;
volatile bit clk2 	@ PORTB.3;
volatile bit data3 	@ PORTB.4;
volatile bit clk3 	@ PORTB.5;

volatile bit clk4	@ PORTA.0;
volatile bit data4	@ PORTA.1;
volatile bit latchv	@ PORTA.2;
volatile bit latchh	@ PORTA.3;


void load_bytea(char dat1);
void load_byteb(char dat2);
void load_bytec(char dat3);
void load_byteh(char dat4);
void latchver(void);
void latchhor(void);

void main(){
	trisa = 0;
	porta = 0;
	trisb = 0;
	portb = 0;
	
while(1){
load_byteh(0xFF);
latchhor();
load_bytea(0xAA);
load_byteb(0xAA);
load_bytec(0xAA);
latchver();

}

}	
void load_bytea(char dat1){

	char i = 0;

	for (i = 0; i < 8; i++){
		data1 = (dat1 & 0x01);
		dat1 = dat1 >> 1;
		clk1 = 1;
		delay_us(10);
		clk1 = 0;
	}
}
void load_byteb(char dat2){

char i = 0;

	for (i = 0; i < 8; i++){
		data2 = (dat2 & 0x01);
		dat2 = dat2 >> 1;
		clk2 = 1;
		delay_us(10);
		clk2 = 0;
	}
}
void load_bytec(char dat3){
	
	char i = 0;
	
	for (i = 0; i < 8; i++){
		data3 = (dat3 & 0x01);
		dat3 = dat3 >> 1;
		clk3 = 1;
		delay_us(10);
		clk3 = 0;
	}
}
void latchver(void){
latchv = 1;
delay_us(10);
latchv = 0;
}
void load_byteh(char dat4){

	char i = 0;

	for (i = 0; i < 8; i++){
		data4 = (dat4 & 0x01);
		dat4 = dat4 >> 1;
		clk4 = 1;
		delay_us(10);
		clk4 = 0;
	}
	}
void latchhor(void){	
latchh = 1;
delay_us(10);
latchh = 0;
}

Welke transistoren?

je cube verbruikt pakweg 0.5A van de transistor (of meer als je zoals velen valsspeelt (meer A door de led sturt))

het kan aan mij liggen maar ik kan geen schema zien

oei ja, ik zie het net.

hier is de link

EDIT: best de afbeelding opslaan, want het is een grote.

[Bericht gewijzigd door --bas-- op (24%)]

ongeldige afbeelding
anders mail je me je shema effe dan zet ik hem op mijn site voor je

edit: mooie site heb je daar, zekergebruikgemaakt van dreamwaver :p

[Bericht gewijzigd door Henry S. op (45%)]

ik had een portaalpagina nodig voor de fotoalbums :-) was zo snel gefikst.

heb het schema gemaild.

http://users.telenet.be/ruw/Circuitsonline/schema%20(1).png

Mod-edit: Geen posters op kingzsize formaat posten.

de transistoren kunnen elk 0.1A aan als ik mij niet vergis

[Bericht gewijzigd door Henry S. op (26%)]

door die BC327s moet wel de stroom van 25 leds lopen... kan het zijn dat die overbelast zijn?

kleine update:

wanneer ik dat kapotte schuifregister voor mijn verdiepen gebruik, en 2 andere voor mijn kolommen, werken alle verdiepen, en de kolommen worden goed gestuurd.

wanneer ik echter het kapotte shift register eruit haal en er één van die 2 erin zet die voor verticaal stonden, werkt hij niet meer...
dit is voor mij een groot raadsel :-)

[Bericht gewijzigd door --bas-- op (66%)]

Op 24 november 2011 07:38:00 schreef --bas--:
door die BC327s moet wel de stroom van 25 leds lopen... kan het zijn dat die overbelast zijn?

zou kunnen afhankelijk van hoeveel ledjes er in serie geschakeld zijn

ze staan in een array, 25 leds per verdiep met common +, en die wordt gestuurd door die BC327s.

ik vermoed dat je 20mA per ledje gebruikt?

dat is 25*0.02 = 0.5 A
mss effe checke in de datasheet

transistor kan dit aan. Ik denk dat er ergens een fout is in de programmatie van de verdiepen... Ik zal iets laten weten wanneer ik iets gevonden heb.

anders moet je het programatje opnieuw schrijven en dan deel per deel gaan uittesten, dat bespaart mss wel geen tijd maar zo kan je ten minste zien of het programma is dat de fouten veroorzaakt

ben net nieuwe 595s gaan halen.

De verticale pins doen wat ze moeten doen, maar de horizontale niet(cathode). Kan dit komen door het feit dat ik 5 7805s gebruikt heb?(1 per verdiep, zie schema).

Volgens mij ligt het nog altijd aan het feit dat die BC327 niet genoeg stroom krijgt om te gaan geleiden, maar ik weet niet hoe ik dat moet berekenen :-)

[Bericht gewijzigd door --bas-- op (28%)]

De stroom door de basis van de transistor (bijv. Q5) is uit te rekenen door de stroom door R2 uit te rekenen.
De spanning op R2 is: 5V - VQ5,BE - VIC4 - VCE,BC547.
Je wilt door de emitter van Q5 ongeveer 0,5 A (25*20mA) kunnen sturen. Met een hfe van ~100 (dit is de versterkingsfactor tussen basisstroom en collector-emitterstroom) moet je door de basis dan dus 5mA sturen (5mA * 100=0.5A).
Dus de stroom door R2 moet tenminste 5mA zijn.
De spanning is met de bovenste formule en de datasheets (ik weet niet wat de spanningsval over IC4, dus die mag je zelf even nakijken): 5V-1.2V-???- ~100mV=3.7V
Dus R2 moet maximaal 3.7V/5mA=740 ohm zijn. Als deze iets groter is zou het niet zo'n probleem hoeven te zijn, de LED's branden dan alleen wat zachter en de intensiteit is afhankelijk van hoeveel er tegelijk aan zijn.

Denk dat je probleem dus niet bij die weerstand zit. Maar test de boel eerst per gedeelte uit, dus werkt het gedeelte met de BC327's goed als je de LEDjes direct naar de grond schakelt ipv van naar de BC547's?

heb het probleem gevonden...

wanneer ik 0xFF wegschrijf naar de shift register van de bc327s geleidt er geen enkele transistor. Schrijf ik 0x00 weg, dan werkt het wel.

dat had ik nu niet verwacht :-)

nu werken alle leds en verdiepen.

Wat nu rest zijn de laatste glitches nog uit de programmeercode halen, en proberen van patronen/karakters te programmeren :-)

[Bericht gewijzigd door --bas-- op (51%)]

Ja, je moet de uitgangen laag maken (oftewel de boel in je software inverteren) om de BC327 in geleiding te brengen, want pas dan loopt er een stroom vanaf de emitter naar de basis wat ervoor zorgt dat er ook stroom vanaf emitter naar de collector kan.

dat verklaart alles :-)

zou alles geinverteerd zijn moest ik hiervan

data4 = (dat4 & 0x01);
		dat4 = dat4 >> 1;
		clk4 = 1;
		delay_us(10);
		clk4 = 0;

dit maken?:

data4 = ~(dat4 & 0x01);
		dat4 = dat4 >> 1;
		clk4 = 1;
		delay_us(10);
		clk4 = 0;

EDIT: dit werkt, maar aangezien ik dan pas vanaf 0F mijn eerste verdiep heb zou ik daar ook nog iets op moeten vinden.

[Bericht gewijzigd door --bas-- op (17%)]