Forum: Mikrocontroller und Digitale Elektronik 4x4x4 led cube Masse/Potential Problem (Arduino Uno)


von hobo (Gast)


Lesenswert?

Hey, seit gestern zeigt mein led cube sehr seltsames Verhalten, obwohl 
er vorher ausgezeichnet hat und ich ihn zwischen durch nur kurz 
weggeräumt habe...

Der 4x4x4 cube wird mit einem arduino uno (atmega328) betrieben,  vor 
den Led-Spalten/Säulen sind Widerstände mit 100Ohm geschaltet. Die 
Ebenen sind direkt mit dem MC verbunden. Die 20 I/O Pins reichen genau 
aus, daher wurden keine Schieberegister oder ähnliches verwendet.

Gestern habe ich nun gesehen, dass eine Eck-Led in der untersten ebene 
nicht mehr leuchtede . Bin ich jedoch mit Masse und 5V direkt an die 
Beine der led gegangen, hat sie funktioniert. Habe mehrere Programme 
laufen lassen, alle anderen Leds der selben Spalte/Ebene funktionieren 
einwandfrei... nur wenn alle 4 ebenen gleichzeitig an sind, bleibt die 
komplette Spalte dunkel.
Außerdem ist mir aufgefallen, dass die untereste ebene leuchtet/aktiv 
ist, obwohl keine Verbindung zw. Ebene und I/O Pin besteht, was 
eigentlich garnicht funktionieren sollte(da offener Stromkreis). Dabei 
bleibt die Problem Led als einzige dunkel auf der unteren Ebene.
Teilweise funktionert die Led nach neuem anschliesen/ Programm start 
kurz zeitig, wird jedoch immer dunkler, bis sie garnicht mehr leuchtet.
Meine Vermutung: da die Leds durch einen Potentialunterschied zw. 
Spalte(high zum leuchten) und Ebene (low) gesteuert werden, entsteht an 
besagter led ein ungewollter Potentialunterschied bzw die Led wirkt als 
Masse ?!

Schon getestet/probiert(ohne erfolg):
- anderer Pin am MC
- neue led verlötet
- andere verbindungskabel/vorwiderstand etc
- habe auch die Verkabelung  mehrfach überprüft, aber da is alles 
isoliert.

Ich hoffe die Erklärungen sind nicht zu verwirend und ihr könnt mir 
helfen, da ich keine Ahnung habe wieso der Cube aufeinmal spinnt :(

Achja, ich programmier mittlerweile (um noch etwas zu lernen) mittels 
direktem ansprechen der Ports und Pins (zb PORTB = 0x01 und so) ka ob es 
da Zusammenhänge gibt

von elektrolutz (Gast)


Lesenswert?

Hallo hobo,

die Ports des Arduino sind ausgelegt auf einen maximalen Dauer-Strom von 
40mA.
Die 16 LED-Leitungen haben bei 100 Ohm LED-Vorwiderstand jeweils ca. 
20-30mA, je nach LED-Spannung.
Die Ports, an denen die 4 Ebenen direkt angeschlossen sind werden aber 
durchaus überlastet, denn die LED-Ströme der einge4schalteten LEDs in 
der jeweiligen Ebene addieren sich.
Da der Stromfluss durch das Multiplexen nicht konstant ist, verkraftet 
der Portausgang zwar etwas mehr, aber gesund ist das auf Dauer nicht und 
führt durchaus zu dem von Dir beobachteten Effekt.

Ich habe das so gelöst. 4 Stücke NPN-Transistor BC548 mit jeweils 100 
Ohm an die Ports angeschlossen, die Emitter an Masse und die Colektoren 
mit den 4 Ebenen verbunden.

Ich hoffe, Dein Proz hat noch keine Dauerschädigung!

Gruß elektrolutz

von hobo (Gast)


Lesenswert?

danke für deine hilfe :)
der Übeltäter ist mittlerweile gefunden, selbst die neu eingelötete LED 
muss irgendwie eine zu große Spannung abbekommen haben, denn sie hat am 
Ende garnicht mehr funktioniert, war durchlässig in beide Richtungen...

nun zu dem Problem mit dem zu hohen Strom...
Berechnung des Stromes einer einzelnen LED an einem Pin:
Spannung: 5v
Vorwiderstand: 100 Ohm
Dioden Flussspannung/Vorwärtsspannung: mit 3,02-3,11 V angegeben
I = (U - U_led)/R
I = ca 19mA

Da immer nur eine Ebene "aktiv" ist, sind maximal 16 leds an, also
I_gesamt = 300mA zulässig sind glaube ich 200-220mA, also noch im Rahmen 
so lange nicht ständig alle leds an sind...

die besagten 40mA sind aber maximal Werte für die Pins und werden nicht 
erreicht...

Jedoch habe ich mit einem digital Multimeter nur 8mA gemessen (nur eine 
led mit 100 Ohm Vorwiderstand auf breadbord)
Hat der MC schon Schäden davon getragen, oder warum ist der gemessene 
Storm so klein ?

noch eine Frage zu den Transistoren, was bedeutet

elektrolutz schrieb:
> an die Ports angeschlossen

die Basis eines Transistors muss doch mit einem Pin verbunden werden, 
oder nicht ?! steh da grad aufm schlauch ...

mfg hobo

von elektrolutz (Gast)


Lesenswert?

Hallo hobo,

die Vorwärtsspannung einer LED ist von der Farbe abhängig. Bei blauen 
LEDs liegt sie im Bereich 3 - 3,5 V, bei roten, grünen und gelben LEDs 
bei 1,8 - 2,5 V. Das findest Du im jeweiliegen Datenblatt.

Das mit dem Strom ist etwas tückisch. Der angegebene Durchlassstrom 
einer LED bezieht sich auf den Dauerstrom, der fließt, wenn die LED an 
eine konstante Stromquelle angeschlossen ist.
Bei der Cube-Ansteuerung werden die LEDs aber immer nur kurzzeitig 
eingeschaltet, das passiert aber so schnell, dass das Gehirn über das 
Auge das flackern nicht wahr nimmt. Also fließt der Storm auch nur in 
der Zeit, in der die jeweilige LED eingeschaltet ist, bei 
ausgeschalteter LED fließt auch kein Strom. Ein Messgerät ist aber 
genauso träge wird Gehirn und Auge, es zeigt nur den Effektivwert des 
gemessenen Stromes an. (Mit einem Oszilloskop könntest Du den wahren 
Stromverlauf betrachten und ermitteln.)

Bei PWM-Betrieb einer LED kann man den Durchlassstrom deutlich erhöhen, 
um die Leuchtstärke der LED nutzen zu können, dabei darf aber ein 
maximaler Strom nicht überschritten werden und auch die Verlustleistung 
der LED nicht überschritten werden. (Das nur als erweiterte Info.)

Die Portanschlüsse der Anoden-Leitungen der LEDs sind auch nicht 
kritisch. Dort fließ nur der Strom der jeweils eingeschlteten LED.
Gefahr besteht an den 4 Ports, an denen die Kathoden-Ebenen der LEDs 
angeschlossen sind. Wenn in einer Ebene alle 16 LEDs eingeschaltet sind, 
dann fließt durch jede LED ein Strom. Diese Ströme addieren sich im 
Portanschluss des Ebenen-Ports, bei 16 LEDs mit je 19mA macht das also 
304mA und das ist deutlich mehr als die zulässigen 40mA. Hier wirkt nun 
aber der Vorteil, dass die LEDs einer Ebene immer nur kurzzeitig 
eingeschaltet sind. Mess mal mit Deinem Multimeter den Strom in einer 
der Ebenen-Portleitungen.

Schau Dir mal dieses Scaltbild an: 
http://www.flickr.com/photos/knaka/4072693764/
Die beiden ICs 74HC595 denk Dir mal weg, die Widerstände sind ja direkt 
mit Deinem Arduino-Board verbunden.
Die jeweilige Basis der Transistoren wird über jeweils 1 Widerstand an 
einen Portausgang angeschlossen.
Und wichtig ist, wenn der Portausgang "HIGH" ist, wird der Transistor 
durchgesteuert und die LEDs der Ebene leuchten. Du musst also bei 
Verwendung der Transistoren die "LOW"- und "HIGH"-Ansteuerung der 
Ebenenports invertieren.

Da typischerweise bei einem animierten LED-Cube nur selten alle LEDs 
einer Ebene dauernd eingeschaltet sind, wird gerne und häufig auf die 
Transistoren verzichtet.

Gruß elektrolutz

von Andreas (Gast)


Lesenswert?

Hallo
ich wollte mich auch mal an so einen 4x4x4 LED-Cube wagen bin leider 
noch nicht so lange dabei und habe deshalb noch ein paar Probleme.
Also ich habe Stromlaufplan und Anleitung von folgender seite 
http://www.instructables.com/id/LED-Cube-4x4x4/?ALLSTEPS

Also meine erste frage ist wegen der Beschaltung der LED´s jeweils eine 
4er reihe liegt an einem der Port Pins an und gibt es da kein Problem 
mit der Spannung oder dem Strom ? Bzw. wie komme ich rechnerisch auf den 
wert ? (Tut mit leid für die Unwissenheit)
Ich würde nämlich gerne 3mm LED´s ultrahell, klar wie auch in der 
Beschreibung verwenden.
Weiterführend zu den Anschlüssen der Kathode zu dem Transistor. Und für 
was brauch ich den Crystal 14.7456 zwischen Pin 12 und 13 ? Um schnelle 
Hilfe würde ich mich sehr freuen.

von Tom (Gast)


Lesenswert?

Darf ich noch eine Kleinigkeit aus dem 1. Post kommentieren:

hobo schrieb:
> Bin ich jedoch mit Masse und 5V direkt an die
> Beine der led gegangen, hat sie funktioniert.

Das macht man einfach nicht, davon kann die LED auch kaputtgehen bzw. 
beschädigt werden. Immer mit Vorwiderstand. Mit ein paar hundert Ohm an 
5 Volt, macht man nichts falsch.

von elektrolutz (Gast)


Lesenswert?

Hallo Andreas,

eigentlich ist alles in der Beschreibung recht gut beschrieben.

Zu den LEDs: Die 4*4 LEDs der jeweiligen Ebene werden an den Kathoden 
verbunden und zusammen jeweils dem Kollektor eines Transistors 
zugeordnet. Die Anoden der jeweils übereinander liegenden LEDs werden 
verbunden und über einen Vorwiderstand an den Proz angeschlossen.

Funktionsablauf: Die 4 Transistoren werden über das Programm der Reihe 
nach einzeln angesteuert, das bedeutet, es ist immer nur eine Ebene mit 
den Kathoden auf Masse geschaltet. Die LED-Ausgänge am Proz, die zu 
diesem Zeitpunkt "high" sind, bringen die entsprechende LED der auf 
Masse geschalteten Ebene zum Leuchten. Besser gesagt, sie blinken, 
dieses aber so schnell, dass das Auge und das Gehirn das Blinken nicht 
mehr wahrnehmen können (wie bei einer Leuchtstoffröhre).

So fliesst also durch die Vorwiderstände immer nur der Strom für 1 LED, 
weil ja immer nur eine Ebene auf Masse geschaltet ist. Der Vorwiderstand 
der LED soll den Strom durch die LED begrenzen, damit diese nicht 
beschädigt wird. Hier muss nun gerechnet werden und man benötigt den 
zulässigen max. Dauer-Strom der Diode (typ. 20mA, bei lowcurrent-Dioden 
auch 2-4mA, zu finden im Datenblatt), sowie die Schwellespannung der 
Diode (zu finden im Datenblatt, denn die Höhe ist von der Farbe der LED 
abhängig).
Mit R=U/I ergibt sich R = (Ubatt - Udiode - Uce) / Idiode
R = Widerstand in Ohm
Ubatt = Versorungsspannung (5VDC)
Udiode = Schwellspannung der Diode (blau = ca. 3,5V)
Uce = Spannungsfall am Transistor (ist sehr klein und kann 
vernachlässigt werden)
Idiode = max. Diodenstrom (bei ultrahellen Dioden in der Regel 20mA)
R = (5V - 3,5V - 0V) / 20mA = 75 Ohm

Da nun die Dioden aber nicht dauernd eingeschaltet sind (bei 4 Ebenen 
also nur 25% der Laufzeit) kann man, um die Leuchtkraft der LED voll 
nutzen zu können, den Strom durch die LED problemlos verdoppeln oder 
auch verdreifachen. Wichtig: Es muss sicher sein, dass das Umschalten 
der LED-Ebenen auch wirklich funktioniert, das sonst die LEDs durch den 
zu hohen Dauerstrom beschädigt oder zerstört werden können.

Meine Erfahrung ist, bei ultrahellen LEDs reicht die Auslegung auf den 
normalen einfachen max. Dauerstrom aus, ohne große Rechnereien setze ich 
100 Ohm Widerstände ein und komme auf zufriedenstellende Ergebnisse. Die 
LEDs erreichen dabei zwar nicht die max. Leuchtstärke, blenden aber 
immer noch so stark, dass es in den Augen unangenehm ist. Je nach dem, 
wie preiswert / billig die LEDs eingekauft werden, macht es Sinn, sie 
auf Funktion und gleiche Leuchtkraft zu testen. Ideal dafür ist ein 
Steckbrett, für jede LED ein Vorwiderstand 100 Ohm und einige 
gleichzeitig an 5V anschließen und nun nach Helligkeit selektieren.

Der Quarz (Crystal) wird vom Prozessor benötigt und dient als 
Taktquelle. Der Proz taktete also mit 14.7456MHz (14,7456 Millionen mal 
pro Sekunde).

Gruß elektrolutz

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.