• home
  • about me
  • bears
  • contact
  • imprint
  • privacy notice
leider funktioniert die Tweet Anzeige nicht mehr seit einer doofen API Änderung :'(

OnlyMine

Kategorien

  • 3D Drucker (13)
  • Allgemein (37)
  • DIY (20)
  • Elektronik (64)
  • Hausbau (42)
  • Heizung (8)
  • Inspiration (17)
  • KNX (8)
  • Persönlich (14)
  • Schule (8)
  • SEO (1)
  • Sinnloses (30)
  • Studium (19)
  • Tutorials (10)

Archiv

  • Februar 2023
  • Oktober 2022
  • August 2022
  • Februar 2022
  • November 2021
  • Oktober 2021
  • September 2021
  • August 2021
  • Juli 2021
  • Februar 2021
  • Januar 2021
  • Dezember 2020

Links

  • Niedermeier.me
  • SKK Gerolzhofen
  • Frisöre Habelsberger
  • Zorin Industries
  • Ort der Musik

8x8x8 RGB LED Cube (5) – Programmierung

18. Februar, 2013 in: Elektronik, Sinnloses, Studium

Es geht weiter! Nach längerer Pause melde ich mich im neuen Jahr zurück 😉

Da ich derzeit mein Praxissemester mache, habe ich weniger Freizeit als sonst und musste einige Projekte etwas zurückstellen. In der Zwischenzeit konnte ich aber dennoch etwas weiter an meinem Würfel feilen.Der verwendete Arduino Mega 2560 besitzt als Herz wie fast jeder Arduino einen ATMega Mikrocontroller, diese können ohne Probleme mit AVR Studio in C programmiert werden, oder man nutzt die Arduino IDE für die Entwicklung. Diese hat die Vorteile von umfangreichen, frei verfügbaren Bibliotheken für alle möglichen Verwendungszwecke. Dies ist in sofern praktisch, da der verbaute LED Treiber, der TLC5940, etwas aufwändiger ist anzusteuern als z.B. ein einfaches LCD Display. Für die korrekte Funktion des TLCs ist es nötig, genau die Ablauf und Timingvorgaben einzuhalten, das nachfolgende Programming FlowChart von TexasInstruments kann dabei eine große Hilfe sein.

TLC5940 Programming Flow Chart

Oder man macht es sich einfach und verwendet eine fertige Bibliothek für den Arduino. Ich habe diese hier gewählt tlc5940arduino, für welche es sogar eine Multiplexing Version gibt. Nach ersten Tests mit der Library stellte ich fest, dass es zu nachleuchten der LEDs kommt. Ich verbaute also an jeder Anode einen Pull-Down Widerstand mit 1k Ohm um den Ausschaltstrom durch die LED zu minimieren, dies half tatsächlich etwas. Mein nächster Ansatz war die Interroupt Service Routine (ISR), die die LEDs multiplext, anzupassen. Ich brachte ein einfaches, aber kurzes, Delay zwischen den Umschaltevorgängen an und konnte so, dass Nachleuchten abstellen. Anschließend packte ich das Nachladen der Daten für die TLCs in die Delayphase und verkürzte das Delay noch auf ein Minimum.

Der erste Testlauf am Würfel verlief leider etwas anders als geplant. Im hinteren Bereich der 12 verbauten TLCs kam es zu deutlichen Fehlern, welche ich mir zunächst nicht erklären konnte. Die einzige logische Möglichkeit war, dass das Signal zu stark durch die TLCs verfälscht wird, da die Daten durch alle Bauteile in Serie durchgeschleift werden. Im Datenblatt wurde eine Verzögerung von max. 30ns + eine Rise/Falltime des Ausganges von je 16ns angegeben. Das Standard SPI Signal der Library wurde mit 8 MHz betrieben wurde, was eine Periodendauer von 125ns bedeutet sollte dies eigentlich sich noch im Rahmen bewegen. Da das Clocksignal Aufgrund meiner Verkabelung anderen Verschleifungen ausgesetzt war als das Datensignal verkürzte ich alle Kabel und verbaute die Platine fest im Sockel des Würfels, mit extrem kurzen Kabeln. Und tatsächlich konnte ich das Problem so beseitigen.

Da nun die Grundlegende Funktionalität vorhanden war, konnte ich mit der Programmierung des Würfels beginnen. Ich erstellte eine Testanimation und portierte ein paar Animationen von meinem einfarbigen Würfel. Ein Video über die bisherigen Funktionen werde ich im nächsten Artikel hochladen.

In der Zwischenzeit hat der Würfel auch schon ordentlich Staub angesetzt, aus diesem Grund habe ich schon Plexiglas samt Kleber geordert um ein Gehäuse für diesen zu bauen. Auch wurde er schon Opfer eines Unfalls, als von meinem Bluray Regal ein paar Filme auf ihn abstürzten, doch nun ist er wieder halbwegs gerade und eine kalte Lötstelle habe ich dabei auch noch gefunden 😉

Also im nächsten Artikel gibts Video und Arduino Code für den Nachbau 😉

 

 

← Vorheriger Beitrag Nächster Beitrag →

4 Kommentare zu “8x8x8 RGB LED Cube (5) – Programmierung”

  1. Michael Bertocco
    4. Juni 2013 um 23:42 Uhr

    Hallo Philipp,
    Ich habe Dein RGB-Cube Projekt bis hier hin aufmerksam verfolgt und wäre an weiterführenden Informationen interessiert, z.B: Deine Quellen in China, wie geht das ? schickst Du denen einen Schaltplan oder Layout ? in welchem Format ? Oder der TLC5940:
    der hat einen Minimumoutput von 5 mA, ich habe eine Matrix von 256 LC-LEDs die eigentlich nur 2 mA brauchen, das soll machbar sein, aber wie ?
    Ausserdem bin ich sehr gespannt wie es mit Deinem Cube weitergeht (ich hoffe das Projekt ist noch nicht gestorben !?)
    schöne Grüße Michael

    Antworten
    • philoepp
      5. Juni 2013 um 10:38 Uhr

      Hallo Michael,

      ich werde dir bei Gelegenheit eine Mail schreiben, aber um schonmal das nötigste zu beantworten schreibe ich es schnell hier. Die Platinen bestelle ich immer bei http://www.iteadstudio.com da gibts 10 Platinen 5cmx5cm für 9,90$ oder 10 Platinen 10cmx10cm für 24,90$. Es gibt noch mehr Anbieter die etwa gleiche Preise haben wie z.B. http://www.dfrobot.com. Den Schaltplan und das Layout erstelle ich mit Eagle (kostenlose Version auf 10cmx8cm Platinengröße beschränkt) und generiere am Ende die Gerber Daten, die ich dann nach China schicke. Die Gerber Daten sind quasi einzelne Dateien für jede Art von Layer wie Bohrungen, Kupfer Oben, Kupfer Unten Lötstop ect.
      Das der TLC5940 einen Minimumoutput hat, wusste ich bisher nicht. Habe gerade kurz im Datenblatt aber auch nichts dazu gefunden. Betreibst du die Matrix im Multiplex, wenn ja könntest du nachsehen ob deine LowCurrent LEDs einen höheren Pulsstrom vertragen, dann wäre das Problem ja quasi schon gelöst.

      Nein das Projekt ist noch nicht gestorben, der Würfel steht schon seit einigen Monaten bei mir rum, hat die ein oder andere Animation einprogrammiert bekommen aber nicht wirklich viele. Ich habe einfach vergessen nochmal darüber zu schreiben 😉

      Gruß,
      Philipp

      Antworten
  2. Wolf
    5. April 2017 um 12:32 Uhr

    Hallo,
    wirklich erfrischend deine direkte und ausführliche, leicht zu verfolgende Art deine Arbeit zu dokumentieren. Muss doch mal geschrieben werden. Finden sich irgendwo Teile des Quellcodes, um dort die Gedanken nachvollziehen zu können?
    🙂
    Wolf

    Antworten
    • philoepp
      19. April 2017 um 12:31 Uhr

      Hallo Wolf,
      vielen Dank für die Blumen, jetzt wo du es schreibst, habe ich wohl damals tatsächlich vergessen das Ergebnis zu präsentieren 😀
      Muss ich heraussuchen den Quellcode und ein Video vom Endergebnis könnte ich auch mal erstellen und einstellen 🙂
      Gruß
      Philipp

      Antworten

Schreibe einen Kommentar

Hier klicken, um die Antwort abzubrechen.

Felder die benötigt werden sind mit * markiert.
Nach oben!
5550
Impressum
Niedermeier.me
Ich bei Facebook
Diese Website verwendet Cookies. Indem Sie weiter auf dieser Website navigieren, ohne die Cookie-Einstellungen Ihres Internet Browsers zu ändern, stimmen Sie der Verwendung von Cookies zu. Akzeptieren Ablehnen
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
immer aktiv
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SPEICHERN & AKZEPTIEREN