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.
Ja, und hut ab für die Doku! hier ein Link: http://www.mikrocontroller.net/articles/LED_cube hat geringfügig Ähnlichkeit :-) TS
...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
Ein Wort: Wahnsinnsdoku. Mich würd dein IC fürs Flyback-Netzteil noch interessieren :-)
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.
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.
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 ;)
Das ist der absolute Hammer! Ich zolle dir großen Respekt für dieses Projekt. Du machst keine halben Sachen, einfach genial.
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.
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.
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.
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.
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!
Ü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.
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.
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 ;)?
Ü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.
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.
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 ;).
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
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 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!
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. :)
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
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?
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.
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.
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
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"
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
Ich danke dir Felix! Ich werde mir demnächst die Teile beschaffen und dann anfangen.
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
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
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
Wozu sind denn die TC4469 Treiber drin? Der ATmega sollte die MOSFETs doch locker schnell genug schalten können? Gruß Stefan
Tatsache! Habe Pin 3 durchtrennt und nun Pin 4 angeschlossen. Funktioniert jetzt alles wunderbar. Danke!
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.
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!
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?
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!
Du brauchst nur die Zuleitungen zu 2 Würfelebenen von 1..8 auf 8..1 zu verdrehen und alles passt.
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?
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.
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
> 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?
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.
Hallo, ebenfalls vielen Dank für die Dateien. Könntest du die Dateien für den Flyback auch noch anhängen? Vielen Dank
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.