Forum: Mikrocontroller und Digitale Elektronik WS2812 Signal i.O., led leuchtet 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 Anonym L. (helferlein)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Schaltplan?
Aussagekräftige Fotos vom Aufbau?
Vollständiges Beispielprogramm?

Sorry, meine Glaskugel ist in reparatur...

von Ralf G. (ralg)


Bewertung
0 lesenswert
nicht 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. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Liegen die 5V Versorgung überhaupt noch an der LED an?

Ja das klappt ohne Probleme

von Anonym L. (helferlein)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von Lattice User (Gast)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Den zweiten GND (Pin 22) solltest Du trotzdem anschliessen ;-)

von tommy (Gast)


Bewertung
0 lesenswert
nicht lesenswert
... und 'nen 100nF an AVCC ;-)

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.