C LED Clock - Runde RGB-LED Uhr mit TLC5940

hummer87

Neues Mitglied
11. Apr. 2011
64
0
0
Region Kassel
Sprachen
Hallo,

ich möchte euch bei einem Projekt um Unterstützung bitten.
Selbst habe ich zwar schon gelötet, ein paar Sachen programmiert, jedoch noch kein Projekt von vorn geplant und durchgeführt.
Ich würde euch bitten mir ein paar Gedankenstützen zu geben und mir auf den ein oder anderen Fehler hinweisen.

Zu meinem Projekt.
LEDs interessieren mich schon immer, sodass ich mir schon einen 8x8x8 LED Würfel gebaut habe. Dies gab mir den anreiz eine LED Uhr zu bauen.
Da mir bei dem Würfel die einfarbigen LEDs zu langweilig sind, möchte ich dies mit RGB LEDs bauen.

Die LED Uhr besteht aus drei Kreisen mit jeweils 60 RGBs. einer für Sekunden, Minuten, Stunden.
Anstoß hat mir dieses Video gegeben.
http://www.youtube.com/watch?v=E19TA6HBfNQ


Als Ansteuerung für die Anoden, werde ich Schieberegister 74HC595 benutzen und für die Kathoden den TLC5940 benutzen.
Die Uhr soll vorwiegend von einem RTC mit der aktuellen Uhrzeit versorgt werden, optional habe ich den Einsatz eines DFC77 vorgesehen.
Ein Taster soll die einzelnen Animationen durchschalten.
Ein LDR kann dass Display je nach Umgebungshelligkeit dimmen.


Ein Schaltplan sagt mehr als Tausend Worte, daher ist im Anhang der Schaltplan

Anhang anzeigen led Uhr V4.0.pdf

Die Bauteil-werte sind noch nicht alle beschriftet, da die Bauteil-Auswahl noch nicht abgeschlossen ist.

Vielen Dank im Voraus für eure Unterstützung
 
Hallo,

also mal zum Plan ...

- der 1M Widerstand am Oszillator gehört da nicht hin.
- Deine Reset-Schaltung mit dem 100nF, dem Lötjumper und dem RTS-Anschluß (serielle Schnittstelle?) erschließt sich mir nicht.
- Bei SDA/SCL passen 4k7 Widerstände besser. 2k2 ist schon recht wenig.
- Warum hast du 1k Widerstände von der Lastseite der MOSFETs zum Gate gelegt?

soweit erstmal auf den ersten Blick. Auf jeden Fall ein interessantes Projekt was ein schönes Endergebnis liefern kann.

Gruß
Dino
 
Hallo Dino,

vielen Dank für deine erste Meinung,

//- der 1M Widerstand am Oszillator gehört da nicht hin.
-> habe ich entfernt, danke dafür,

//- Deine Reset-Schaltung mit dem 100nF, dem Lötjumper und dem RTS-Anschluß (serielle Schnittstelle?) erschließt sich mir nicht.
-> diese Schaltung habe ich aus dem Internet, Es ist eine FTDI Schnittstelle zum späteren Programmieren des µC


//- Bei SDA/SCL passen 4k7 Widerstände besser. 2k2 ist schon recht wenig.
-> Danke, im internet stehen zwei Verschiedene Möglichkeiten für die Widerstände von I2C, werde die 4k7 nehmen

//- Warum hast du 1k Widerstände von der Lastseite der MOSFETs zum Gate gelegt?
-> bei ersten Versuchen hatte ich mit nachleuchten der LEDs zu kämpfen, habe aber festgestellt, dass diese nach GND geführt werden mssten und nicht ans Gate


anbei nun der veränderte Schaltplan

Anhang anzeigen led Uhr V5.0.pdf
 
...//- Deine Reset-Schaltung mit dem 100nF, dem Lötjumper und dem RTS-Anschluß (serielle Schnittstelle?) erschließt sich mir nicht.
-> diese Schaltung habe ich aus dem Internet, Es ist eine FTDI Schnittstelle zum späteren Programmieren des µC...
Quelle bitte...
Mir erschließt sich nämlich auch nicht, was man (bzw der USB<->TTL-Wandler) mit RTS anstellen soll, um die andere Seite vom Kondensator gegen den Pullup auf Gnd zu zwingen.
P.S.: Kannst Du Deinen Schaltplan nicht einfach als Bild mit anhängen? Gif oder png? Dann muß man das mit dem Transformer nicht immer runterladen, nur um es zu betrachten...

P.P.S.: kann es sein, daß bei den Spannungsversorgungspins am Mega ein Abblockkerko fehlt? Und nebenbei finde ich den Schaltplan mit der unterbrochenen Signalführung etwas ... ähm ... gewöhnungsbedürftig. Das ist doch Eagle, oder? Ich würde die Label an diesen Signalen als "HREF Label" zeichnen.
 
Hallo,

// bzgl des FTDI habe ich flgende Quellen im Internet gefunden:

http://www.princeton.edu/~mae412/SCHEMATICS/arduino_ftdi_r1.PNG
und
http://blogs.iad.zhdk.ch/physical-computing-hs-12/files/2012/07/Minimal_Arduino1.png

wenn ihr der Meinung seit ich brauche das nicht, dann lasse ich ihn weg



// P.P.S.: kann es sein, daß bei den Spannungsversorgungspins am Mega ein Abblockkerko fehlt?
-> habe ich noch eingefügt, danke


// Und nebenbei finde ich den Schaltplan mit der unterbrochenen Signalführung etwas ... ähm ... gewöhnungsbedürftig.
-> Ich werde den Schaltplan etwas aufräumen und Ordnung rein bringen, hänge ihn dann als Bild an.

Led uhr 5.1.png
 
Schaltplan fertig, und nun?

Hallo,

dank eurer Hilfe bin ich mit meinem Schaltplan nun sehr weit gekommen, erste Versuche mit der Ansteuerung klappen und es nimmt mit der Programmierung langsam Form an.

Anbei der Schaltplan für begeisterte :)
---------------------------------------------
Ansteuerung.png
---------------------------------------------
Nun bin ich im programmieren nicht der Hellste und noch ganz am Anfang, aber so das ein oder andere klappt schon.

Ich möchte gern die Ansteuerung über einen Timer laufen lassen. leider fehlt mir hierfür ein kleines bisschen das Verständnis.

Hier der Code:

Code:
/***************************************************************************************************/
/*                    Timer Setup Routine                           */
/***************************************************************************************************/

ISR(TIMER1_OVF_vect)                    // Timerinterupt mit Überlauf
{
  sei();                        // Timer starten  
  shiftRow++;    
  if (shiftRow == NUM_ROWS)                 // Ist "shiftRow" gleich der Anzahl der "NUM_ROWS", dann
  {
    shiftRow = 0;                    // setzte "shiftRow= = 0
  }
  disable_XLAT_pulses();                // deaktiviere LatchPin des TLc und `595
  TlcMux_shiftRow(shiftRow);                            // Funktionsaufruf
  digitalWrite(OE595,LOW);                    // akltiviere Schieberegister
  shift8_595_row(shiftRow);                             // durchlaufe alle ebenen
  delayMicroseconds(200);                               // warte
  digitalWrite(OE595,HIGH);                             // deaktiviere Schieberegister
  enable_XLAT_pulses();                        // aktiviere Latchpin des Tlc und `595 und schiebe Daten in das Ausgangsregister
}

static inline void shift8_595_row(uint8_t row)
{
 
 //uint8_t output = ~(1 << row);                        // Der gesetzten Ausgänge (Row) des `595 sind Low, alle anderen High  (für P-Mosfet)
  uint8_t output = (1 << row);                          // Der gesetzten Ausgänge (Row) des `595 sind High, alle anderen Low
  for (uint8_t bit = 0x80; bit; bit >>= 1) {            // Taktimpuls '595 sclk
    if (bit & output) 
    {
      SHIFT_DATA_PORT |= _BV(SHIFT_DATA_PIN);
    }                                                   // end if
    else 
    {
      SHIFT_DATA_PORT &= ~_BV(SHIFT_DATA_PIN);
    }                                                   // end else    
    SHIFT_CLK_PORT |= _BV(SHIFT_CLK_PIN);            // CLK PORT  gleich    Ausgangsregister CLK PIN    -> setze CLK PIN auf HIGH
    SHIFT_CLK_PORT &= ~_BV(SHIFT_CLK_PIN);            // CLK PORT  ungleich    Ausgangsregister CLK PIN    -> setze CLK PIN auf LOW
  }                                                     // end for
}                                                     // end shift8_595_row


Meine Frage nun:
Der Code steuert ein Schieberegister an, welcher die einzelnen ebenen durch schaltet. Je nach dem welche Ebene aktiv ist, wird der entsprechende Code in die TLC5940 beschrieben.

leider bekomme ich nicht hin, ein zweites Schieberegister anzusteuern, um dann die TLC_NUM über 8 zu setzten. Ich benötige mehr als 8 ebenen.

Über Hilfe würde ich mich sehr freuen
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)