Forum: Mikrocontroller und Digitale Elektronik WS2812 Signal i.O., led leuchtet nicht


von Anonym L. (helferlein)


Lesenswert?

Hallo Community

Ich habe ein Beispiel aus der Neopixel Library auf einen selbst 
gemachten Print geladen mit einem aTmega 328 (16MHz). Das Programm 
funktioniert, das Signal am uC-Pin stimmt. Das Signal stimmt auch noch 
am Pin der LED. Es handelt sich um einen LED-Strip.Die Led sollte grün 
leuchten und das Signal ist folgendermassen: 10010110, dann folgen viele 
nullen. Die 50us Pause stimmen auch, es sind sogar 70. Die Frequenz 
stimmt ebenfalls, das Verhältnis der Bits auch (also die Verhältnisse 
für 0 und 1). Die Led hat auch eine Speisung von 5VDC. Das Signal wird 
nach der LED auch nicht weitergegeben, also am Ausgang kommt nichts 
raus.
Die Led ist nicht kaputt, beim Einschalten leuchtet sie kurz zufällig 
auf. Um das auszuschliessen habe ich diese Led abgeschnitten und es mit 
der nächsten versucht. Es klappt immer noch nicht.

Hat jemand erfahrung damit?

Ich habe den LEDstrip auf Aliexpress gekauft, es könnte sich also auch 
um gefälschte leds handeln, die eine andere Ansteuerung brauchen?...

Falls ihr noch mehr wissen wollt, fragt einfach.


Vielen Dank

von yesitsme (Gast)


Lesenswert?

Schaltplan?
Aussagekräftige Fotos vom Aufbau?
Vollständiges Beispielprogramm?

Sorry, meine Glaskugel ist in reparatur...

von Ralf G. (ralg)


Lesenswert?

Anonym L. schrieb:
> Das Programm funktioniert, das Signal am uC-Pin stimmt.
> Das Signal stimmt auch noch am Pin der LED.
Sicher?

> Es handelt sich um einen LED-Strip. Die Led sollte grün leuchten
Du meinst die erste LED?

> und das Signal ist folgendermassen: 10010110, dann folgen viele nullen.
Tja..., wieviele denn?

> Die 50us Pause stimmen auch, es sind sogar 70.
Wann machst du die Pause?

> Die Frequenz stimmt ebenfalls, das Verhältnis der Bits auch (also die > 
Verhältnisse für 0 und 1).
Kannst du die Frequenz mal konkret nennen?

> Die Led hat auch eine Speisung von 5VDC.
Du meinst sicher den ganzen Streifen?

> Das Signal wird nach der LED auch nicht weitergegeben, also am Ausgang kommt
> nichts raus.
Dazu nochmal:
Anonym L. schrieb:
> das Signal ist folgendermassen: 10010110, dann folgen viele nullen.
Wieviele Nullen?

von Thomas E. (thomase)


Lesenswert?

Anonym L. schrieb:
> Das Signal wird
> nach der LED auch nicht weitergegeben, also am Ausgang kommt nichts
> raus.

Wenn nur eine Led angesteuert wird, also nur 24Bit ausgegeben werden, 
wird auch nichts weitergegeben.

Anonym L. schrieb:
> Um das auszuschliessen habe ich diese Led abgeschnitten und es mit
> der nächsten versucht.

Das ist auch sicher DI und GND ist auch verbunden?
Nicht, daß ich dich für blöd halte, aber sowas kann jedem passieren.

von Anonym L. (helferlein)


Angehängte Dateien:

Lesenswert?

Wie viele nullen? 16. Also mit dem Signal, das ich bereits 
aufgeschrieben habe 24. Also 24bit. Falls nötig kann ich davon auch noch 
ein foto machen, wenn jemand nachzählen will;)


Die frequenz ist 800Khz.(plus minus 3khz, das DPO misst nicht sooo 
genau)


Du meinst die erste LED?
Nein alle, also die ersten 16. Es sind mehr auf dem streifen aber zum 
testen halt.

Du meinst sicher den ganzen Streifen?
Ja.

Das ist auch sicher DI und GND ist auch verbunden?
Beim neustarten der Speisung leuchten zufällig Leds auf dem streifen in 
zufälligen Farben(nur volle, keine Mischungen.) Also gehe ich davon aus, 
dass gnd angeschlossen ist. DI habe ich am Pin der Led gemessen.

Danke für die schnellen antworten.

von Ralf G. (ralg)


Lesenswert?

Auf deinem Oszi-Bild lese ich was von 2.00V. Soll das der Pegel sein? 
Dann wäre das zu wenig.

von Anonym L. (helferlein)


Lesenswert?

Es sind 3.6 Volt. Auch eher wenig. Sogar eigentlich fast zu wenig. Danke 
für den Tipp. Weisst du woher das kommen kann?

Es sind 2V pro Häusschen und der Trigger ist auf 2V.


Breaking news:

Im leerlauf(ohne angeschlossene Led) kommt das signal mit 5V daher.


Im Datenblatt steht, dass bereits 0.7 Volt als High Pegel erkannt 
werden.(Seite 3 mittlere Tabelle)

: Bearbeitet durch User
von Ralf G. (ralg)


Lesenswert?

1
   pixels.setPixelColor(i, pixels.Color(150,150,0)); // Moderately bright green color.
Wenn ich mir den Funktionsnamen so ansehe, wird hier sicherlich eine 
Farbe gesetzt ;-)
Auf Grund der Verteilung könnte man 'gelb' vermuten, die grüne LED 
leuchtet etwas heller als die rote, also immer noch 'grün' als 
Endfarbe... _Aber:_ Das passt nicht zur Übertragung. Es müsste dann 
zweimal '0b10010110' gesendet werden. Danach acht Nullen. (Und das ganze 
16x)

Anonym L. schrieb:
> Im Datenblatt steht, dass bereits 0.7 Volt als High Pegel erkannt
> werden.(Seite 3 mittlere Tabelle)

nee, nee...
das sind 70% von der anliegenden Versorgungsspannung!

Anonym L. schrieb:
> Im leerlauf(ohne angeschlossene Led) kommt das signal mit 5V daher.
Da würde ich auf einen Kurzschluss tippen.

: Bearbeitet durch User
von Anonym L. (helferlein)


Lesenswert?

das sind 70% von der anliegenden Versorgungsspannung!

Dann müsste es aber noch knapp gehen.

Ja das mit der Farbe stimmt, ich habe es dann wieder auf nur 
grün(0,150,0) geändert. Sorry, blöder fehler, habe ich vergessen zu 
erwähnen. Ich werde mich jetzt aber mal drauf konzentrieren den 
Spannungsabfall zu finden.

von Ralf G. (ralg)


Lesenswert?

Anonym L. schrieb:
> Dann müsste es aber noch knapp gehen.

'müsste' und 'knapp'... das ist nicht so gut ;)
0.7 * 5V = 3.5V -> das ist mehr als knapp daneben. 2V sind da weniger 
als die Hälfte...

von Thomas E. (thomase)


Lesenswert?

Anonym L. schrieb:
> Dann müsste es aber noch knapp gehen.

Oder gerade eben nicht mehr.

Am DI, das ist ein hochohmiger Eingang, muß der gleiche Pegel wie am 
µC-Port liegen. Sonst ist irgendwas faul.

von Lattice User (Gast)


Lesenswert?

Anonym L. schrieb:
> Es sind 3.6 Volt. Auch eher wenig. Sogar eigentlich fast zu wenig. Danke
> für den Tipp. Weisst du woher das kommen kann?
>
> Im leerlauf(ohne angeschlossene Led) kommt das signal mit 5V daher.

Also wird der Ausgabepin über Gebühr belastet.
Liegen die 5V Versorgung überhaupt noch an der LED an?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Anonym L. schrieb:
> Es sind 3.6 Volt. Auch eher wenig. Sogar eigentlich fast zu wenig.

 Nein.
 Hier fährt gerade ein STM32F 312 Stück WS2812 mit 3V3 und 1MHz ohne
 Probleme.

von Anonym L. (helferlein)


Lesenswert?

Liegen die 5V Versorgung überhaupt noch an der LED an?

Ja das klappt ohne Probleme

von Anonym L. (helferlein)


Lesenswert?

Hier fährt gerade ein STM32F 312 Stück WS2812 mit 3V3 und 1MHz ohne
 Probleme.

Also sind die 3.6V kein Problem und sollten klappen? Sorry aber ich will 
sicher sein:=)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Anonym L. schrieb:
> Also sind die 3.6V kein Problem und sollten klappen? Sorry aber ich will
> sicher sein:=)

 Bis jetzt nicht.
 100-150 Ohm in der DI Leitung als Sicherheit. Ohne Widerstand ist die
 Einschaltreihenfolge wichtig, mit Widerstand ist es egal.

: Bearbeitet durch User
von aSma>> (Gast)


Lesenswert?


von Lattice User (Gast)


Lesenswert?

Damit der Ausgang des µC 1.4V einbricht muss da ein erheblicher Strom 
fliessen. Und diese Senke gilt es zu finden.

Den Streifen versehentlich am falschem Ende angeschlossen?

von Anonym L. (helferlein)


Lesenswert?

Die 300 Ohm haben dazu geführt, dass vor dem Widerstand 5 und nachher 1V 
sind, es fliessen also 13mA. Das Signal bei der LED ist aber eben 1V. 
Habe ich etwas falsch verstanden oder muss das so sein? Es funktioniert 
immer noch nicht.

von dummy (Gast)


Lesenswert?

>Die 300 Ohm haben dazu geführt, dass vor dem Widerstand 5 und nachher 1V
>sind, es fliessen also 13mA. Das Signal bei der LED ist aber eben 1V.

Dann sind die 5V am LED Streifen nicht angeschlossen.

von Anonym L. (helferlein)


Lesenswert?

Damit der Ausgang des µC 1.4V einbricht muss da ein erheblicher Strom
fliessen. Und diese Senke gilt es zu finden.

Den Streifen versehentlich am falschem Ende angeschlossen?


------------------------------------------------------------------------ 
-----


GENIAL. DANKE, das wars..... sehr peinlich. So offensichtlich, dass ich 
nicht mal dran gedacht habe.

VIELEN DANK an alle, die sich für mich Zeit genommen haben.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Marc V. schrieb:
> Hier fährt gerade ein STM32F 312 Stück WS2812 mit 3V3 und 1MHz ohne
>  Probleme.

Bei mir funktionierts auch. Aber sobald man die LED-Spannung auf etwas 
über 5,2V bringt, reichen die 3V3 als Pegel nicht mehr und es gibt 
zumindest Aussetzer im Streifen. Das ist nachvollziehbar.

Deshalb ein Tipp: Setze den Ausgabe-Pin des STM32 auf Open-Drain und 
benutze einen Pullup von 1,8k (an 5V) vor der ersten LED.

Wird bei dem WordClock mit WS2812-Projekt mittlerweile hundertfach 
so gemacht, nachdem mehrere User meldeten, dass bei zu hoher 
Betriebsspannung (>= 5,2V) die LEDs teilweise ausfielen. Seit dem Ändern 
auf Open-Drain ist Ruhe und es läuft zuverlässig.

: Bearbeitet durch Moderator
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Frank M. schrieb:
> Bei mir funktionierts auch. Aber sobald man die LED-Spannung auf etwas
> über 5,2V bringt, reichen die 3V3 als Pegel nicht mehr und es gibt
> zumindest Aussetzer im Streifen. Das ist nachvollziehbar.

 Ja, die 3V3 reichen knapp für 5V. Die Schwelle für Log.1 hängt
 (leider) mit VCC zusammen.

> Deshalb ein Tipp: Setze den Ausgabe-Pin des STM32 auf Open-Drain und
> benutze einen Pullup von 1,8k (an 5V) vor der ersten LED.

 Falls es ein Tipp für mich war:
 WS2812 wird mit SPI und DMA gefahren, gerade deswegen wird der STM32
 benutzt und nicht der AVR.
 Am Anfang noch 6K8 als Pullup benutzt, jetzt aber nicht mehr, vor
 allem da die DI Leitung kaum 25 cm hat.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Anonym L. schrieb:
> GENIAL. DANKE, das wars..... sehr peinlich.


 Nööö, passiert schon mal, irren ist menschlich.
 Genial finde ich, dass du es zugegeben hast.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Marc V. schrieb:
> Falls es ein Tipp für mich war:

Der Tipp war eher algemeiner Natur.

>  WS2812 wird mit SPI und DMA gefahren, gerade deswegen wird der STM32
>  benutzt und nicht der AVR.

Genauso ist es auch beim oben angegebenen Projekt: STM32 mit DMA, aber 
ohne SPI. Letzteres ist nicht notwendig.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Frank M. schrieb:
> Genauso ist es auch beim oben angegebenen Projekt: STM32 mit DMA, aber
> ohne SPI. Letzteres ist nicht notwendig.

 Wie man's nimmt.
 SPI braucht zwar 4 Mal so viel RAM, dafür werden die bits aber mit
 genau 1MHz rausgeschoben.
 RAM ist hier kein Problem aber die Timers werden anderweitig gebraucht.
 Deswegen.

von tommy (Gast)


Lesenswert?

Den zweiten GND (Pin 22) solltest Du trotzdem anschliessen ;-)

von tommy (Gast)


Lesenswert?

... und 'nen 100nF an AVCC ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.