Forum: Mikrocontroller und Digitale Elektronik WS2812b leuchten nur teilweise. Was habe ich falsch gemacht?


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 Dar K. (Firma: Sta) (dermeunchner)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe mir eine Tafel gebaut wo im Rücken der Tafel die LEDs sind. 
jedoch bekommen ich diese nicht ganz in Betrieb. Wenn ich den Arduino an 
einen einzeln langen 5m streifen hänge funktioniert es super. (Skript 
kann es nicht sein). Aber an meiner Konstruktion leuchten nur 28 LED von 
160. Ich glaub ich habe da was falsch angeschlossen. Siehe Bild...

Danke in Voraus!

[MOD: Titel korrigiert]

: Bearbeitet durch Moderator
von Corona V. (coronavirus)


Bewertung
-2 lesenswert
nicht lesenswert
Du hast sämtliche Pins der LED Streifen vollkommen durcheinander 
miteinander verknüpft. Dass da überhaupt was leuchten soll überrascht 
mich.

: Bearbeitet durch User
von Heinz R. (heijz)


Bewertung
-1 lesenswert
nicht lesenswert
Die Versorgungsspannung sind 5V?

Mit denen gehst Du am Arduino aber in Vin, der ist gedacht für höhere 
Spannungen

Du musst direkt an den 5V-Pin

Was macht der Raspberry im Plan?

Letztendlich schleifst auch hier wieder 5V zum Arduino durch

Mach das mal zum Test alles weg und schließe den Arduino richtig an

von Chris L. (kingkernel)


Bewertung
-2 lesenswert
nicht lesenswert
Die LED-Streifen in deinem Schaltbild sehen schonmal richtig verkabelt 
aus.
Leuchten alle LEDs des ersten Streifens und danach bleibt es dunkel oder 
tritt der Fehler mitten im Streifen auf?

von Kalli L. (knl)


Bewertung
0 lesenswert
nicht lesenswert
Du hast an Dataout (DO) Minus liegen und benutzt VDD als DO.
Tausch mal ein bischen.
Gruß Knut

: Bearbeitet durch User
von Dar K. (Firma: Sta) (dermeunchner)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo nochmal alle zusammen,

danke für diese super vielen schnell Antworten...

wie folgt. Der Raspberry dient um neue Skripte hochzuladen auf dem 
Arduino.

Die Sache ist die, nicht alle LEDs lechten. Ich habe jeden Einzeln 
überprüft und es liegt 5V Spannung an. Es hört einfach mitten drin 
auf... Siehe Bild

Ich glaube es liegt irgend etwas am Data kabel.

von M. H. (elektrojockel)


Bewertung
-3 lesenswert
nicht lesenswert
Dar K. schrieb:
> Hallo nochmal alle zusammen,
>
> danke für diese super vielen schnell Antworten...
>
> wie folgt. Der Raspberry dient um neue Skripte hochzuladen auf dem
> Arduino.
>
> Die Sache ist die, nicht alle LEDs lechten. Ich habe jeden Einzeln
> überprüft und es liegt 5V Spannung an. Es hört einfach mitten drin
> auf... Siehe Bild
>
> Ich glaube es liegt irgend etwas am Data kabel.

Ich glaube es liegt daran, dass du den Arduino mit zu wenig Spannung 
versorgst. Am VIN müssen min. 7V anliegen das der ordentlich arbeiten 
kann.

von Dar K. (Firma: Sta) (dermeunchner)


Bewertung
0 lesenswert
nicht lesenswert
Hallo M. H

ich habe jetzt das Arduino mit einer eigene Stromversorgung 
angeschlossen. hat nichts gebracht.

Aber als ich mal einen Jumper Kabel genommen habe und einfach mal den 
letzten LED über sprungen habe ist folgendes passiert wie auf den Bild. 
die nächsten paar sind aktiv geworden. Kann es sein das die LED defekt 
sind???

von Dar K. (Firma: Sta) (dermeunchner)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ah hier das bild.... ;)

von Frank M. (ukw) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Dar K. schrieb:
> Kann es sein das die LED defekt sind???

Kann sein, dass eine LED defekt ist, dann wird das DATA-Signal nicht 
weitergeleitet. Einfach die LED rausschneiden, eine andere einsetzen und 
nochmal testen.

Kalli L. schrieb:
> Du hast an Dataout (DO) Minus liegen und benutzt VDD als DO.

Es ist doch offensichtlich, dass der TO sich hier in der Skizze 
verschrieben hat. Die Streifen haben DI/DO immer an derselben Stelle, 
also hier in der Mitte des Streifens.

von Karl (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Frank M. schrieb:
> Dar K. schrieb:
>> Kann es sein das die LED defekt sind???
>
> Kann sein, dass eine LED defekt ist, dann wird das DATA-Signal nicht
> weitergeleitet. Einfach die LED rausschneiden, eine andere einsetzen und
> nochmal testen.

Vor einem invasiven Eingriff würde ich erst noch an der nichtleuchtenden 
LED herumdrücken, eventuell ist es nur eine schlechte Lötstelle. Und 
falls das Problem bei mehreren Streifen auftritt, diese entsorgen und 
bessere kaufen. Dann hat der Verkäufer seinen Ausschuss an dich 
vertickt.

von Dar K. (Firma: Sta) (dermeunchner)


Bewertung
0 lesenswert
nicht lesenswert
ich habe nun die zwei Defekte LED ausgebaut. Leider war noch einer und 
noch einer und noch einer defekt. Verdammt. 13 Stück sind defekt. Kann 
es sein das ich irgend was am Schaltplan was, falls gemacht? Ich glaube 
da ich die LEDs falsch verdrahtet, die sind nun alle kaputtgegangen. Wie 
sollte ich diese eigentlich richtig verdrahten??? Ein Schaltplan wäre 
nicht schlecht...

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Corona V. schrieb:
> Du hast sämtliche Pins der LED Streifen vollkommen durcheinander
> miteinander verknüpft.

Zeig bitte mal, wie du die Streifen verdrahten würdest

von Werner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bist du überhaupt sicher, dass die LEDs defekt sind? Könnte es nicht 
auch um ein Timingproblem handeln?

von Schlaumaier (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Vielleicht auch einfach nur ein Programmfehler. ??

Hast du im Script beim Initialisieren der Libs auch die Anzahl der LED's 
richtig angegeben. ???

Zeig mal den Ansteuerungscode.  Wenn du nur 6 Initialisierst leuchten 
die anderen nicht nur die 6.

von Schlaumaier (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Nachtrag :

Hier ist ein guter Code.

https://starthardware.org/viele-leds-mit-arduino-steuern-ws2812/

#define PIN            6
#define NUMPIXELS      10  <- der hat 10 Led's auf der Leitung

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + 
NEO_KHZ800);

Bei anderen Libs ist es das selbe.

von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Bist du überhaupt sicher, dass die LEDs defekt sind? Könnte es nicht
> auch um ein Timingproblem handeln?

Yep. Wenn z.B die Taktfrequenz zu hoch ist dann kann es sein das nur die 
ersten 5-20 richtig leuchten und danach treten immer mehr Fehler auf.

Olaf

von Johannes O. (jojo_2)


Bewertung
0 lesenswert
nicht lesenswert
Defekte LEDs von Anfang an würden mich wundern. Ich habe ein größeres 
Projekt mit mehr als 1000 dieser LEDs umgesetzt und hatte dabei keine 
defekten LEDs.

Timingprobleme sind oftmals ein Problem. Was du tun kannst: Hänge doch, 
sofern verfügbar, einen weiteren Streifen VOR deine LEDs. Wenn sich die 
Fehler mitverschieben ist es ein Timing-Problem. Wenn sie so bleiben wie 
sie sind spricht das eher gegen die LEDs.

von Schlaumaier (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Ohne Code kann man nicht ausschließen ob es ein Hardware-/ oder 
Software-Problem ist.

Dazu braucht man CODE + Die Anzahl der LEDS auf den Strip.  Da reicht 
schon ein Tippfehler aus, um so Fehler zu produzieren.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
A: schiebst du auch genug Daten durch ?
B: es kann sein das am folgenden Streifen die erste LED defekt ist.

Mit dem Ozzi prüfen ob auch am DO was raus kommt.

Kaputt gehen sie wenn die Spannungsversorgung dumm gebaut ist und der 
Widerstand in der DI Leitung fehlt. Auch wenn man den Streifen auf der 
Rolle betreibt...

Es ist auch eine schlechte Idee den Arduino aus den 5V für die Streifen 
zu speisen. Nicht das der µP an der Stelle immer einen Reset macht. Die 
Spannung an dem 5V Eingang sollte immer etwas niedriger sein. Damit die 
Diode auch zu macht wenn er von der anderen Seite versorgt wird. 
Andersherum hängt der Streifen an dem USB des RPIs -> Ohjee wenn die 
externe Versorgung fehlt.

Mit richtig Glück schießt du dir den RPI.

A: die Vin vom externen Netzteil trennen !  Masseverbindung ist ja 
nötig.

B: dein Kondensator bringt an der der Stelle wenig, der war gedacht 
damit der Arduino nicht einen Reset auslöst. Mit A: unnötig.

C: Sicherung zwischen ! KFZ Sicherung reichen.... sonst brennt die die 
Bude ab.

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Bewertung
-5 lesenswert
nicht lesenswert
> WS2812b leuten nur teilweise. Was habe ich falsch gemacht?
Nimm Glocken, die läuten richtig!

;)

von Gerald B. (gerald_b)


Bewertung
0 lesenswert
nicht lesenswert
Wenn immer die erste bzw. Letzte LED pro Segment defekt ist, kann es an 
einem korrigierten Verdrahtungsfehler liegen. Wenn man auf Data In, bzw. 
Output die Versorgung klemmt, geht zunächst nichts. Korrigiert man 
seinen Verdrahtungsfehler, dann kann der Eingang oder Ausgang schon 
zerschossen sein.

von Werner (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Noch was: Du hast zum Testen jeweils einen WS2812b überbrückt. Dabei 
werden zwei Ausgänge u. U. mit entgegengesetzter Polarität 
kurzgeschlossen. Könnte sein, dass die WS2812b das nicht schadlos 
verkraften.

von Dar K. (Firma: Sta) (dermeunchner)


Bewertung
-1 lesenswert
nicht lesenswert
Das ist der besagte Code:
1
#include <Adafruit_NeoPixel.h>
2
3
#define PIN 3
4
#define NUM_LEDS 165
5
6
int i=0;
7
int n=1;
8
9
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
10
11
void setup() {
12
  // put your setup code here, to run once:
13
  strip.begin();
14
}
15
void loop() {
16
  strip.setPixelColor(i++, strip.Color(200,200,200));
17
  strip.show();
18
  delay(10);
19
}

eine einfache Vorlage.
Ich habe das gleiche Skript und Arduino an dem selben baugleichen 
anderen LED-Streifen anhängt und es funktioniert super.
.
--------------------
.
+++ ABER +++
.
Ich habe nun folgendes rausgefunden. Dort wo die LEDs leucht ist eine 
Spannung von 0,37V auf dem Data kabel. Auf dem Defekten betregt die 
Spannung 5V. ein paar LEDs ist nur noch rest von 0,08V Drauf. Das ist 
doch der Fehler oder???

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Dar K. schrieb:
> Das ist doch der Fehler oder???

Das ist zumindest ein Hinweis wo der Fehler liegen könnte. Spannung kann 
nicht kaputt gehen oder verschwinden, aber sie wird von defekten nicht 
bzw falsch erzeugt. oder das nachfolgende Bauteil ist defekt und 
schließt den vorherigen Ausgang kurz.

Das sind allerdings digitale Signale mit hoher Frequenz, die kann man 
mit einem normalen Multimeter nicht gut prüfen. Besser wäre hier ein 
Oszilloskop.

von HildeK (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> die kann man
> mit einem normalen Multimeter nicht gut prüfen. Besser wäre hier ein
> Oszilloskop.

Ein Oszilloskop ist dazu notwendig! Alles andere ist schwer zu 
interpretieren.

Dar K. schrieb:
> Ich habe nun folgendes rausgefunden. Dort wo die LEDs leucht ist eine
> Spannung von 0,37V auf dem Data kabel. Auf dem Defekten betregt die
> Spannung 5V. ein paar LEDs ist nur noch rest von 0,08V Drauf.

Wenn du mit einem Multimeter misst (s.o., ungeeignet), dann ist das, was 
es anzeigen sollte, etwa der halbe Pegel des Datensignals - ganz vorne, 
also etwa 2.5V ± 0.5V und etwas abhängig vom eingestellten 
Helligkeitswert.
Je weiter hinten du in einer Kette misst, desto weniger wird es sein, 
denn jede LED nimmt sich die ersten 24Bit heraus und füllt sie mit 0V 
und gibt den Rest weiter. So wird entlang der Kette die mit dem 
Multimeter gemessene Spannung immer weniger. Die letzte in der Kette 
gibt nur noch Null aus - falls genau so viele LEDs angesteuert werden 
wie auch vorhanden sind.
Dazu gibt es im Datenblatt ein schönes Bildchen.
Um so mit dem Multimeter weiter zu kommen, sollte es sogar ein altes, 
analoges Instrument sein, das ausreichend träge ist. Mit DMMs kann es 
sein, dass alles mögliche Falsche angezeigt wird.

Dass irgendwo auf der Datenleitung 5V gemessen werden, kann nur sein, 
wenn die Datenleitung an der Stelle einen Kurzschluss nach 5V hat. 
Logisch ist dann, dass danach nur noch annähernd 0V herauskommen.

Im Anhang der zitierte Ausschnitt aus dem Datenblatt.

von Guido Körber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also Timing ist bei diesen LEDs echt ein Problem. Ich habe grad so eine 
Funktion für unseren IO-Warrior28 implementiert (wird bald freigegeben…) 
und dabei echte Überraschungen erlebt, wie weit die LEDs beim Timing 
variieren können.

Man muss ganz genau aufpassen welche Type wirkich verbaut ist, da gibt 
es viele Varianten und manchmal werden die als WS2812B verkauft, obwohl 
sie irgend was anderes sind.

Ob man einen Timingfehler hat, sieht man am Besten, indem man immer 
wieder die selben Daten auf die LEDs schreibt. Stimmt was mit dem Timing 
nicht, dann flackern ein paar.

von Schlaumaier (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
Das du eh mehrere Streifen hast, würde ich folgendes machen.

Häng einfach Testweise die Streifen einzeln an den Arduino. Ändere dein 
Programm : #define NUM_LEDS 165 <- die in die Anzahl der Leds des 
Teilstreifen und dann los.

Dann weißt du auch ohne Ozzi wenigsten in welchen Streifen das 
Schrottteil ist.

von Schlaumaier (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Danach baust du die Stück für Stück wieder zusammen und nach jeden Stück 
die selben Tests. Musst ja nur ein Wert im PRG. ändern.

Wenn du nun ein Streifen anhängst der vorher funktioniert hat, und jetzt 
nicht weißt du das es kein Defektes Bauteil ist, sondern irgend ein 
Kontakt/Timing-Problem.

Wäre jedenfalls mein Vorschlag.

von Teo D. (teoderix)


Bewertung
-1 lesenswert
nicht lesenswert
Guido Körber schrieb:
> Man muss ganz genau aufpassen welche Type wirkich verbaut ist, da gibt
> es viele Varianten und manchmal werden die als WS2812B verkauft, obwohl
> sie irgend was anderes sind.

Da gibts mehrere Versionen von. Als mich das vor 1,5J interessiert 
hatte, war glaube ich die V4 aktuell. Und ja, da ändert sich auch was am 
Timing, aber soweit ich weis zum Besserem (toleranter...).


PS: Ach, guge an, V5 is mit integriertem C :)))
http://www.world-semi.com/Certifications/details-141-4.html

: Bearbeitet durch User

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.

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