Forum: Mikrocontroller und Digitale Elektronik LEDs flackern unregelmäßig bei geringer Helligkeit


von Stefan M. (beefjerky)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein Projekt aus der Make [1, 2] nachgebaut, bei dem aus der 
IKEA-Lampe mit 16x16 LED-Matrix Obegränsad [3] der originale Controller 
ausgebaut und gegen einen ESP8266 ersetzt wird, um aus der Lampe eine 
Digitaluhr zu machen. Die Lampe verwendet für je 16 LEDs insgesamt 16 
Schieberegister/LED-Treiber vom Typ StarChips SCT2024CSSG (siehe 
Anhang).

Ich habe einiges an der ursprünglichen Software (siehe Anhang) geändert, 
z.B. dass die LEDs durchgängig mit 100 Hz aktualisiert werden und dass 
sich die Helligkeit der LEDs in Stufen einstellen lässt, indem der 
Dutycycle des PWM-Signals am output enable (OE) Pin variiert wird. Das 
sieht im Oszilloskop dann so aus, wie in der Abbildung 
duty_cycle_high_low.jpg. Die gesamte Kommunikation einer Aktualisierung 
der LEDs sieht man in Kommunikation.jpg.

Mir ist aufgefallen, dass die LEDs bei niedriger Helligkeit (vielleicht 
fällt es aber auch nur dann auf) unregelmäßig flackern, was im 
Augenwinkel störend wirkt. Ich habe versucht das Phänomen zu filmen 
(LEDs_kurz.mp4), man sieht das Flackern aber nicht so gut, wie mit dem 
bloßen Auge. Ich habe dann mal einen der OUT-Pins eines der SCT2024CSSG 
direkt gemessen (Out_Pin.mp4). Meiner Meinung nach sieht man in dem 
Signal erhebliche Störungen, deren Ursache ich nicht kenne. Können diese 
Störungen das Flackern verursachen und wie kann ich die Störungen 
verhindern?

Vielen Dank und ich wünsche allen schon mal einen ruhigen 3. Advent.

VG,
Stefan

[1] 
https://www.heise.de/ratgeber/IKEA-Hack-fuer-Wandleuchte-OBEGRAeNSAD-LED-Matrix-frei-bespielen-9337311.html
[2] https://make-magazin.de/xpsg
[3] 
https://www.ikea.com/de/de/p/obegraensad-wandleuchte-led-schwarz-00526248/

von Teo D. (teoderix)


Lesenswert?

Könnte an einem schlechten GND Konzept liegen.
Zeig mal den Aufbau!

von Ron-Hardy G. (ron-hardy)


Angehängte Dateien:

Lesenswert?

Ist das nicht falschrum mit dem _pLatch?

   if(w2 > 15) {
      w2 = 0;

      digitalWrite(_pLatch, HIGH);
      //delayMicroseconds(TT);
      digitalWrite(_pLatch, LOW);
    }
Ich kenne die Schaltung nicht, aber wenn die 16 Schieberegister alle in 
Serie hängen sollte doch EIN Latchimpuls nach 256 Bits ausreichen?

von Steve van de Grens (roehrmond)


Lesenswert?

Der ESP8266 hat nur einen einzigen Timer-Ausgang, und der wird in 
Kombination mit dem Sleep-Modus verwendet.

PWM Signale erzeugt er per Software, diese wird aber häufig 
unterbrochen, um WLAN Ereignisse zu behandeln. Das äußert sich in 
Flackern des LEDs.

Beim ESP8266 ist das Flackern unvermeidbar.

: Bearbeitet durch User
von Jens M. (schuchkleisser)


Lesenswert?

Soweit ich das sehe, ist das einfach ein Schieberegister, die Dimmung 
muss extern passieren, und das scheint ein PWM am OE der 
Schieberregister zu sein.
Beim ESP8266 ist alles außer dem Hardware-SPI für das Programm-Flash via 
Software erzeugt, eben auch das PWM, und da der Prozessor sich ab und an 
im WLAN melden muss, zappelt das Signal halt.
Und das Auge sieht sowas speziell bei reduzierter Hellgkeit und auch nur 
mit den "Löwensensoren" am Gesichtsfeldrand.

Wenn das vernünftig funktionieren würde, würde ja nicht jede einfache 
dimmbare, RGB oder WWCW-Lampe einen speziellen Chip einsetzen, der sich 
um's PWM kümmert... Die kosten nix, die können nix (nur ein PWM-Pin, 
oder 2 oder 5, alles kein Problem, der ESP kann PWM an jedem Pin) und 
trotzdem baut man da einen extra Chinachip drauf, der die Dimmung macht.
Jetzt weißt du warum.

von Stefan M. (beefjerky)


Angehängte Dateien:

Lesenswert?

Ron-Hardy G. schrieb:

> Ich kenne die Schaltung nicht, aber wenn die 16 Schieberegister alle in
> Serie hängen sollte doch EIN Latchimpuls nach 256 Bits ausreichen?

Ja, das stimmt, habe ich gerade ausprobiert. Es reicht ein Latchimpuls 
nach allen 256 Bits. Ich dachte ein Latchimpuls bewirkt, dass die Daten 
von einem ins nächste Schieberegister geschoben werden. Ich verstehe den 
Text im Datenblatt nicht. Was bewirkt ein Latchimpuls? Dass die Daten an 
die OUT-Pins weitergegeben werden? An dem Flackern hat sich erstmal 
nichts verändert.

VG,
Stefan

von Stefan M. (beefjerky)


Angehängte Dateien:

Lesenswert?

Teo D. schrieb:
> Könnte an einem schlechten GND Konzept liegen.
> Zeig mal den Aufbau!

Da kann man jetzt leider gar nicht so viel sehen. Die Lampe ist aus 4 
identischen Modulen mit je 4 Schieberegistern und mit 4 x 16 LEDs 
aufgebaut. Die genau Schaltung ist auf weißen PCBs immer sehr schlecht 
zu erkennen. Die markierte Fläche ist aber sicher alles GND, denn da 
liegt GND der Schieberegister drauf und auch das gelbe Kabel mit 
Verbindung zum GND-Pin des Wemos D1 Mini Pro.

An der Stelle U1 saß der ursprüngliche Controller.

VG,
Stefan

von Stefan M. (beefjerky)


Angehängte Dateien:

Lesenswert?

Steve van de Grens schrieb:
> PWM Signale erzeugt er per Software, diese wird aber häufig
> unterbrochen, um WLAN Ereignisse zu behandeln. Das äußert sich in
> Flackern des LEDs.

Ja und soetwas in der Art habe ich auch gelesen und darauf hin allen 
WLAN-Kram - nach besten Wissen und Gewissen - deaktiviert. Ich habe 
letztlich ESP8266WiFi.h gar nicht mehr eingebunden. Meine Frage ist 
natürlich, ob das die WLAN-Funktionen im ESP8266 komplett deaktiviert. 
Falls ja, dann tritt das Flackern auch ohne WLAN auf.

VG,
Stefan

von Ron-Hardy G. (ron-hardy)


Lesenswert?

Stefan M. schrieb:
> Was bewirkt ein Latchimpuls?

Das die aktuellen Daten im Schieberegister ins Ausgangsregister 
übernommen werden.

von Steve van de Grens (roehrmond)


Lesenswert?

Stefan M. schrieb:
> Ich habe letztlich ESP8266WiFi.h gar nicht mehr eingebunden.

Dann ist WLAN wahrscheinlich aktiv, denn das ist die Standard Vorgabe im 
binären Part der Firmware, den du gar nicht weg lassen kannst.

So schaltet man die WLAN Schnittstelle aus: 
http://stefanfrings.de/esp8266/index.html#wlanonoff

Aber ob du damit auch die Unterbrechungen vollständig los wirst, weiß 
ich nicht.

Unabhängig davon: Warum tust du dir den eigenartigen ESP8266 an, obwohl 
du gar kein WLAN brauchst?

von Stefan M. (beefjerky)


Lesenswert?

Stefan M. schrieb:
> Falls ja, dann tritt das Flackern auch ohne WLAN auf.

Ok, ich nehme alles zurück und behaupte das Gegenteil: Jetzt(tm) habe 
ich WLAN deaktiviert und die ESP8266WiFi.h nicht mehr eingebunden und 
jetzt ist das Flackern weg. Wahrscheinlich hatte ich nur überlegt das 
mal zu testen...

Jetzt werde ich mal ausprobieren, ob es auch ausreicht die 
WLAN-Verbindung einfach nur zu trennen und sie nur dann aufzubauen, wenn 
sie für einen neuen Zeitabgleich gebraucht wird.

Vielen Dank an alle und eine ruhige Weihnachtszeit!

VG,
Stefan

von Stefan M. (beefjerky)


Lesenswert?

Steve van de Grens schrieb:
> Unabhängig davon: Warum tust du dir den eigenartigen ESP8266 an, obwohl
> du gar kein WLAN brauchst?

Ich brauche WLAN, um die aktuelle Zeit von einem NTP-Server zu holen. 
Aber ich denke das ist weit weniger of notwendig, als in der 
Original-Software vorgesehen.

VG,
Stefan

von Stefan M. (beefjerky)


Lesenswert?

Stefan M. schrieb:
> Jetzt werde ich mal ausprobieren, ob es auch ausreicht die
> WLAN-Verbindung einfach nur zu trennen und sie nur dann aufzubauen, wenn
> sie für einen neuen Zeitabgleich gebraucht wird.

Es ist ausreichend die WLAN-Verbindung zu trennen. Dann ist kein 
Flackern mehr zu sehen.

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.