WS2812B Landebahn

moin auch,

ich möchte die Befeuerung(Beleuchtung) einer Landebahn im Garten Semulieren mit WS2812B LEDs-Strips. Das Ganze gleicht einem Rechteck mit den Maßen: 2,5m mal 7m

7m Wieß

Grün - 2 - Rot

  • , --> -
  • 5m -

7M Weiß

Hardware:
19 Meter WS2812B IP65 (IP30 im Selikon schlauch)
60LED pro Meter
Netzteil 5V 70A(Garage)
3x 2,5 qmLautsprecherkabel (Stromversorgung)
1x 5x2,5qm Erdkabel (Stromversorgung
ESP8288 NodeMCU Board(Garage)
4m x CAT6 im leerrohr
20m x 1,5qm Lautsprecherkabel (Verstärkung LED-Strip-Leiterbahn)
19m Alu-Profielschiene

Frage1:
Wie bekomme ich die jeweiligen LEDs angesteuert?
Alle 1140 LEDs einzell zu benennen ist mir doch zu aufwending.
Leider weiß ich nicht genau wie ich die LEDs in Gruppen steuern kann:
2x 7m Weiß
1x 2,5m Gelb
1x 2,5m Rot

Frage2:
Die Datenleitung vom ESP8288 zur ersten LED sind ca. 4 Meter. Kann ich da schon problem bekommen?

Viele danke

Bist Du Dir mit ESP8288 sicher oder meinst Du eher ESP8266?

Bei 5V-Signalen geht man von maximal 1m bis zur ersten / zwischen WS2812B aus, bei 3,3V zur ersten wohl kürzer. Du kannst Dummy - WS2812B zur Signalgenerierung zwischen schalten. Zwischen ESP und 1 WS2812B einen Widerstand ca. 200 Ohm schalten.

Gruß Tommy

Edit: Ansonsten schau Dir mal die FastLED-Lib mit den ESP8266-Anmerkungen an.

Die Zeichnung ist mir unklar, kannst das besser machen?

Ich hab so etwas für "zwei Bahnen" - je links und Rechts eines Gehweges mit unterschiedlichen Mustern.

Das meiste geht über For-Loops.

Kann ich am Abend suchen und vielleicht hochladen... habs aber nur bis 20 Leds ausprobiert, weis nicht was er bei 1140 macht...

Hallo,

70A 2,5mm2, da gingen bei mir die Alarmglocken an

Du solltest Deine Stromversorgung noch mal überdenken. 2,5mm2 kannst Du nicht für 70A nehmen. Ich weiss jetzt nicht was die LED insgesamt brauchen, bin aber von 70A ausgegangen, weil die theoretich ja fliessen können.

R=Lange/56/2,5 ( gilt für 30 Grad. )

bei 10 Meter Küpfer , also 5 m Kabel ergibt das etwa 0,07Ohm. bei 70 A sind das dann etwa 5V Spannungsabfall und 350Watt , das Kabel wird nicht lange halten, klar ist alles nur eine Sache der richtigen Kühlung. :wink:

Selbst bei 16mm2 ergibt das dann bei 70A immer noch 0,7Volt Spannungsabfall auf der Leitung. und etwa 50Watt.

Wenn man jetzt mal davon ausgeht das man das in 3 Gruppen je 25 A aufteilt, ergibt sich bei 2,5mm2 1,8V Spannungsabfall je Gruppe und 45Watt.

Kannst das Ganze ja noch mal für Teillast 50A ausrechnen mit drei Gruppen, je 16A und 6mm2 das wäre so mein Tipp.

Gruß Heinz

Rentner:
Hallo,

70A 2,5mm2, da gingen bei mir die Alarmglocken an
......

Deshalb nimmt er ja auch das Dicke Kabel:

karl77:
3x 2,5 qm Lautsprecherkabel (Stromversorgung)

Duck und weg :grin:

karl77:
... mit WS2812B LEDs-Strips.

Hast Du die schon? Wenn nicht könntest Du über APA102 und vergleichbare mit Daten und Takt getrennt nachdenken.

karl77:
Frage1:
Wie bekomme ich die jeweiligen LEDs angesteuert?
Alle 1140 LEDs einzell zu benennen ist mir doch zu aufwending.
Leider weiß ich nicht genau wie ich die LEDs in Gruppen steuern kann:
2x 7m Weiß
1x 2,5m Gelb
1x 2,5m Rot

Dazu findest Du im Thema Projekt Krippenbeleuchtung von mir ein Beispiel mit diesen Zeilen als Kern, wobei die Anzahl der LEDs bei Dir je nach Länge unterschiedlich ist:

const unsigned int NUM_LEDS1=420;
const unsigned int NUM_LEDS2=420;
const byte NUM_LEDS3=150;
const byte NUM_LEDS4=150;
...
CRGB leds1[NUM_LEDS1];
CRGB leds2[NUM_LEDS2];
CRGB leds2[NUM_LEDS3];
CRGB leds2[NUM_LEDS4];

karl77:
Frage2:
Die Datenleitung vom ESP8288 zur ersten LED sind ca. 4 Meter. Kann ich da schon problem bekommen?

Ja, wie schon geschrieben. Du könntest aber auch vier (oder fünf) ESP8288 verwenden, wobei je einer an den Anfang eines LED-Streifens plaziert wird. Untereinander synchronisieren die dann die Muster per Funk.

Stromversorger schicken über lange Strecken hohe Spannungen über die Kabel, während vor Ort die Spannung reduziert wird. Auch über ein solches Konzept könntest Du nachdenken, da die Streifen sowieso regelmäßige Einspeisungen benötigen.

EDIT: Datentyp verändert.

vielen dank für die netten Hinweise:
Ja ich meine ESP8266 NodeMCU mit Logic Level Converter 5V Datensignal.

Stromversorgung 70A sollte bis zum ersten Punkt 2 x10qmm muss es schon.
Bei diesen Strömen und Entfernung ist der Spannungsabfall nicht zu vernachlässigen. Deshalb wurden mehre Adern-Paare zu unterschiedlichen Punkten verlegt.

Leider ist das meiste schon verlegt. Werde es mal noch mal testen von ESP8266 zur ersten LED.
Die Alu-Schienen mit den WS2812B würden noch nicht verlegt Kann ich den ESP8266 über WLAN programmieren?

Nur die Steuerung bekommen ich nicht hin, mir fehlen leider die Ideen.

Zur Programmierung über WLAn musst Du OTA (OverTheAir) in Deinen Sketch mit einbinden.

Gruß Tommy

Hi

63A wäre 16mm² in der Hausinstallation, in der UV 10mm² - dort sind aber die Wege auch eher begrenzt und die einzelnen Leiter bekommen die Wärme gut weg.
Wenn Du ein Kabel benutzt (also mehrere Drähte zusammen gepackt) wird Dir die Verlustwärme in die Quere kommen - sofern Du die 70A wirklich längere Zeit hast.
Dort könnte man ja auch noch per Software nur jede 2.te LED bestromen - quasi Soft-PWM im Wechsel bei jedem Loop-Durchlauf.
Und 36A und 10mm² schaut schon direkt angenehmer aus.

Was soll denn wie blinken?
Für Dauerlicht kannst Du Dir den Aufwand mit WS2812B ja sparen - also muß Geblinke her!

MfG

Die Ws2812 zu verwenden hat nur snn wenn jedes einzelne LED mit einer bestimmten Farbe / Blinken / Lauflicht ansteuerst.

Grüße Uwe

Querschnittsreduzierung sind in der Praxis im Verteilerschrank ohne weiteres nicht umbedingt mehr zulässig. Direkt über ein 10qmm zu versorgen wird so nicht gehen. Die Anzahl der Leds sollten wirklich vom TE überlegt werden. Sinniger sind mehrere Versorgungsleitungen.

sschultewolter:
Querschnittsreduzierung sind in der Praxis im Verteilerschrank ohne weiteres nicht umbedingt mehr zulässig.

Stimmt das betrifft die Absicherung der "kleinen" Leitung gegen Kurzschluss.Überlast trifft nicht zu es kann ja nur das fließen was angeschlossen ist. Es müsste ja eine 63 oder 80 A Sicherung vorne einsetzen werden. Bei einem 70A Netztgerät womöglich mit Strombgrenzung wird eine 63A Sicherung eh nicht schnell genug ansprechen.Ich denke auch das Netzgerät gilt in dem Fall als Kurzschluss-Schutz für das 16mm2 Kabel, aber hinten am ende des 2,5mm2 Kabel kanns warm werden. :slight_smile:

wenn man mit einem Kabel 16mm2 ankommt und da den Querschnitt reduzieren will auf eine Grösse die man an den LED auch anschliessen kann 2,5mm2 , könnte ja unmittelbar vor der LED ein Kurzschluss auftreten bei dem dann die 70 A fliesse könnten. Geht also nicht. Man müsste dann in der Verteilung separate Sicherugen zum Leitungsschutz einsetzten. z.B 10 A Glassicherung in der Klemme um auf 1,5mm2 abzusichern, und dann aber wegen des Spannungsverlustes 2,5mm2 nehmen.

von handelsüblichen Automaten für die Hausinstallation muss man abraten, Magnetauslöser erwartet grössere Kurzschlusströme, die ja bei 230V auch problemlos zustande kommen. Es gibt auch automaten die in der Industrie bei 24DC eingestezt werden Da muss man sicher erst mal in die Kennlinie sehen.

Gruß Heinz

zum Code:
Also du könntest das über For-Loops lösen.
Ich habe wie angesprochen nur zwei Bahnen, keine Anfang-/Ende Markierungen.

Eine “Verlängerungs-LED” am Pixel 0, d.h. Die erste Bahnen beginnt bei 1-10
die zweite Bahn von 11 - 20, wobei die zweite Bahn von “hinten” - Pixel 11 bis “vorne” Pixel 20. Will mal also die zwei gegenüberliegende Pixel aufrufen, sind das für die erste Led 1 und 20.

Im loop habe ich einen klassischen “BlinkWithoutMillis” Zeitticker, der das Muster (Pattern) periodisch aufruft

 if (!isBlackout && actualPattern > 0 && (unsigned long)(millis() - msTimerPattern) >= (msTimerPatternIntervall*patternIntervallFactor))        
  {    
    if (actualPattern == 1) {fadePixel();}        //bei 5 Pattern ist ein if else um etwa 16 byte kleiner als ein switch case
    else if (actualPattern == 2) {pattern2();}
    else if (actualPattern == 3) {pattern3();}
    else if (actualPattern == 4) {pattern4();}
    else if (actualPattern == 5) {pattern5();}
    else if (actualPattern == 6) {pattern6();}
    else if (actualPattern == 7) {pattern7();}    
    msTimerPattern=millis();
  }

Das Pattern ist nicht blockierend, und muss im richtigen Zeitabstand im loop aufgerufen werden.
die aktuelle Position steht in der counterPattern
Beispiel für ein Pattern links rot, rechts grün, jeweils zwei durchlaufende Pixel heller als die anderen.

void pattern3()
// Seefahrt: rot/grün mit einem schnell durchfahrenden Highpoint 
//           vom Haus nach draußen
// Zwei separate Schleifen

{
  //Serial.println(F("D127 Pattern2 Seefahrt"));
  const byte myPixels=10;           //Length of pathway - 10 pixel links - 10 pixel rechts
  const byte high = 255;            //dimmer value for high pixel
  const byte medium = 128;             //dimmer value for medium pixel
  const byte low = 42;              //dimmer value for low dimmed pixel
  counterPattern++;
  if (counterPattern>myPixels) {counterPattern=0;}
  
  for (int j = 1; j<=myPixels; j++)                        
  {
      if (counterPattern==j) r_channel[j]=high; else r_channel[j]=low;  
      g_channel[j]=0;
      b_channel[j]=0;          
      //Serial.print (F("D135 ")); Serial.print (j); Serial.print (F("r: ")); Serial.println(r_channel[j]);
  }

  for (int j = myPixels*2; j>myPixels; j--)                        
  {
      r_channel[j]=0;  
      if (myPixels*2+1 - counterPattern==j) g_channel[j]=high; else g_channel[j]=low;
      b_channel[j]=0;          
      //Serial.print (F("D143 ")); Serial.print (j); Serial.print (F("g: ")); Serial.println(g_channel[j]);
  }  
  if(counterPattern%2)                       //Status LED 0 blink
  {
    r_channel[0]=high; g_channel[0]=0; b_channel[0]=0;
  }
  else
  {
    r_channel[0]=0; g_channel[0]=high; b_channel[0]=0;
  }
  updatePixel();  
}

dazu eine Weboberfläche zum Aufrufen und Konfigurieren.
Der Code ist in mehreren Tabs organisiert, daher nur als externes Download.

http://werner.rothschopf.net/2018/esp8266_neopixel.zip

Bitte vor dem flashen einmal das ganze EEPROM löschen.

Beispiel 1: weboberfläche zum Steuern der Pixel und Aufruf von verschieden Mustern
Screenshot_20180129-184900.png

Beispiel 2: Konfiguration
Screenshot_20180129-184941.png

bis 50 Pixel hab ich es getestet, ab 256 muss man wahrscheinlich eine Menge an byte Variablen auf uint16_t ändern. Und das Blättern auf der Seite wird mit 1000 Pixel dann auch keinen Sinn mehr machen.

Aber es soll eh nur ein Beispiel sein ^^

Die volle Power werden die nicht oder sehr selten(Gartenfest) (PWM 80%) .
Bei der Landebahn wird nur jede dritte an sein(PWM 70%.
Die kurzen seiten leuchten Rot und Grün.

Warum ws2812: für zusätliche spielereien.

OTA für mein Verständnis: Dann Vergrabe ich den kleinen ESP8266 Wasserfest mit unter der schiene und spiele über WLAN die Sketch drauf.

da ich eine lange verbindung bis zum ersten PIN habe(4-5 Meter), habe ich keine andere wahl.

Oder könnt ihr mir was zu RS485 sagen? Vielleicht könnte ich die Daten auf diesem Weg verstärken.

Wie sieht es aus mit Gruppensteuerung der WS2812.
Könnte ihr mir vielleicht noch einwenig unterstützen?

Den sinnvollsten Weg, das Signal zu verstärken/regenerieren hatten ich und andere Dir doch bereits mitgeteilt. Warum ignorierst Du das?

Gruß Tommy

Die bekomme ich leider nicht mehr in das Leerrohr. Pflastersteine würden leider auch schon im Garten verlägt.
Da habe ich nicht mit gerechnet.

Ok das Zauberwort heiß also “Pattern”, suche mir mal beispiele raus.
danke

Gruppen(Pattern) werden dann sein:
1 - 0 - 419 7 Meter Weiß
2- 420 - 569 2,5 Meter Rot
3- 570 - 989 7 Meter Weiß
4- 990 - 1140 2,5 Meter Grün

Wobei bei den Weißen soll nur jedes 3 leuchten.

karl77:
Wie sieht es aus mit Gruppensteuerung der WS2812.

Was meinst Du damit?

Du hast mehrere Möglichkeiten:

  • Du schaltest alle 1140 Lichtpunkte in Reihe an einen Arduino-Pin, dann hast Du ein Feld mit 1140 Elementen, wobei ich die zusätzlichen Lichtpunkte zur Signalauffrischung jetzt mal ignoriere. Die Aufteilung in Gruppen erfolgt dann über die Nummern der Feldelemente. Siehe #21.
  • Jede Gruppe schaltest Du an einen eigenen Arduino-Pin, das habe ich in #5 beschrieben.
  • Jede Gruppe erhält einen eigenen Arduino, was nicht zwangsläufig ein ESP8266 sein muß.

karl77:
Oder könnt ihr mir was zu RS485 sagen? Vielleicht könnte ich die Daten auf diesem Weg verstärken.

Du könntest von einem zentralen Arduino Daten via RS485 an einen Nano (oder so) senden, der diese dann an eine Lichtpunktgruppe weiterleitet.

karl77:
4- 990 - 1140 2,5 Meter Grün

Die 1140 Elememte zählen von 0 bis 1139.

Ich hoffe, Du hast diese Anleitung berücksichtigt: Powering NeoPixels