Forum: Mikrocontroller und Digitale Elektronik BC517 zu langsam für Matrix?


von Mathias S. (merzi1993)


Lesenswert?

Hallo!

Ich habe eine Matrix (5 x 22) erstellt.
D.h. es wurden 5 BC517 verwendet und als Spaltentreiber habe ich den 
TLC5916 verwendet. Funktioniert soweit auch.
Es wird Zeilenweise gemultiplext. D.h. Daten der ersten Zeile in den TLC 
geschrieben, 1. Transistor ein und dann gleiches für die anderen Zeilen.

Aber wenn ich z.b. in der ersten Zeile ein paar LEDs leuchten lasse, 
leuchten genau die selben LEDs in der nächsten und übernächsten Zeile 
auch, nur dass die LEDs ganz schwach leuchten.

Dazu meine Frage: Kann es sein, dass der BC517 vielleicht zu lang 
braucht, um vollständig zu sperren?


Gruß
Mathias

von Geizkragen (Gast)


Lesenswert?

R5, R8 und R9 sind zu groß gewählt.

von Teo D. (teoderix)


Lesenswert?

Hört sich nach "Ghosting" an.
Mach mal ne Pause wischen der Zeilenumschaltung.

von Mathias S. (merzi1993)


Lesenswert?

Geizkragen schrieb:
> R5, R8 und R9 sind zu groß gewählt.

Richtig, Schaltung vergessen. Auf seite 1 sollte alles soweit 
beschrieben sein.
http://www.mikrocontroller.net/wikifiles/9/9c/Wordclock_variante3_schaltplan.pdf

Teo Derix schrieb:
> Hört sich nach "Ghosting" an.
> Mach mal ne Pause wischen der Zeilenumschaltung.

Ja, dass hier das Problem liegen könnte habe ich mir auch gedacht. Werds 
mal mit einer Pause versuchen.

von MaWin (Gast)


Lesenswert?

Darlingtons sind langsam, und daher keine gute Wahl, ausserdem ist ihr 
Spannungsabfall mit über 1V recht hoch.

von Mathias S. (merzi1993)


Lesenswert?

MaWin schrieb:
> Darlingtons sind langsam, und daher keine gute Wahl, ausserdem ist ihr
> Spannungsabfall mit über 1V recht hoch.

Und was würdest du statt Darlingtons empfehlen?

von Mathias S. (merzi1993)


Angehängte Dateien:

Lesenswert?

Ich habe nun probiert immer die gleiche Zeile zu toggeln pro 
Timer-Interrupt.
1
ISR(TIMER0_OVF_vect){
2
3
   invert(CSEL0_PORT, CSEL0_PIN);  
4
}

Jedoch werden kurzzeitig die anderen Spalten eingeschaltet. Woran könnte 
das liegen. Im Programm werden diese nirgends eingeschaltet. Vielleicht 
Massefehler?


____________________________________________

Blau: Der getoggelte Transistor
Restlichen Farben: Transistoren welche auf 0 liegen sollten

von Mathias S. (merzi1993)


Lesenswert?

Wenn ich die Verbindung zw. Transistor und LED-Matrix löse, tritt das 
Problem nicht mehr auf. Sozusagen muss es an der LED-Matrix liegen oder 
vll. am TLC5916. Aber was könnte es sein?

von Reinhard Kern (Gast)


Lesenswert?

Mathias S. schrieb:
>    invert(CSEL0_PORT, CSEL0_PIN);

invert ist kein Opcode, kommt drauf an, was der Compiler draus macht, 
wahrscheinlich irgendeine Form von Read-Modify-Write. Wie sich das 
auswirkt kann man ohne Schaltplan sowieso nicht beurteilen, aber 
möglicherweise musst du eben selbst bestimmen, was nacheinander 
passiert: alle Spalten abschalten(!!), Segmente umschalten, dann die 
neue Spalte einschalten. Da kann man auch noch kurze Delays einfügen, 
aber das ist sicher garnicht notwendig. Deine gemessenen Spaltenimpulse 
müssen jedenfalls weg.

Gruss Reinhard

von MaWin (Gast)


Lesenswert?

> Und was würdest du statt Darlingtons empfehlen?

MOSFETs.
SO8

von Mathias S. (merzi1993)


Lesenswert?

#ifndef invert
#define invert(sfr, bit)  (_SFR_BYTE(sfr) ^= _BV(bit))
#endif

invert inviert ganz normal ein Bit. Mehr ist das nicht.


Reinhard Kern schrieb:
> was nacheinander
> passiert: alle Spalten abschalten(!!), Segmente umschalten, dann die
> neue Spalte einschalten.

Momentan gehts aber mal darum, das ich immer nur EINE Zeile ein und aus 
schalte und die restlichen Zeilen sollten aus bleiben, was sie aber 
nicht tun.

Schaltplan für die Matrix sieht man hier auf Seite 1 und 2
http://www.mikrocontroller.net/wikifiles/9/9c/Wordclock_variante3_schaltplan.pdf

von Wilhelm F. (Gast)


Lesenswert?

Mathias S. schrieb:

> Dazu meine Frage: Kann es sein, dass der BC517 vielleicht zu lang
> braucht, um vollständig zu sperren?

Ghosting ist durchaus denkbar, wie es schon jemand bemerkte. Auch eine 
viel zu hohe Multiplexfrequenz. Ich arbeitete einmal mit einer 
8-stelligen Siebensegmentanzeige, und hatte dort den ollen Intel 8279 
(Keyboard-Display-Interface) dran, der das Multiplexing von selbst 
macht, und nur den Datenbus zum µC braucht. Wenn ich mich recht 
erinnere, waren dort in den Umschaltungen Delays von 80µs drin, die der 
Baustein automatisch einfügt. Die Leistungs-Darlingtons BD675 als 
Spaltentreiber machten da überhaupt keine Probleme. Der Spannungsabfall 
am Darlington machte ebenfalls keine Probleme. Die Transistoren 
brauchten weder einen Kühlkörper, noch wurden sie warm. Energie wird da 
bei sowas ohnehin verbraten.

Der BC517 ist doch auch ein Darlington, wie er im Schaltbild nicht 
verwendet wird. Sie schalten etwas langsamer ab, als einfache 
Transistoren, besonders, wenn sie maßlos übersteuert waren.

von Reinhard Kern (Gast)


Lesenswert?

Mathias S. schrieb:
> Momentan gehts aber mal darum

Ich dachte, dir gehts um eine funktionierende Anzeige - so kann man sich 
täuschen.

Gruss Reinhard

von Peter D. (peda)


Lesenswert?

MaWin schrieb:
> Darlingtons sind langsam, und daher keine gute Wahl, ausserdem ist ihr
> Spannungsabfall mit über 1V recht hoch.

Die sind hier aber in Kollektorschaltung, also ist das o.k.
Nur in Emitterschaltung sind sie langsam.

von Peter D. (peda)


Lesenswert?

Mathias S. schrieb:
> Jedoch werden kurzzeitig die anderen Spalten eingeschaltet. Woran könnte
> das liegen. Im Programm werden diese nirgends eingeschaltet.

Sicher?

Ist es denn so unsäglich schwer, die *.h, *.c als Anhang zu posten?

Schnipsel posten bringt nichts. Du guckst doch auch nicht einen Film 
gerne durchs Schlüsselloch.

von Axel S. (a-za-z0-9)


Lesenswert?

Das ist an so vielen Stellen schlecht...

1. der Schaltplan ist ein Witz. Eine ganze Seite wird verschwendet, um 
die (triviale) Verschaltung der LED-Matrix zu zeigen, aber dann tauchen 
da einzelne Transistoren auf bei denen lediglich Netznamen an den Pins 
stehen die man sich dann selber auf den 4 Seiten suchen darf. Falls das 
Programm (wie erwartet) genau so ein Spaghetti ist, dann möchte ich es 
gar nicht sehen.

2. der Schaltplan zeigt FZT-irgendwas, keine BC517. Ein Symbol für 
Darlington-Transen scheints auch nicht zu geben?

3. die Spaltentreiber werden als Emitterfolger betrieben. Selbstredend 
ohne Basiswiderstände.

4. noch dazu mit einer separaten Spannung für die LED. Und wir wissen 
noch nicht mal, ob nun höher oder niedriger oder gleich der 
Versorgungsspannung des µC ist. Streng genommen kann man die 
Spaltentreiber nur dann direkt mit dem µC ansteuern, wenn das die 
gleiche Spannung ist.

5. das invert() Makro ist nicht hilfreich. Viel eher hätte man ein Makro 
zum Ein- und ein zweites zum Ausschalten einer Zeile erwartet. Dann 
würde der (vereinfachte Pseudo)Code selbstdokumentierend sein:
1
ISR displaymux
2
{
3
  static int spalte;
4
  spalte_aus(spalte);
5
  spalte++;
6
  if (spalte>=anzahl_stellen)
7
    spalte=0;
8
  lade_zeile(spalte);
9
  spalte_an(spalte);
10
}

6. das Oszillogramm zeigt, daß alle Spalten mal kurz eingeschaltet 
werden. Es ist also kein Ghosting, sondern ganz klar ein Softwarefehler.


XL

von MaWin (Gast)


Lesenswert?

> Nur in Emitterschaltung sind sie langsam.

Nein, sie sind ganz allmein beim Abschalten langsam weil aus dem zweiten 
Transistor die Basis nicht ausgeräumt wird.
Manche Leistungsdarlingtons haben deswegen BE-Widerstände drin.

von Wilhelm F. (Gast)


Lesenswert?

MaWin schrieb:

> Manche Leistungsdarlingtons haben deswegen BE-Widerstände drin.

Und schon 35 Jahre alte Displaycontroller ein Delay in der Umschaltung.

Wenn man das ohne Controller direkt vom µC aus macht, da ist es doch 
aber kein Problem, in die Umschaltung ein Delay einzufügen.

von Reinhard Kern (Gast)


Lesenswert?

MaWin schrieb:
> Nein, sie sind ganz allmein beim Abschalten langsam

Das mag ja sein, ist aber hier nicht relevant - nach seinen 
Oszillogrammen schaltet er irgendwo die anderen Spalten alle 
gleichzeitig sauber ein, er weiss aber nicht wo, weil er weder Hard- 
noch Software versteht. Ein Bit invertieren kann nicht alles sein um 
Spalten weiterzuschalten, aber wenn man dazu was sagt, wird er auch noch 
pampig.

Gruss Reinhard

von Mathias S. (merzi1993)


Angehängte Dateien:

Lesenswert?

Habe nun alle c- und h-Files angehängt.

Ich habe das Programm darauf reduziert, dass immer nur eine Zeile aus 
und eingeschaltet wird, aber die anderen Zeilen werden auch immer kurz 
eingeschaltet. Nur warum?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.