Hallo zusammen,
ich habe ein Problem mit einem WS2812B an einem Arduino Uno. Egal was
ich versuche, ich bekomme keine einzige der LEDs auf dem Streifen zum
leuchten.
Aufbau:
-------
Der Arduino Uno wird mit 9V (VIN, GND) von einem Labornetzteil
gespeisst, der WS2812B (aktuell ein Streifen mit nur 10 LEDs) wird über
einen LM7805 von demselben Netzteil gespeisst. Zwischen VCC und GND
hängt ein 1000uF Kondensator, DIN vom WS2812B ist über einen 330 Ohm
Widerstand mit Port 6 am Arduino verbunden, die Kabel sind alle sehr
kurz (max Länge ca. 10cm).
Code:
-----
Ich verwende den Adafruit Neopixel strandtest Code
(https://github.com/adafruit/Adafruit_NeoPixel/blob/master/examples/strandtest/strandtest.ino),
PIN ist korrekt auf 6 eingestellt, Anzahl der LEDs habe ich auf 10
gesetzt:
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(10, PIN, NEO_GRB +
NEO_KHZ800);
Der Rest des Codes wurde unverändert übernommen.
Messung:
--------
Ich messe auf dem WS2812B zwischen VCC und GND eine Spannung von 4.9V,
an DIN der ersten LED sehe ich mit dem Oszi die entsprechenden Signale
(800kHz, sehen soweit gut aus, Pegel scheint auch zu passen). Allerdings
ergibt eine Messung mit dem Oszi an DOUT der ersten LED kein Signal,
sprich dieses wird nicht weitergeleitet, auch die erste LED bleibt immer
aus. Eine Änderung der Frequenz auf 400kHz brachte auch keine Änderung.
Ich dachte nun zuerst, dass die erste LED evtl. defekt sei und habe
diese entfernt, ebenso die zweite, aber keine Änderung. Danach habe ich
einen komplett anderen Streifen (hinten von der Rolle) verwendet, aber
auch hier keine Änderung.
Sonstiges:
----------
- Eine Speisung des Arduino Uno direkt per USB und Anschluss des WS2812B
direkt an 5V/GND (ohne LM7805) an den Arduino (sprich Betrieb komplett
ohne externes Netzteil) bringt ebenso keine Änderung.
- Der Strip ist definitiv ein WS2812B (alle paar cm auf dem Strip
aufgedruckt), die LEDs sind 4 PIN LEDs. Hinter den LEDs ist auf dem
Streifen jeweils ein kleiner SMD Kondensator.
- Hin und wieder flackert mal kurz eine LED auf dem Streifen.
- Die Verkabelung scheint zu passen, ich habe kurze Kabellängen,
Verbindungen sind gelötet (kein Steckbrett), Kondensator zwischen VCC
und GND, Widerstand vor DIN. Dies sieht man eigentlich auch daran, dass
ich ja am Streifen zwischen VCC/GND ca. 4.9V messe und auf ein Signal an
DIN anliegt.
Hat jemand noch Ideen in welche Richtung ich suchen könnte? Bilder vom
Aufbau kann ich leider erst heute Abend nachliefern.
Vielen Dank jedenfalls schonmal für alle Ideen und Tips :)
TOhm schrieb:> Der Arduino Uno wird mit 9V (VIN, GND) von einem Labornetzteil> gespeisst,
warum tut man das dem armen Regler an?, einfach mit 5V an 5V tuts nicht,
bzw. statt dessen aus dem USB?
> der WS2812B (aktuell ein Streifen mit nur 10 LEDs) wird über> einen LM7805 von demselben Netzteil gespeisst.
unnötig, 10 LEDs konnten immer aus der USB Versorgung und den 5V vom
Arduino bei mir entnommen werden ohne den armen Regler zu bemühen.
OK in seltenen Fällen bei 10x Spitzenweiss = 600mA und schwacher USB
kann es klemmen.
> Zwischen VCC und GND> hängt ein 1000uF Kondensator, DIN vom WS2812B ist über einen 330 Ohm> Widerstand mit Port 6 am Arduino verbunden, die Kabel sind alle sehr> kurz (max Länge ca. 10cm).
mit dem Code hatte ich nie Schwierigkeiten, ich nutze gerne die Arduino
fastLED LIB, auch die aus dem µC Forum von TIM funktioniert prima.
> Messung:> --------> Ich messe auf dem WS2812B zwischen VCC und GND eine Spannung von 4.9V,> an DIN der ersten LED sehe ich mit dem Oszi die entsprechenden Signale> (800kHz, sehen soweit gut aus, Pegel scheint auch zu passen). Allerdings> ergibt eine Messung mit dem Oszi an DOUT der ersten LED kein Signal,> sprich dieses wird nicht weitergeleitet, auch die erste LED bleibt immer> aus. Eine Änderung der Frequenz auf 400kHz brachte auch keine Änderung.
GND vergessen?
> Hat jemand noch Ideen in welche Richtung ich suchen könnte? Bilder vom> Aufbau kann ich leider erst heute Abend nachliefern.
keine Idee ohne Bilder, alle SW hast du schon probiert?
Arduino #include <FastLED.h>
Beitrag "Lightweight WS2811/WS2812 Library"
Joachim B. schrieb:> TOhm schrieb:>> Der Arduino Uno wird mit 9V (VIN, GND) von einem Labornetzteil>> gespeisst,>> warum tut man das dem armen Regler an?, einfach mit 5V an 5V tuts nicht,> bzw. statt dessen aus dem USB?
Ich hatte es vorher mit 5V (bzw auch direkt per USB, siehe Text)
getestet,
es macht keinen Unterschied. Ich hatte den Arduino dann nur per 9V
gepowert, weil ich gelesen hatte, dass er bei VIN zwischen 7 und 12V
benötigt und 5V dann vielleicht zuwenig sind.
>>> der WS2812B (aktuell ein Streifen mit nur 10 LEDs) wird über>> einen LM7805 von demselben Netzteil gespeisst.>> unnötig, 10 LEDs konnten immer aus der USB Versorgung und den 5V vom> Arduino bei mir entnommen werden ohne den armen Regler zu bemühen.> OK in seltenen Fällen bei 10x Spitzenweiss = 600mA und schwacher USB> kann es klemmen.
Das ist schon klar, ich hatte anfangs ca. 60 LEDs dran und bin dann
später nur zur Fehlersuche auf 10 Stück herunter, daher der Aufbau mit
dem externen Netzteil.
>>> Zwischen VCC und GND>> hängt ein 1000uF Kondensator, DIN vom WS2812B ist über einen 330 Ohm>> Widerstand mit Port 6 am Arduino verbunden, die Kabel sind alle sehr>> kurz (max Länge ca. 10cm).>> mit dem Code hatte ich nie Schwierigkeiten, ich nutze gerne die Arduino> fastLED LIB, auch die aus dem µC Forum von TIM funktioniert prima.
Die habe ich auch kurz probiert, aber auch hier kein Unterschied, keine
der LEDs leuchtet, an DIN liegt das Signal an, aber direkt an DOUT schon
nicht mehr.
>>> Messung:>> -------->> Ich messe auf dem WS2812B zwischen VCC und GND eine Spannung von 4.9V,>> an DIN der ersten LED sehe ich mit dem Oszi die entsprechenden Signale>> (800kHz, sehen soweit gut aus, Pegel scheint auch zu passen). Allerdings>> ergibt eine Messung mit dem Oszi an DOUT der ersten LED kein Signal,>> sprich dieses wird nicht weitergeleitet, auch die erste LED bleibt immer>> aus. Eine Änderung der Frequenz auf 400kHz brachte auch keine Änderung.>> GND vergessen?
Nein, GND ist angeschlossen (und auch zwischen WS2812B und Arduino
verbunden).
>>> Hat jemand noch Ideen in welche Richtung ich suchen könnte? Bilder vom>> Aufbau kann ich leider erst heute Abend nachliefern.>> keine Idee ohne Bilder, alle SW hast du schon probiert?
Ja, siehe oben. Bilder wie gesagt leider erst heute abend, bin gerade
nicht zuhause und habe gestern, als ich genervt aufgegeben habe,
vergessen noch welche zu machen...
>> Arduino #include <FastLED.h>> Beitrag "Lightweight WS2811/WS2812 Library"
TOhm schrieb:> <code>
Wenn du stattdessen "(c)" und am Ende "(/c)" schreibst und dabei die
runden Klammern "()" durch eckige "[]" ersetzt, sieht das gleich viel
schöner aus:
1
#include<Adafruit_NeoPixel.h>
2
#ifdef _AVR_
3
#include<avr/power.h>
4
#endif
5
6
#define PIN 6
7
8
// Parameter 1 = number of pixels in strip
9
// Parameter 2 = Arduino pin number (most are valid)
10
// Parameter 3 = pixel type flags, add together as needed:
Thomas E. schrieb:> TOhm schrieb:>> <code>>> Wenn du stattdessen "(c)" und am Ende "(/c)" schreibst und dabei die> runden Klammern "()" durch eckige "[]" ersetzt, sieht das gleich viel> schöner aus:
Ups, Entschuldigung :)
TOhm schrieb:> ... DIN vom WS2812B ist über einen 330 Ohm Widerstand mit Port 6 am Arduino> verbunden, ...
330 Ohm kommt mir etwas "hochohmig" vor. Probier doch mal 33 Ohm aus.
Vielleicht ein Pegel-Problem...
Uwe N. schrieb:> 330 Ohm kommt mir etwas "hochohmig" vor. Probier doch mal 33 Ohm aus.
ich hatte sogar 470 Ohm ohne Probleme, aber man liest auch öfter mal von
120 Ohm, hört sich nach dem goldenen Mittelweg an zwischen 330 Ohm und
33 Ohm.
Ein Versuch ist es wert und bevor man mit 10 LEDs probiert muss es mit
einer LED erst mal richtig laufen, also nur eine LED und die Init auch
mit einer LED, solange eine nicht richtig läuft braucht man den Ausgang
nicht ansehen.
TOhm schrieb:> die entsprechenden Signale> (800kHz, sehen soweit gut aus, Pegel scheint auch zu passen). Allerdings> ergibt eine Messung mit dem Oszi an DOUT der ersten LED kein Signal,> sprich dieses wird nicht weitergeleitet, auch die erste LED bleibt immer> aus. Eine Änderung der Frequenz auf 400kHz brachte auch keine Änderung.
Weder 800kHz noch 400kHz sind korrekt, da wundert es mich nicht, dass
die erste LED die Daten nicht weitergibt.
Das Timing ist bei diesen LED's entscheidend und muss zwingend den
Angaben im Datenblatt entsprechen, damit sie funktionieren.
Johnny B. schrieb:> Weder 800kHz noch 400kHz sind korrekt
400 KHz sind natürlich Unsinn. Aber die Länge eines Bits beträgt 1,25µs.
Und das sind 800Khz. Ob aber auch der Duty-Cycle, also das Verhältnis
zwischen H und L, stimmt, ist eine andere Sache. Ich vermute mal, daß
das nicht der Fall ist, die erste Led das Signal nicht versteht und
demzufolge nichts macht. Somit auch das Signal nicht weiterreicht.
Ah, gerade mein Thema. Bin Anfänger auf dem Gebiet.
Ich habe mir kürzlich so einen WS2812B Streifen bestellt:
https://www.amazon.de/gp/product/B00XKXUA0Y/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
Betrieb an meinem Arduino UNO (Nachbau) hat sofort geklappt.
Vielleicht hilft ja der Vergleich zu meinem Aufbau weiter.
- Datenleitung vom Uno Pin 6 und GND an den Streifen
- Separate 5V DC Versorgung vom Steckernetzteil an den Streifen.
- Neopixel Sketch gemäß Neopixel.txt
Sketch ist etwas modifiziert, dass die Farben RBG + Weiss
alle 60 LED nacheinander durchlaufen. Klappt prima.