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