Forum: Mikrocontroller und Digitale Elektronik LED cube 8x8x8


von Alex X. (dread)


Angehängte Dateien:

Lesenswert?

Hallo,
in meiner Freizeit habe ich mich mit dem Bau eines 8x8x8 LEDcubes 
beschäftigt. Klar, die Idee ist nicht neu. Dennoch möchte ich meine 
Ergebnisse (Dokumentation, Schaltplan, Layout, Software) der Community 
zur Verfügung stellen.

Kurze Beschreibung:
8x8x8 LEDcube mit blauen LEDs
Atemega32 mit Software in C
Konstantstromtreiber

pdf-Dokumentation: 
http://dreadnought.dr.ohost.de/LEDcube/LEDcubeProjektbeschreibung_v1.0.pdf
Schaltplan/Layout (Eagle): 
http://dreadnought.dr.ohost.de/LEDcube/EagleSteuerung.zip
Software (GNU license): 
http://dreadnought.dr.ohost.de/LEDcube/LEDcubeSoftware_v1.0.zip

Ein Video mit Animationen findet man bei youtube unter 
http://www.youtube.com/watch?v=M3699u0rYIs

Zum Led cube gibt es noch eine passende Stromversorgung (5V, 12W). Dabei 
handelt es sich um einen quasiresonanten Flyback mit 
valley-switching/valley-skipping und ausgangsseitiger 
Synchrongleichrichtung. Er erfüllt sichere Netztrennung nach DIN EN 
60065 und DIN EN 61558; leitungsgebundene und abgestrahlte Störungen 
nach DIN EN 55011 und Surgefestigkeit nach DIN EN 61000-4-5. Bauhöhe ist 
8mm (ohne Filter, 10mm mit Filter). Es gibt aber (noch) keine 
Dokumentation dazu.

Schaltplan/Layout (Eagle): 
http://dreadnought.dr.ohost.de/LEDcube/EagleFlyback.zip


Auch wenn das Projekt abgeschlossen ist, für konstruktive 
Verbesserungsmöglichkeiten bin ich offen. (Man will sich ja 
weiterentwickeln.) Natürlich auch für Fragen.

von Holger W. (holgerw)


Lesenswert?

einfach geil .. sehr schöne Effekte

von TS (Gast)


Lesenswert?

Ja, und hut ab für die Doku!

hier ein Link:

http://www.mikrocontroller.net/articles/LED_cube

hat geringfügig Ähnlichkeit :-)

TS

von TS (Gast)


Lesenswert?

...was mich mal interessieren würde: Sind es Bilder die nacheinander 
abgespielt werden?

Die Laufschrift zum beispiel könnte eine Funktion sein, die einen Buffer 
auf einen String übergeben bekommt, und spielt diesen dann ab. Oder ist 
es eine Funktion die eine Grafik übergeben bekommt und diese an den 3 
Seiten des Würfels ablaufen lässt? Diese erhält dann wiederum aus einem 
Zeichensatzspeicher die Information wie die Zeichen Aussehen, und der 
Zeichendatzspeicher erhält aus einem STring die Information welcher 
Buchstabe als nächstes kommt?

Die Softwarestruktur ist immer interessant.

Genauso wie die einzelnen Lämpchen die beim Bewegungsstart einer LED 
Ebene dann scheinbar wahllos stehen bleiben, Zufall? Wo und wann? Oder 
alles im Speicher festgelegt? Wie festgelegt?

Dann zum Schluss, dieser schwingende "Zuckerhut" oder Glockenform? Eine 
Form vorgegeben und eine Funktion die es bewegt, oder Bilder aus dem 
Speicher?

Bei dem zoomenden 3D Würfel, scheint es mir einfacher. Eine feste Ecke, 
und dann die Kantenlänge. Dann hätte ich im Speicher, min max - feste 
ecke (XYZ) zoomgeschwindigkeit? und dann würde man die feste Ecke 
wechseln und wieder loslegen? Oder sind es allegemeindere Funktionen, 
die alles Zoomen oder bewegen?

Gruß,
TS

von Juppi J. (juppiii)


Lesenswert?

Sehr gute Choreografie!

von Floh (Gast)


Lesenswert?

Ein Wort: Wahnsinnsdoku.

Mich würd dein IC fürs Flyback-Netzteil noch interessieren :-)

von Jens (Gast)


Lesenswert?


von Alex X. (dread)


Lesenswert?

Vielen Dank erst mal für die positive Resonanz von Allen.

TS schrieb:
> ...was mich mal interessieren würde: Sind es Bilder die nacheinander
> abgespielt werden?
Die kompletten Frames der Animationen einzeln abzuspeichern ist wegen 
der Speichergröße nicht möglich. Während ein Frame angezeigt wird, wird 
der nächste berechnet. Teilweise muss natürlich was im Flash abgelegt 
werden.

TS schrieb:
> Die Laufschrift
Die Buchstaben sind im Speicher abgelegt. Der Animationsfunktion 
übergebe ich einen String mit dem gewünschten Text. Die Funktion gibt 
die Buchstaben zeilenweise hinten aus und lässt den Würfelinhalt immer 
um eine Position rotieren.

TS schrieb:
> schwingende "Zuckerhut" oder Glockenform
Das ist die Funktion sin(t+sqrt(x^2+y^2)). Das will man auf dem ATmega 
aber natürlich nicht rechnen. Unter Ausnutzung von räumlicher und 
zeitlicher Symmetrie sind einzelne Daten abgespeichert, die dann 
zusammengesetzt werden.

Zu den Bewegungabläufen:
Die sind pseudo-zufällig. rand()-Funktion

Bei tieferem Interesse einfach mal in den Code reinschauen.

von Alex X. (dread)


Lesenswert?

Floh schrieb:
> Mich würd dein IC fürs Flyback-Netzteil noch interessieren :-)

TEA1522 von NXP

von Karol B. (johnpatcher)


Lesenswert?

Wahnsinn! Sehr schöne Doku, gut dokumentierter Quellcode - was will man 
mehr?

Darf man denn fragen wie lange dich das Ganze beschäftigt hat? Sowohl 
von der Hardware her, als auch die Software.

Gerade die Idee die Buchstaben "quer" zu speichern gefällt mir gut. Da 
wäre ich so schnell wohl nicht drauf gekommen ;). Hast du da eigentlich 
irgendwelche speziellen Werkzeuge (in Form von Software) verwendet, um 
dir die Bitmuster zu generieren? Oder hast du das wirklich per Hand 
eingehämmert?

Bin auch gerade am Basteln eines Cubes, beschränke mich zunächst aber 
auf 5x5x5, um ein wenig Erfahrung im Umgang mit den Materialien zu 
sammeln ;). Werde aber, sofern ich mal einen 8x8x8 Cube bauen sollte, 
auf dein Projekt zurück kommen.

Übrigens: Du solltest in Erwägung ziehen einen eigenen Artikel im Wiki 
zu erstellen. Der andere Artikel ist zwar auch schön und gut, aber 
deiner übertrifft das Ganze dann nochmals.

von Alois N. (alois)


Lesenswert?

Hallo Alex,

ich kann mich meinem Vorredner nur anschliessen.
Echt tolle Leistung von Dir ;-)

Könntest Du auch ein paar Bilder von der bestückten Platine hochladen?

Woher hast Du die Bauteile bezogen? Den MAX6968 habe ich nur auf 
Digi-Key gefunden.

Gruss Alois ;)

von Tobi D. (fanti)


Lesenswert?

Das ist der absolute Hammer!
Ich zolle dir großen Respekt für dieses Projekt.
Du machst keine halben Sachen, einfach genial.

von MaWin (Gast)


Lesenswert?

Das ist genau die Doku, die Stefan S. in
Beitrag "Tutorial 10x10x10 LED-Cube"
so vollmundig erstellen wollte.

Leider ist dein Cube nur für dunkle Zimmer geeignet,
weil ganz ohne Not statt 120mA Treibern wie CAT4016
oder PCA9626B
nur 35mA für 1/8 der Zeit, also 4.75mA, durch die LEDs
geschickt werden.

von Alex X. (dread)


Lesenswert?

Karol Babioch schrieb:
> Hast du da eigentlich
> irgendwelche speziellen Werkzeuge (in Form von Software) verwendet, um
> dir die Bitmuster zu generieren? Oder hast du das wirklich per Hand
> eingehämmert?

Ein kariertes Papier und Bleistift für Skizzen reichten mir, um sich zu 
überlegen, welche Operationen durchgeführt werden müssen. Lediglich bei 
der sin(t+sqrt(x^2+y^2) Animation habe ich zusätzlich Matlab benutzt um 
es vorab zu simulieren.


Alois Neumann schrieb:
> Woher hast Du die Bauteile bezogen? Den MAX6968 habe ich nur auf
> Digi-Key gefunden.

Die Bauteile für die Steuerung habe ich bei Farnell bestellt, die Teile 
für den Flyback bei Mouser. Den MAX6968 gibt es aber anscheinend bei 
Farnell nicht mehr, Mouser hat ihn aber noch im Programm.


MaWin schrieb:
> nur 35mA für 1/8 der Zeit, also 4.75mA, durch die LEDs
> geschickt werden.

Der von mir benutzte Treiber kann maximal 55mA pro Kanal. ich habe mich 
dennoch für "nur" 33mA pro LED entschieden. Vorab habe ich das ganze mit 
verschiedenen Strömen getestet und für meine Belange war das 
ausreichend. Sind trotzdem 6,7W LED-leistung. Aber Du hast natürlich 
recht, wer mehr Leistung will/braucht, sollte einen Treiber für höhere 
Ströme wählen.

von Unlucky2012 (Gast)


Lesenswert?

Ich habe noch eine kurze Frage zum Quellcode. Wieso ziehst du beim 
Berechnen der Werte für die Interrupts jeweils 1 ab, z.B. bei folgender 
Berechnung:
1
#define OCR2value ((F_CPU/(F_Refresh * 8 * 128)) - 1)

8 dürfte ja für die Anzahl der Zeilen stehen und 128 ist der Vorteiler. 
Da es sich bei allen um Ganzzahlen handelt, müsste doch der "Rest" 
sowieso abgeschnitten werden?

Übrigens: Du solltest Konstanten vielleicht immer komplett groß 
schreiben, also z.B. F_REFRESH.

von Alex X. (dread)


Lesenswert?

Unlucky2012 schrieb:
> Ich habe noch eine kurze Frage zum Quellcode. Wieso ziehst du beim
> Berechnen der Werte für die Interrupts jeweils 1 ab, z.B. bei folgender
> Berechnung:
> #define OCR2value ((F_CPU/(F_Refresh  8  128)) - 1)

Für die Bildwiederholfrequenz benutze ich den Timer2 im CTC-Mode. Gemäß 
Datenblatt berechnet sich die Frequenz zu
f_OC = f_CPU / (2*N*(1+OCR))
Daher der Offset von -1 beim Umstellen.

Unlucky2012 schrieb:
> Übrigens: Du solltest Konstanten vielleicht immer komplett groß
> schreiben, also z.B. F_REFRESH.
Gebe ich Dir Recht, habe ich nicht konsequent durchgezogen.

von dummeFrage (Gast)


Lesenswert?

Alex X. schrieb:
> Zum Led cube gibt es noch eine passende Stromversorgung (5V, 12W). Dabei
> handelt es sich um einen quasiresonanten Flyback mit
> valley-switching/valley-skipping und ausgangsseitiger
> Synchrongleichrichtung. Er erfüllt sichere Netztrennung nach DIN EN
> 60065 und DIN EN 61558; leitungsgebundene und abgestrahlte Störungen
> nach DIN EN 55011 und Surgefestigkeit nach DIN EN 61000-4-5. Bauhöhe ist
> 8mm (ohne Filter, 10mm mit Filter). Es gibt aber (noch) keine
> Dokumentation dazu.

Wie hast du die ganzen DIN normen geprüft? Tolle Doku!

von Unlucky2012 (Gast)


Lesenswert?

Übrigens müsste das PWM "fehlerhaft" sein. Du verwendest ja zwei 
verschiedene Timer für die Bildwiederholungsfrequenz und das PWM. Ohne 
weitere Vorkehrungen laufen diese "asynchron".

Das heißt es gibt keine Garantie, dass die LEDs, die du ein- und 
ausschaltest auch diejenigen sind, die du ein- und ausschalten willst.

Ich habe das eben durchgerechnet: OCR2value beträgt bei deinen Angaben 
(16 MHz, 100 Hz Refreshrate) 155, während OCR0 255 beträgt.

Eine (vielleicht) einfach zu implementierende Lösung wäre es nur einen 
Timer für die beiden Funktionen zu benutzen.

von Alex X. (dread)


Lesenswert?

dummeFrage schrieb:
> Wie hast du die ganzen DIN normen geprüft?

Ich habe sowohl Zugang zu den DIN Normen, als auch Zugang zum nötigen 
Equipment um deren Einhaltung zu überprüfen.


Unlucky2012 schrieb:
> Übrigens müsste das PWM "fehlerhaft" sein. Du verwendest ja zwei
> verschiedene Timer für die Bildwiederholungsfrequenz und das PWM. Ohne
> weitere Vorkehrungen laufen diese "asynchron".

Richtig, dass ist nicht optimal gelöst. PWM-Dimmen war ursprünglich gar 
nicht vorgesehen, sondern wurde nachträglich noch schnell 
"reingebastelt". Eine Ebene wird für 1.25ms angezeigt, die PWM fürs 
Dimmen läuft auf 7800kHz. Das sind nur ca. 10PWM-Zyklen pro Ebene, 
eigentlich zu wenig mit der Asynchronität. Die eine Ebene würde im worst 
case die on-Zeit des letzten PWM-Zyklus bekommen, während die nächste 
dann die restliche Off-Zeit bekommt. Eine Schwebung in der Helligkeit 
der einzelnen Ebenen könnte entstehen, wenn man Glück hat mittelt es 
sich raus.
Ich habe jetzt nur eine Animation mit Dimming, wo die Helligkeit 
durchgesweept wird. Da fällt nichts auf.
Wer es also vernünftig machen will, wie Unlucky2012 schrieb, 1 Timer 
benutzen oder halt beide Timer synchron laufen lassen.

von Unlucky2012 (Gast)


Lesenswert?

Alex X. schrieb:
> Für die Bildwiederholfrequenz benutze ich den Timer2 im CTC-Mode. Gemäß
> Datenblatt berechnet sich die Frequenz zu
> f_OC = f_CPU / (2*N*(1+OCR))
> Daher der Offset von -1 beim Umstellen.
Wo ist eigentlich die "2" beim Umstellen hin ;)?

von Unlucky2012 (Gast)


Lesenswert?

Übrigens ist mir noch ein Kritikpunkt aufgefallen. Ich habe mich mit der 
Doppel- und Dreifachpufferung auseinandergesetzt. Du verwendest ja eine 
Doppelpufferung. Nur fehlt bei dir die Synchronisierung zwischen der 
Darstellung und der Markierung, dass das Bild jetzt fertig ist. Du 
markierst ja ein Bild als "ready" und der nächste Timer1 Interrupt 
wechselt dann die beiden Puffer, unabhängig davon wo sich die Anzeige 
gerade befindet.

Dabei kommt es (zumindest theoretisch) zum Tearing, d.h. es wird ein 
Teil des "alten" wie auch vom "neuen" Bild dargestellt. Im Video sieht 
man diesen Effekt nicht. Ich nehme an, dass du "live" auch nichts davon 
bemerkst, oder? Ich denke das wird wohl auch durch das Multiplexing 
abgemildert, da du ohnehin mit 100 Hz arbeitest.

Denn es dürfte recht schwierig werden das in den Griff zu bekommen, da 
man beide Interrupts in irgendeiner Form synchronisieren müsste ohne es 
zu sehr zu blockieren.

von Alex X. (dread)


Lesenswert?

Unlucky2012 schrieb:
> Wo ist eigentlich die "2" beim Umstellen hin ;)?

Die Formel im Datenblatt gibt die waveform frequency an (Ausgang toggelt 
bei compare match). Ich benutze den Interrupt beim Compare Match für 
konstante Zeiten. Deshalb nochmal der Faktor 2.

Unlucky2012 schrieb:
> Du markierst ja ein Bild als "ready" und der nächste Timer1 Interrupt
> wechselt dann die beiden Puffer, unabhängig davon wo sich die Anzeige
> gerade befindet.
> Dabei kommt es (zumindest theoretisch) zum Tearing, d.h. es wird ein
> Teil des "alten" wie auch vom "neuen" Bild dargestellt.

Stimmt, war mir vorher noch gar nicht so bewusst. Danke für den Hinweis.

Unlucky2012 schrieb:
> Im Video sieht
> man diesen Effekt nicht. Ich nehme an, dass du "live" auch nichts davon
> bemerkst, oder? Ich denke das wird wohl auch durch das Multiplexing
> abgemildert, da du ohnehin mit 100 Hz arbeitest.

Live ist mir auch noch nichts aufgefallen.

Unlucky2012 schrieb:
> Denn es dürfte recht schwierig werden das in den Griff zu bekommen, da
> man beide Interrupts in irgendeiner Form synchronisieren müsste ohne es
> zu sehr zu blockieren.

Ich könnte erst die Verweise tauschen, wenn nicht nur das Flag auf ready 
steht, sondern auch der Ebenenzähler auf 8 (=letzte Ebene). Dann würde 
kein Tearing auftreten, aber ich erhalte einen leichten Jitter in der 
Bildrate. Bei Bildraten in der Größenordnung der Bildwiederholfrequenz 
wären dann hier wieder Probleme.
Solange man nichts sieht, lasse ich es mal so. Ansonsten könnte man noch 
die Bildwiederholfrequenz hochsetzen um den Effekt zu minimieren.

von Unlucky2012 (Gast)


Lesenswert?

Alex X. schrieb:
> Die Formel im Datenblatt gibt die waveform frequency an (Ausgang toggelt
> bei compare match). Ich benutze den Interrupt beim Compare Match für
> konstante Zeiten. Deshalb nochmal der Faktor 2.
Dann kann man sich nach meinem bescheidenen mathematischen Verständnis 
auch die "-1" sparen. Die ist ja dann nur da, um zu verhindern, dass 
keine "halbe" Welle (sprich nur ein Toggle) mit reinkommt.

Alex X. schrieb:
> Ich könnte erst die Verweise tauschen, wenn nicht nur das Flag auf ready
> steht, sondern auch der Ebenenzähler auf 8 (=letzte Ebene).
Das entspräche dann gewissermaßen dem "VSync", siehe hier 
(https://de.wikipedia.org/wiki/Doppelpufferung) und hier 
(https://de.wikipedia.org/wiki/VSync).

Einen Jitter dürfte es aber nicht geben. Es sind dann halt nicht mehr 
alle Frameraten möglich bzw. sinnvoll. Im "schlimmsten" Fall befindet 
sich das Multiplexing dann in Ebene 1 und muss warten bis Ebene 8 fertig 
dargestellt ist. Erst dann kann der Wechsel erfolgen. Dadurch verzögert 
sich der Wechsel und es gibt effektiv weniger Bilder pro Sekunde. Die 
einzelnen Ebenen müssten aber nach wie vor gleichmäßig beleuchtet sein.

Problem dürfte sein, dass es dann dazu kommen könnte, dass der zweite 
Framebuffer befüllt ist und noch kein Tausch stattgefunden hat. Dann 
kann nicht weiter gerechnet werden. Die Interrupts treffen aber nach wie 
vor ein und "verschwenden" ein paar Zyklen. Dem könnte man mit der 
Dreifachpufferung (https://de.wikipedia.org/wiki/Dreifachpufferung) 
entgegenwirken ;).

von Chris (Gast)


Lesenswert?

Kannst du mal ein Video hochladen wo du den Würfel im hellen am laufen 
hast?

von Thomas25 (Gast)


Lesenswert?

Hallo Alexander,
wir sind gerade dabei auch so einen 8x8x8 led cube zu bauen nach deiner 
Anleitung.
Unser Problem ist wir bekommen die daten nich auf unseren atmega 32. wir 
haben schon so viel ausprobiert , könntest du uns dein geheimniss 
verraten

von Hendrik (Gast)


Lesenswert?

Moin,
In der berufschule haben wir eine projektarbeit daher würde ich gern mit 
dir sprechen wenn es für dich in ordnnung wäre.
wir sind zu zweit und wollen einen 8x8x8 cube nachbauen daher haben wir 
viele fragen wäre nett wenn wir kontakt aufnehmen können.

von Felix G. (felixg)


Lesenswert?

Von mir auch ein dickes Lob.

Wenn jemand, gerade wie ich, in der Situation ist die Bauteile bestellen 
zu wollen und merkt, dass der MAX6968 bei mouser und digikey nur ab 
einer Bestellmenge >2500 Stk. zu erwerben ist, den empfehle ich den 
TLC5916-PW. Der hat genau das gleiche Pinout und Gehäuse ohne das Pad 
auf der Unterseite. Macht sich sehr gut, wenn man das Layout vom TO 
nutzen will oder wie ich schon ein eigenes Layout erstellt hat.

Dazu kommt noch, dass der Treiber mehr Strom für jeden Ausgang 
bereitstellt.

Schöne Woche noch!

von Kevin S. (Gast)


Lesenswert?

Hallo zusammen,

ich bin schon seit einiger Zeit auf der Suche nach einer guten Anleitung 
und Code für einen LED Cube und habe mich dann schlußendlich für diese 
gute Doku entschieden.
Mir ist jedoch noch nicht klar, wofür der "EXT."-Anschluß genutzt wird. 
Für die Programmierung des ATMega32 ist ja der "SPI" da.

Ich wäre euch dankbar, wenn mir jemand dabei behilflich sein könnte. :)

von Felix G. (felixg)


Lesenswert?

Guten Morgen, wie gesagt bastel ich auch grad an meinem Würfel. Der 
externe Anschluss wird wohl für Erweiterungsmöglichkeiten mit 
rausgezogen worden sein. Wären ja weggeworfene Pins, wenn man die 
einfach offen lässt.

Welche Art von Hilfe benötigst du denn?

Grüße

von Kevin S. (Gast)


Lesenswert?

Hi.

Ich konnte halt mit dem externen Anschluss nichts genaues Anfangen.
Mein größtes Problem ist derzeit nur, dass ich den nach einer anderen 
Anleitung versucht habe, einen LED Würfel zu bauen. Leider funktioniert 
meine Platine dafür nicht richtig. Und bei dem war es so, dass alle 
Kathoden einer Ebene miteinander verbunden wurden. Und bei diesem Cube 
sind es ja nun halt die Anoden. Den reinen Würfel mit den 512 LEDs habe 
ich nun schon.

Nun habe ich überlegt, ob ich mir wieder neue LEDs kaufe und komplett 
bei Null anfange, oder diese Platine mit Transistoren anpasse (also die 
Pole invertiere). Schließlich hat das Löten der LEDs am meisten Zeit 
benötigt und 512 LEDs sind nicht gerade günstig. Nur habe ich bei der 2. 
Variante die Bedenken, dass diese Änderungen halt dafür sorgen, dass der 
Würfel nicht mehr astrein funktioniert (z.B. Reaktionszeiten, aber so 
genau kenne ich mich damit nicht aus).

Habt ihr Tipps?

von Felix G. (felixg)


Lesenswert?

Ist das zufällig diese Anleitung?
http://www.instructables.com/id/Led-Cube-8x8x8/6/?lang=de

Falls nicht kannst du dort mal kucken.

Vllt. versuchst du auch erstmal zu analysieren, wo direkt der Fehler bei 
deiner Platine ist, bevor du einen neuen Würfel baust.

von Kevin S. (Gast)


Lesenswert?

Nein, es war dieser:
http://www.mikrocontroller.net/articles/LED_cube

Die Platine habe ich schon überprüft. Hatte zu Anfang auch einige 
ungewollte Lötbrücken gefunden und beseitigt. Mehr konnte ich danach dan 
nnicht mehr ausfindig machen. Mein Würfel leuchtet zwar, es sind aber 
keine von den vorgegebenen Animationen zu erkennen. Außerdem scheint mir 
die Umsetzung mit LED-Treibern logischer zu sein, als mit Latches.

Danke für die Seite.
Auf Instructables war ich auch schon, doch muss ich zugeben, dass das 
alles zu viel Englisch für mich war. Zwar bin ich der englischen Sprache 
durchaus mächtig, nur war es mir zu heikel, eine komplette Anleitung 
danach zu befolgen. Zudem ist der Code von Alex auf deutsch kommentiert, 
sodass man genau weiß, wie das ergebnis ausschauen soll.

von Cyblord -. (cyblord)


Lesenswert?

Felix Grund schrieb:
> Von mir auch ein dickes Lob.
>
> Wenn jemand, gerade wie ich, in der Situation ist die Bauteile bestellen
> zu wollen und merkt, dass der MAX6968 bei mouser und digikey nur ab
> einer Bestellmenge >2500 Stk. zu erwerben ist,

Sagmal kiffst du zuviel?
Der MAX6968 ist ab 1 Stück bei digikey erhältlich:
http://www.digikey.de/product-detail/de/MAX6968APE%2B/MAX6968APE%2B-ND/1512996

gruß cyblord

von Felix G. (felixg)


Lesenswert?

Dann kuck dir doch das mal an.
http://www.digikey.de/product-detail/de/MAX6968AUE%2BT/MAX6968AUE%2BT-ND/1519306

Dazu hatte ich mich auch auf das Layout vom TO bezogen und er nimmt nun 
mal die SMD-Variante und nicht DIP.

@Kevin: Das beide Varianten funktionieren kannst du ja sehen. Wenn du 
den Fehler bei deiner Platine bzw. vlt. auch in der Software nicht 
finden kannst/willst, dann würd ich dir eher raten einen neuen Cube zu 
bauen bevor du wild irgendwelche Transistoren einbaust. Gleiches Problem 
hatten wir schon mal

Beitrag "Led Cube 8x8x8 inventieren"

von Cyblord -. (cyblord)


Lesenswert?

Felix Grund schrieb:
> Dann kuck dir doch das mal an.
> http://www.digikey.de/product-detail/de/MAX6968AUE%2BT/MAX6968AUE%2BT-ND/1519306

Aha, weil es auch 2500er Packungen gibt, kann man nur diese bestellen? 
Interessant.
>
> Dazu hatte ich mich auch auf das Layout vom TO bezogen und er nimmt nun
> mal die SMD-Variante und nicht DIP.

Die SMD Variante gibts ebenfalls ab 1 Stück vorrätig:
http://www.digikey.de/product-detail/de/MAX6968AAE%2B/MAX6968AAE%2B-ND/1513054

Lediglich wenn du die -AUE Variante mit Pad auf der Unterseite haben 
willst, die sind erst Mitte April wieder lieferbar. Gleiches gilt für 
dein 2500er Pack aber auch. Somit, einfach nicht vorrätig im Moment.

Trotzdem ist die Aussage mit den 2500 Stück kompletter Unsinn. Bitte 
erstmal richtig bei Digikey suchen lernen und nicht einfach 
irgendwelchen Quatsch behaupten. Am Ende glaubt das noch jemand.

Hier siehst du alle Varianten und Gebinde die es bei digikey davon gibt:
http://www.digikey.de/product-search/de?vendor=0&keywords=MAX6968


gruß cyblord

: Bearbeitet durch User
von Felix G. (felixg)


Lesenswert?

Okay, da hab ich mich wohl vertan. Vielen dank für die Aufklärung;)

von Kevin S. (Gast)


Lesenswert?

Ich danke dir Felix!

Ich werde mir demnächst die Teile beschaffen und dann anfangen.

von Kevin S. (Gast)


Lesenswert?

Hallo Leute!

Ich habe die Platine nun soweit fertig. Bin erstaunt, wie klein sie 
geworden ist.
Nun geht es jedoch an das Programmieren des Atmega. Hat jemand eine 
fertige .hex-Datei für mich? Da ich nämlich noch keinerlei Erfahrungen 
mit dem Kompilieren habe. Zudem habe ich auch keine passendes Makefile.

Gruß Kevin

von Kevin S. (kevins)


Lesenswert?

Hi zusammen,

ich habe mir jetzt von einem Bekannten eine passende Datei kompilieren 
lassen.
Alles ist jetzt komplett fertig. Leider musste ich feststellen, dass die 
Ausgänge an den Pins 1, 2 und 3 des Atmega (CLK, LE und OE für die 
Treiber) keinerlei Signal zu messen ist. Somit erhalte ich auch kein 
verwertbares Signal an den Treiberausgängen.
An allen anderen Ausgängen des Atmega zeigt mir das Oszilloskop saubere 
Rechtecksignale an.
Hat jemand eine Idee, wo das Problem liegen könnte?

Gruß Kevin

von Felix G. (felixg)


Lesenswert?

Hat dein Bekannter den Code kompiliert, den der TO reingestellt hat? 
Falls ja muss OE auf jedenfall auf PIN4, da er hier die Hardware-PWM 
nutzt und die bei PIN4 (PB3/OC0) ausgegeben wird. Bei den anderen beiden 
Signalen bin ich mir grad nicht sicher, wie das dort sein muss. Hab 
gerade den Code nicht vorliegen und der Link oben scheint auch tot zu 
sein.

Die anderen Ausgänge vom AtMega bringen plausible Werte?

Grüße Felix

von Stefan V. (vollmars)


Lesenswert?

Wozu sind denn die TC4469 Treiber drin?
Der ATmega sollte die MOSFETs doch locker schnell genug schalten können?

Gruß
Stefan

von Kevin S. (kevins)


Lesenswert?

Tatsache!
Habe Pin 3 durchtrennt und nun Pin 4 angeschlossen.
Funktioniert jetzt alles wunderbar.

Danke!

von Willi J. (hunter-willi)


Angehängte Dateien:

Lesenswert?

Servus, hoffe das ich hier richtig bin...

Ich möchte mir ein LED Cube bauen (Schaltplan in der Datei angehangen;
Quelle:
http://www.ledstyles.de/ftopic5912.html?highlight=...).

Allerdings möchte ich statt  ATTiny2313 ein Arduino uno
(http://arduino.cc/de/Main/ArduinoBoardUno) verwenden, welcher auf den 
entsprechenden PIn's max 5V und 40mA ausgibt.

Wenn ich dafür blaue LED's 3V 20mA verwende benötige ich somit einen
Widerstand mit 100 Ohm nach meiner Rechnung, für die max. Leistung der 
LED.
1. Frage stimmt das?

2. Frage woher weiß ich, was für ein was für einen Transistor ich
benötige und was für ein Widerstand der Widerstand haben muss(links
neben Transistor auf der Zeichnung)?

Danke für die Antworten.

von S. R. (svenska)


Lesenswert?

Bedenke, dass du einen Maximalstrom pro Pin und einen Maximalstrom 
gesamt hast. Außerdem sind "20 mA" vielleicht schon viel zu hell, hängt 
von der LED ab. Ausprobieren und entscheiden!

von Willi J. (hunter-willi)


Lesenswert?

Ja, kann durchaus sein. Würde erstmal einen größeren Widerstand nehmen. 
Bleibt dennnoch die Frage, was für ein Widerstand zur Schaltung des 
Transistors bzw. was für ein Transistor, auf welche Faktoren muss ich 
achten?

von Niko G (Gast)


Lesenswert?

Hallo, habe das Projekt erfolgreich nachgebaut und auch in Betrieb 
genommen.

Ich habe nur ein RIESEN Problem. Ich habe den Würfel nach einer anderen 
Anleitung gebaut und dannach Alexanders Programm angepasst und 
drübergebügelt.

Meine C-Erfahrungen bringen mich allerdings nicht bei meinem Problem 
weiter.

Da ich nach einer anderen Anleitung gebaut habe sind nun bei mir alle 
Animationen Spiegelverkehrt.
Eigentlich kein Problem, da die meisten ja eh nur Random oder Formen 
sind.

Nur der Text, der macht mir ziemliche Probleme.
Habe schon alle Buchstaben gespiegelt, diese werden nun korrekt 
angezeigt.

Wenn ich allerdings die TextBelt Funktion verwende läuft der Text von 
Links nach Rechts... das will ich auch gerne gedreht haben, nur leider 
keine Ahnung wie.

Ich vermute dass der Knackpunkt irgendwo in der "Rotate-Clockwise" 
Funktion in der Animations.c steckt...

bin für jegliche Hilfe dankbar!

von MaWin (Gast)


Lesenswert?

Du brauchst nur die Zuleitungen zu 2 Würfelebenen von 1..8 auf 8..1 zu 
verdrehen und alles passt.

von Niko G (Gast)


Lesenswert?

MaWin schrieb:
> Du brauchst nur die Zuleitungen zu 2 Würfelebenen von 1..8 auf
> 8..1 zu
> verdrehen und alles passt.

Hardwaremäßig oder Softwaremäßig?

von Karl H. (kbuchegg)


Lesenswert?

Niko G schrieb:
> MaWin schrieb:
>> Du brauchst nur die Zuleitungen zu 2 Würfelebenen von 1..8 auf
>> 8..1 zu
>> verdrehen und alles passt.
>
> Hardwaremäßig oder Softwaremäßig?

Wohl Hardwäremässig, wenn du es softwaremässig nicht hinkriegst.

von Karl H. (kbuchegg)


Lesenswert?

Niko G schrieb:

> Ich vermute dass der Knackpunkt irgendwo in der "Rotate-Clockwise"
> Funktion in der Animations.c steckt...

Ich denke, es hätte völlig gereicht, auf ganz unterer Ebene, sozusagen 
bei den Treibern, einfach die Ausgabereihenfolge der Bits zu verändern. 
Dann hättest du dir alle anderen Änderungen erspart.

Da ich aber an die Originalsource aus dem ersten Posting nicht mehr rann 
komme, lässt sich das schwer beurteilen. Aber in jeder derartigen 
Software gibt es typischerweise eine derartige Funktionalität. Müsste 
sich im Multiplex-Interrupt finden.

: Bearbeitet durch User
von Niko G (Gast)


Lesenswert?

> Ich denke, es hätte völlig gereicht, auf ganz unterer Ebene, sozusagen
> bei den Treibern, einfach die Ausgabereihenfolge der Bits zu verändern.
> Dann hättest du dir alle anderen Änderungen erspart.

dementsprechend einfach meine datenleitung von atmel von sag ich mal 1 
bis acht auf 8 bis 1 wechseln und das selbe am treiber selber auch noch 
mal alles drehen?

von Felix G. (felixg)


Lesenswert?

Ich glaub das gleiche problem hat ich auch, dass eine Seite 
spiegelverkehrt war und somit die Buchstaben pro Hälfte einmal von vorn 
nach hinten bzw. hinten nach vorn gewandert sind. Ich hab dann auch die 
Ledsäulen an den Treibern umgelötet. Also 1-8 einfach umdrehen auf 8-1 
für jede vertikale Ebene.

von Chefentwickler (Gast)


Lesenswert?

Thanks for the Information.

von Nico G. (social)


Lesenswert?

Hallo,

leider sind die links down? Hat die jemand noch?

Vielen Dank

Grüße
Social

von Alex X. (dread)



Lesenswert?

Hallo,

da die Links down sind lade ich die Dateien hier nochmals hoch.

von Tobias .. (bitfehler)


Lesenswert?

Hallo,

ebenfalls vielen Dank für die Dateien.
Könntest du die Dateien für den Flyback auch noch anhängen?

Vielen Dank

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo.
Ich habe ebenfalls den Würfel wie beschrieben nachgebaut. Also die 
gemeinsamen Anoden bilden die Ebenen. Den fertig gelöteten Ledcube habe 
ich durchgemessen und konnte keinen Fehler feststellen.
Als Mikrocontroller für die Steuerung verwende ich einen ATmega644p, der 
baugleich zu dem in der Beschreibung verwendeten Controller ist.
Ich verwende auch den von Alex hochgeladenen Code mit kleinen 
Anpassungen den Timerregistern betreffend.
Ich verwende auch den PB3-Pin zur PWM-Ansteuerung der Output-Enable-Pins 
der MAX6968 Treiber Chips.

Mein Problem ist jedoch, dass der Cube mit Start des Programms nicht 
mehr leuchtet. Woran kann das noch liegen?

Im Anhang befinden sich die Codeanpassungen sowie von mir getätigte 
Messungen mittels Logicanalyser.

LG und vorab schon danke für die Hilfe.

von Freddy A. (freddy_acosta)


Lesenswert?

ich habe das selbe Problem, allerdings, ich benutze die ATMega 2560 .
Hast du in der Zwischenzeit bereits eine Lösung?

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.