Forum: Mikrocontroller und Digitale Elektronik Schaltung mit TLC5971 funktioniert nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dominik S. (mrjazzycharon)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Elektronikfreunde,

ich habe eine Schaltung entworfen, in welcher RGB-LEDs vom Typ 
ASMT-YTC7-0AA02 mit einem TLC5971 angesteuert werden sollen. Leider 
wollen die LEDs nicht leuchten und ich bin nicht in der Lage, den Fehler 
zu finden.

Im beigelegten Bild sieht man die Platine. Die Leiterbahnen sind so gut 
zu erkennen, dass ein Schema vielleicht nicht unbedingt notwendig ist.

Sowohl der Mikrocontroller als auch die beiden TLC5971 werden mit einer 
5V-Spannungquelle versorgt. Zur Erzeugung des Steuersignals habe ich 
sowohl mehrere Varianten in C programmiert als auch Internetquellen 
ausprobiert. Dieser Code-Auszug einer Variante sollte Fragen bzgl. der 
Ansteuerung klären:
1
void write(uint8_t d) {
2
  for (int i = 0; i < 8; ++i) {
3
    PORTB &= ~(1<<LEDS_CLK_PIN);
4
    if (d & (1<<(7-i))) {
5
      PORTB |= 1<<LEDS_DATA_PIN;
6
    } else {
7
      PORTB &= ~(1<<LEDS_DATA_PIN);
8
    }
9
    _delay_us(2);
10
    PORTB |= 1<<LEDS_CLK_PIN;
11
    _delay_us(2);
12
  }
13
}
14
15
int main() {
16
  uint8_t data[4] = { 0x94, 0x5F, 0xFF, 0xFF };
17
  while (1) {
18
    for (int k = 0; k < 2; ++k) {
19
      for (int i = 0; i < 8; ++i) {
20
        if (i > 3) {
21
          write(k==0?0x55:0x54);
22
          write(0x55);
23
          write(0x55);
24
          write(0x55);
25
          write(0x55);
26
          write(0x55);
27
        } else {
28
          write(data[i]);
29
        }
30
      }
31
    }
32
    PORTB &= ~(1<<LEDS_CLK_PIN);
33
    _delay_ms(500);
34
  }
35
}
(Die Schleife mit der Variablen k dupliziert den Output, um die beiden 
verketteten TLCs anzusteuern.)

Das digitale Steuersignal am SDTI und SDKI ist am Oszilloskop sehr gut 
und deutlich zu erkennen. Das Signal liegt auch am SDTO und SDKO 
erwartungsgemäß um 224 Bits verzögert an, das Schieberegister des 
TLC5971 arbeitet also.

Die LEDs wollen aber leider nicht leuchten, bzw. die Kollektoren im 
TLC5971 ziehen die LED-Kathoden niemals in Richtung Masse.

Berühre ich mit dem Oszilloskop-Tastkopf die Kathoden der LEDs (deren 
Anoden mit 5V verbunden sind) beginnen sie etwas zu leuchten, die LEDs 
sind also intakt.

Ich bin mit meinem Latein leider am Ende und würde mich sehr freuen, 
wenn mir jemand von euch weiterhelfen könnte. Der Sachverhalt ist ja an 
sich eigentlich nicht besonders kompliziert.

von Paul B. (paul_baumann)


Bewertung
1 lesenswert
nicht lesenswert
Ich lese auf den Widerständen "2R49" d.h. 2,49 OHM statt 2,49 KOhm!

Ob das Programm in Ordnung ist, kann ich nicht sagen. C ist nicht mein 
Metier.

MfG Paul

von Dominik S. (mrjazzycharon)


Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich, danke! Was für ein blöder Fehler. Und im Datenblatt steht 
auch, dass das direkte Verbinden mit Masse die Ausgänge deaktiviert. Das 
könnte die Lösung sein. :)

Beitrag #6019093 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.