Forum: Mikrocontroller und Digitale Elektronik LED Cube Multiplexing mit 74hc595 und ULN2803A


von derBasti (Gast)


Lesenswert?

Hallo,

ich lerne mich immernoch in das Thema Multiplexing ein, hab aber noch 
ein paar Fragen:

Ich sehe im Internet immer wieder aufbauten für 8x8x8-Würfel die z.B. 8x 
den UDN2981A als Treiber für die Anoden und 8 Mosfets oder starke 
Transistoren für die Kathoden verwenden. Wieso multiplext man nicht die 
Kathoden z.B. mit 8x ULN2803 und nimmt 8 Mosfets für die Anoden? Das 
wäre doch viel billiger (uln2803 ca 30ct, udn2981 etwa 1,50€) und wenn 
man es eh programmieren muss, muss man eignetlich nur die Logik 
umdrehen?

Auch fällt mir immer wieder auf, dass oft der 74hc575 benutzt wird, aber 
so so gut wie nie ein z.B. 74HC595. Wo ist der Unterschied der beiden? 
Den 74HC595 kann ich Daisychainen, den 575 allerdings anscheinend nicht. 
Das Schieberegister soll doch nur den Treiber schalten - hab ich 
irgendwo einen katastrophalen Denkfehler?

Ist es möglich, mit z.B. 8 74hc595 die am Ausgang jeweils z.B. einen 
BC337 durchsteuern und 8 Mosfets, oder sogar einem ULN2803 zu bauen? 
Wieso finde ich da nichts drüber? Ich geh stark davon aus, dass es da 
einen Grund geben muss.

Was ist ein passender (logiclevel?)-Mosfet für einen 8x8x8-Würfel mit 
blauen LEDs? Worauf muss ich achten?

Vielen Dank im Voraus,
Basti

von Max H. (hartl192)


Lesenswert?

derBasti schrieb:
> Ist es möglich, mit z.B. 8 74hc595 die am Ausgang jeweils z.B. einen
> BC337 durchsteuern und 8 Mosfets, oder sogar einem ULN2803 zu bauen?
Ja, ist möglich.

derBasti schrieb:
> Was ist ein passender (logiclevel?)-Mosfet für einen 8x8x8-Würfel mit
> blauen LEDs?
IRLML2244

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ derBasti (Gast)

>Transistoren für die Kathoden verwenden. Wieso multiplext man nicht die
>Kathoden z.B. mit 8x ULN2803 und nimmt 8 Mosfets für die Anoden?

Weil der gute ULN nicht so viel Strom schalten kann wie MOSFETs. Siehe 
LED-Matrix.

>Auch fällt mir immer wieder auf, dass oft der 74hc575 benutzt wird, aber
>so so gut wie nie ein z.B. 74HC595.

Sehe ich genau anders herum ;-)

>Wieso finde ich da nichts drüber?

Weil du falsch suchst.

von Max H. (hartl192)


Lesenswert?

>74hc575
Gibt es dazu ein Datenblatt? Habe keines gefunden.

Beispiel für einen 4x4x4 Cube:
http://www.mikrocontroller.net/attachment/200334/Cube.png

von derBasti (Gast)


Lesenswert?

Max H. schrieb:
> Gibt es dazu ein Datenblatt? Habe keines gefunden.

Sorry, da hab ich mist gebaut - muss natürlich 74hc573 heißen, hab da 
irgendwie einen Fehler im Kopf gehabt...

> Beispiel für einen 4x4x4 Cube
Jepp - das ist genau so, wie ich mir das gedacht hab. Funktioniert das? 
Gibts es Nachteile gegenüber anderen Lösungen?

von Max H. (hartl192)


Lesenswert?

Die 74HC573 kann man parallel laden, also schneller wie über SPI. 
Abhängig von der gewünschten Framerate, kannst du auch den 595 
verwenden. Sollte das SPI mit nur 1MHz laufen, brauchst du 72µs pro 
Layer, also 576µs für ein ganzes Bild. Also vermutlich schnell genug für 
deinen Cube.

derBasti schrieb:
> Funktioniert das?
Sollte funktionieren. Du widerstände wirst du noch berechnen müssen. Ich 
habe als ich den Schaltplan angefertigt habe einfach irgendwas genommen.

: Bearbeitet durch User
von derBasti (Gast)


Lesenswert?

Gibt es den IRLML2244 auch ein bisschen Bastelfreundlich als z.B. 
TO220-Version? Ist das ein N- oder ein P-Channel Mosfet? Im Datenblatt 
steht ich da nix darüber. Ich mutmaße, dass es ein P-Channel ist, da 
z.B. Vds mit negativem Wert angegeben ist...

Der oben benutzte DMP2035U ist ein P-Channel (laut dem oberen Schema) - 
allerdings auch nur im SOT23 Gehäuse verfügbar und in Deutschland fast 
nicht zu bekommen...

Für die Zukunft: Wonach muss ich suchen, wenn ich einen derartigen 
Mosfet suche?

Ich weiß, ich stell mich saublöd an und stelle die unmöglichsten Fragen, 
vergebt mir nochmals.

von Max H. (hartl192)


Lesenswert?

derBasti schrieb:
> Gibt es den IRLML2244 auch ein bisschen Bastelfreundlich
SOT-23 kann man Problemlos auch auf Lochraster löten, ist also (wie z.B. 
auch 1206 und 0805) nicht "Bastlerfeindlich":
http://www.mikrocontroller.net/attachment/207229/Sot23.png
Ich kenne keinen LogL P-Fet in THT (heiß nicht, dass es keinen gibt).

derBasti schrieb:
> Ich mutmaße, dass es ein P-Channel ist, da
> z.B. Vds mit negativem Wert angegeben ist...
Richtig

derBasti schrieb:
> Der oben benutzte DMP2035U
kann Problemlost durch einen anderen LogL P-Fet ersetzt werden.

derBasti schrieb:
> Für die Zukunft: Wonach muss ich suchen, wenn ich einen derartigen
> Mosfet suche?
Ich finde sie meist mit der parametrischen suche meines 
Bauteilehändlers.

: Bearbeitet durch User
von derBasti (Gast)


Lesenswert?

@Max und Falk: Vielen Dank für die Antworten. Ihr habt mir sehr 
geholfen. Dann werd ich mir jetzt ein paar Mosfets besorgen und dann mal 
loslegen - bin schon auf den magischen Rauch gespannt, der anscheindend 
nie ausbleibt bei Anfängern ;)


Achja, wenn ich eh einkaufen: welche Werte für Elkos und Kondensatoren 
sollte ich mir gleich mal auf Lager legen? Und sollte ich eher zu 
Keramikkondensatoren oder Tantalkondensatoren greifen? Anwendungsbereich 
sollten Entkopplungskondensatoren und Stützkondensatoren sein, keine 
Analogsachen.

Welche Werte braucht man häufiger? Was kauft man außerdem immer gerne 
mit? Ich ärgere mich immer, wenn ich Bauteile für 1.30€ kaufe und 5€ 
versand zahlen muss...

Gruß
Basti

von Max H. (hartl192)


Lesenswert?

derBasti schrieb:
> Entkopplungskondensatoren und Stützkondensatoren
100nF Keramik
Und eventuell noch ein größerer Alu-Elko um die Betriebsspannung der 
LEDs zu stützen.

derBasti schrieb:
> Ich ärgere mich immer, wenn ich Bauteile für 1.30€ kaufe und 5€
> versand zahlen muss...
Da bist du nicht der einzige.

von Max H. (hartl192)


Lesenswert?

Edit: Ich würde empfehlen die Bauteile erst zu bestellen, wenn der 
Schaltplan fertig ist.

von derBasti (Gast)


Lesenswert?

Max H. schrieb:
> Ich würde empfehlen die Bauteile erst zu bestellen, wenn der
> Schaltplan fertig ist.

Ja - das hab ich bereits bei den 30 uln2803 und den 30 74hc595 gemerkt 
;) Hab mir mal jeweils 20 THT und 10 SMD bestellt und wollte einfach mal 
darauflos basteln - bad idea ;)

Aber der positive Nebeneffekt bei dieser Aktion war, dass ich gelernt 
habe, dass hamstern bei Elektronikbastlereien durchaus Sinn macht. Den 
Cube bekomm ich dank eurer Hilfe auch mit den ULNs und den 
Schieberegistern hingebogen.

Der Vorteil ist, dass ich wirklich alles neu machen muss. 
Dementsprechend auch alles verstehen muss - Hardware, Software, Timings, 
Interupts, Couter etc, um das Rad neu zu erfinden.

Ich hab das Gefühl, dass in der Bastlerszene oft nach Schame F 
vorgegangen wird: einer hat eine Idee, setzt sie mehr schlecht als recht 
um, ein anderer sieht das im Internet und bastelt es nach. Er macht ein 
paar Modifikationen und stellt eine Anleitung online. Dann sehen viele 
Leute diese Anleitung und basteln das Punkt für Punkt nach. Wenn alles 
funktioniert, wird ohne nachzuddenken irgendwo im Internet eine 
Projektseite dazu erstellt und alle anderen schreiben davon ab... Ob die 
ursprüngliche Lösung nun gut, schlecht, teuer oder billig ist 
interessiert niemanden mehr. Es wird so gemacht, weil "alle es so 
machen"... Besonders gut sieht man es an Arduino-Projekten und 
Arduino-Foren:

Q: Wie mach ich XYZ?
A: User ABCD hat Projekt EFGH auch IJKL gepostet, schau es dir mal an.

Q: Wieso ist das so? Wieso macht der das so und nicht anders?

Dann gibt es 2 Möglichkeiten:

Möglichkeit A:
A: Das ist so, weil es funktioniert. Teil A macht das, Teil B tut jenes, 
kleb dir alles zusammen, lad dir die Software und staune Bauklötzchen, 
was passiert.

Möglichkeit B:
A: Es gibt tausend Wege das zu tun, aber dieser ist der Weg für 
Anfänger. Er funktioniert und ess gibt eine fertige Lib dazu - benutze 
die fertige Lib und staune Bauklötzchen!

Gelernt wurde bei beiden Möglichkeiten: nix!

Ich will verstehen, was da passiert und von klein auf anfangen.

Deshalb hab ich mir die ULNs gekauft (Darlington-Array, 500mA 
Belastbarkeit - bedachte naiverweise nicht, dass der Stromkreis aus 
gutem Grund "-Kreis" heißt ;) und ein paar 74hc595 (Schieberegister, 
kaskadierbar, 140mA Belastbarkeit, 15mA pro LED (gedrosselt über 
Vorwiderstand), 8 LEDs - könnte gerade noch so hinkommen...)

Inzwischen weiß ich mehr - ich hab ein paar Tests gemacht und doofe 
Fragen gestellt. Und viel gelernt. Irgendwann bin ich dann an dem Punkt, 
an dem ich Antworten geben kann. Antworten, die über "Das is halt so..." 
hinaus gehen.

von Max H. (hartl192)


Lesenswert?

derBasti schrieb:
> Ich will verstehen, was da passiert und von klein auf anfangen.
Die Einstellung gefällt mir... Geht mir auch so. Ich sehe mir deshalb 
oft von C-Programmen das Dissasembly Listing an und schreibe lieber 
Bibliotheken selbst, als sie irgendwo runterzuladen.
Meiner Meinung nach ist das Erfolgserlebnis am Ende ist größer, wenn man 
alles selbst macht und nicht nur "Bauklötzchen" zusammenfügt...

Wenn du 8 LEDs übrig hast, könntest du das Multiplexing ausprobieren, 
indem die einen kleinen 2*2*2 Cube direkt (mit Vorwiderständen 
natürlich), ohne 74HC595 und ULNs an den µC anschließt.

derBasti schrieb:
> 15mA pro LED
Beim 1:8 Multiplexing, ist jede LED nur 1/8 der Zeit ein. Wenn die LED 
mit 15mA gepulst betrieben wird, ist sie also so hell, wie eine die mit 
konstanten 1.875mA betrieben wird.

Aus Interesse: Hat du schon einen µC ausgewählt? Wenn ja, welchen?

von derBasti (Gast)


Lesenswert?

Max H. schrieb:
> Beim 1:8 Multiplexing, ist jede LED nur 1/8 der Zeit ein. Wenn die LED
> mit 15mA gepulst betrieben wird, ist sie also so hell, wie eine die mit
> konstanten 1.875mA betrieben wird.
Das ist eines der Dinge, die ich inzwischen gelernt hab ;)

> Aus Interesse: Hat du schon einen µC ausgewählt? Wenn ja, welchen?
Ich schwanke noch und wollte mich nicht richtig festlegen. Ich hab ein 
paar MSP430 hier (G und F's), ein paar 8-Bit PICs (12C, 12F, 16F) und 
die obligatorischen 8-Bit AVRs (ATTiny 84, 23, 2321, ATMega 8, 32, 328, 
1284) hier. Das ziel soll sein, den gesamten aufbau auf allen Chips zu 
probieren - und zu sehen, wo die Fallstricke sind.

Momentan such ich mir noch nen Wolf an den P-Channel logiclevel-MosFETs 
- bei Conrad :(. Conrad deshalb, weil ich morgen eh in Schwentinental 
(bei Kiel) wäre und es da dirkt in der Fillale abholen könnte...

von derBasti (Gast)


Lesenswert?

EDIT: Attiny 13 & 2313 natürlich... diese ganzen Zahlen machen mich 
kirre. Ich versteh auch noch nicht immer, wie sich die zahlen herleiten. 
Oft ist es nur die Baureihe, manchmal etwas konplett anderes - alle 
Hersteller scheinen da ihr eigenes Süppchen zu kochen.

von derBasti (Gast)


Lesenswert?

Noch eine Frage bezüglich des Multiplexings: Ich würde jetzt jeder Reihe 
(oder Zeile oder Spalte - nennt es wie ihr wollt - siehe 
http://www.mikrocontroller.net/attachment/200334/Cube.png) einen 
Vorwiderstand von 33 Ohm spendieren.

Bei 1:8 Multiplexing gibt das einen Strom von knapp 60 mA bei (ca.) 3.2V 
- ich hab das mit dem Atmega ohne Shiftregister, einem Transistor in 
Emitterschaltung und einem 33Ohm Vorwiderstand vor der LED die letzten 5 
Stunden ausprobiert. Der Duty-cycle war 12,5% (1:8) mit einer Frequenz 
von keine Ahnung, ich hab einfach ein _delay_ms(10) benutzt davor ein, 
danach ausgeschaltet und hochgezählt. Später soll das natürlich über 
einen Timer im Interrupt laufen.

Die Helligkeit würde mir vollkommen ausreichen und die LEDs (3x jeweils 
über eine Stunde getestet mit drei verschiednen LED-Chargen - ich weiß, 
keine empirischen Daten ;-) ) funktionieren anscheinend anstandslos. 
Kann ich also bedenkenlos einen Sack 33Ohm Widerstände kaufen, oder hab 
ich was übersehen?

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

derBasti schrieb:
> oder hab
> ich was übersehen?
Den Spannungsabfall am ULN2803 und am P-Fet:
-Der IRLML2244TRPbF hat Rds(on)54mΩ @ Vgs=-4.5V. Wenn alle LEDs einer
 Ebene eingeschaltet sind, fließen 8*8*60mA= 3.84A. Das ergibt einen
 Spannungsabfall von U=54mΩ*3.84A=207mV.
-Der ULN2803 hat eine Collector-emitter saturation voltag von ~0.75V @
 Ic=60mA.

Also ist Iled=(5V-0.207V-0.075V-3.2V)/33Ω = 25.5mA

: Bearbeitet durch User
von derBasti (Gast)


Lesenswert?

Ahh!!! Wieder was dazugelernt. Danke.

Also sollte ich einen Widerstand zwischen 12 und 15 Ohm wählen, um ~60mA 
zu bekommen?

Danke nochmals.

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.