- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 31

Thema: Kann ich vier Ws2812-Strips ansteuern?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Das nodeMCU hat 4 PWM-Ausgänge (D2, D5, D6 und D8.). Also könntst Du theoretisch vier WS2812 betreiben. Wenn Du die Pins für nichts anderes brauchst. Musst vielleicht auf Besonderheiten beim Startvorgang achten.

    Link zum Bild auf mikrocontroller-elektronik.de:
    https://www.mikrocontroller-elektron...belegung-1.png


    Noch ein Link, wie die WS2812 betrieben werden: https://www.arduino-tutorial.de/viel...teuern-ws2812/

    Und was Gnom67 eben sagt...

    MfG

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    @Moppi: Welchen Zusammenhang siehst du zwischen PWM und WS2812?

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Werden die nicht per PWM gesteuert?

    Wenn nicht, war es ein Irrtum vom Amt. - Danke für den Hinweis!



    MfG


    PS: https://www.mikrocontroller.net/arti...12_Ansteuerung
    Geändert von Moppi (23.04.2019 um 08:53 Uhr)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Nein, die werden digital angesteuert. Jede LED bekommt digitale Werte für R, G, und B gesendet mit einem speziellen Protokoll.
    PWM kannst du bei den "langeweile"-Stripes einsetzen, wo alle LEDs in der gleichen Farbe leuchten. Ich denke auch nicht, dass die WS2912-Libraries aus irgendwelchen technischen Gründen auf die PWM-Pins beschränkt sind.
    Diese hier ist auf zwei Pins beschränkt, weil sie die seriellen Ports benutzt - davon gibts nur zwei auf dem NodeMCU.
    Vielleicht gehts mit der hier - da kann man einen Pin definieren...
    Du wirst sicher verschiedene Libraries ausprobieren müssen.
    Geändert von Gnom67 (23.04.2019 um 08:52 Uhr)

  5. #5
    HaWe
    Gast
    Zitat Zitat von Moppi Beitrag anzeigen
    Das nodeMCU hat 4 PWM-Ausgänge (D2, D5, D6 und D8 ).
    MfG
    @moppi: nur zur Richtigstellung:
    das ist nicht korrekt, pwm auf NodeMCU geht auf allen Pins D1-D8 (und ggf auch D12):
    Bild hier  

    https://www.electronicwings.com/node...th-arduino-ide

    zu WS2812 Neopixel siehe u.a. hier: https://learn.adafruit.com/adafruit-...ic-connections

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    mir sind ehrlich gesagt keine WS2812 Libs bekannt, die DMA auf multiplen PWM Kanälen beherrschen

    die mir geläufigen sind bitbang mit timer (viel zu lahm), bitbang mit DMA (fadecandy, mein favorit, erscheint mir am sinnvollsten) und ein paar spezielle mit PWM aber davon habe ich nur wenige probiert (weil die meisten erst an das board angepasst werden mussten, außerdem haben die nur ein PWM kanal genutzt)

    bin am ende auf einen rpi zero gewechselt um mittels OPC server und usb-netzwerkbrücke die Muster am PC zu generieren und mit ~25FPS auf meine 300 LEDs zu beamen ... später dann mit APA102 auf >100FPS XD ... das WS2812 Protokoll ist einfach murksig, lieber APA102 mit clock Leitung das nächste mal nehemn (APA107 ist der Nachfolger, APA102 bekommt man noch aber die werden nicht mehr offiziell produziert und APA107 findet man kaum)
    Geändert von Ceos (23.04.2019 um 09:47 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Ceos Beitrag anzeigen
    bin am ende auf einen rpi zero gewechselt um mittels OPC server und usb-netzwerkbrücke die Muster am PC zu generieren und mit ~25FPS auf meine 300 LEDs zu beamen
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Es kommen insgesamt nicht mehr als 12 zum Einsatz- höchstens drei pro "Strang".
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Und: weiter hat der NodeMCU nix zu tun, ausser, beim Start nach Firmware-Updates zu suchen- die vier Pins wären also frei.
    Und hier hat sich jemand ausgiebig mit dem Timing von WS2812 und Co auseinadergesetzt.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Da in diesem Fall keine gleichzeitige Ansteuerung der vier Stripes nötig ist, die Stripes mit nur drei LEDs sehr kurz und die Schaltfolgen wenig komplex sind, sollte es jede Library tun, mit der du vier verschiedene Pins in wechselnder Folge ansteuern kannst. Wenn du vier lange Stripes "gleichzeitig" mit komplexeren Mustern ansteuern wolltest, wäre das sicher schwieriger und du müsstest die Libraries sorgfältiger unter die Lupe nehmen.

    Grundsätzlich erst mal kann der ESP meines Wissens kein Hardware-PWM - das ist alles nur Software-PWM. Letztlich stößt man hinischtlich der Anzahl Kanäle, Frequenz und Auflösung relativ bald an Grenzen. Wie weit PWM hier überhaupt relevant ist, ist ne andere Frage...

    @Ceos: Wo ist der Zusammenhang zwischen PWM und WS2812? Der WS wird ja nicht mit PWM angesteuert. Da der ESP sowieso nur SoftPWM kann, erscheint es mir sinnlos, eine Lib auf SoftPWm aufzusetzuen. Die Libs sind, wenn ich das nicht völlig falsch einschätze, doch eher mit Timer-Interrupts programmiert. (Wobei SoftPWM letztlich auch nichts anderes ist als ein Timer Interrupt.) Am Ende läuft das doch eh auf Bitbanging und Timer hinaus, weil es für das Timing des WS2812-Protokolls keine Hardware-Schnittstelle gibt. (Würde mich mal interessieren, wie die eine oben genannte Library die UART-Schnittstelle für den WS-Chip zurechtbiegt...) Ich würde die Begriffe (Hard/Soft)-PWM, Timer und Bitbanging hier jedenfalls nicht so leichtfertig nebeneinander benutzen.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    @Klebwax danke für den Hinweis, habe ich in meinem weiter oben ligeenden Post schon erwähnt dass es ihn wohl nicht betrifft es aber trotzdem Einschränkungen gibt, ich wollte hier nur mal einen aus dem Nähkästchen holen um die Grenzen mal zu benennen ... das war einfach nur weiterführend gemeint, falls jemand von 12 LEDs auf 120LEDs hochrüstet und dann hier ein einfaches "Ja geht!" hinein interpretiert

    @Gnom67 ich habe einige durchaus funktionierende Implementationen aus (hardware)PWM Ausgängen mit DMA gefunden, bei denen der Timer für jeden bit-Puls per DMA bespielt wird um die nachfolgende Pulsbreite zu variieren für 0 oder 1 ... aber dafür braucht man hohe Basis Taktraten

    und zu deiner Frage über UART/SPI habe ich es auch mal selber gebastelt. Du nimmst einfach eine Busfrequenz von 4x800kHz und codierst eine 0 mit binär 0b1000 und eine 1 mit binär 0b1110, bei UART und SPI bekommst du dann einen langen oder kurzen Puls jeweils heraus der gerade so in die Toleranz passt
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Zitat Zitat von Ceos Beitrag anzeigen
    @Gnom67 ich habe einige durchaus funktionierende Implementationen aus (hardware)PWM Ausgängen mit DMA gefunden, bei denen der Timer für jeden bit-Puls per DMA bespielt wird um die nachfolgende Pulsbreite zu variieren für 0 oder 1 ... aber dafür braucht man hohe Basis Taktraten

    und zu deiner Frage über UART/SPI habe ich es auch mal selber gebastelt. Du nimmst einfach eine Busfrequenz von 4x800kHz und codierst eine 0 mit binär 0b1000 und eine 1 mit binär 0b1110, bei UART und SPI bekommst du dann einen langen oder kurzen Puls jeweils heraus der gerade so in die Toleranz passt
    In der Tat natürlich naheliegend, die Pulsbreite vom PWM machen zu lassen, statt sich ein zweites Timersignal für die zweite Flanke aufzuhalsen. Richtig sinnvoll wird das allerdings erst mit Hardware-PWM. Ein Soft-PWM wird letztlich auch nichts anderes machen, als die Timerabstände entsprechend den duty cycles zu variieren und somit abwechselnd lange Timerzeiten einzustellen.
    Mit DMA meinst du sicher, dass die Timergrenzen im Speicher direkt manipuliert werden und nicht über die Funktionen der Library. Das ist wohl auch geboten. Trotzdem wäre es meiner Meinung nach performanter, die Timer gleich in der WS-Lib zu programmieren, als auf eine Soft-PWM-Lib aufzusetzen. Sicher gibts auch verschiedene Libs die es mal so oder mal so machen... Wäre sicher interessant, welche die beste Performance hat.

    UART hab ich mir auch genau so vorgestellt, wie du es beschreibst. Etwas rückwärts durch die Brust ins Auge..., aber immerhin nimmt einem dann die Hardware die Arbeit ab - aber wenn nur zwei Pins alternativ zuweisbar sind, ist das hier leider keine Lösung.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Ws2812....
    Von Head Free im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 04.12.2017, 16:38
  2. fahrzeug mit vier motoren und vier encodern
    Von inka im Forum Arduino -Plattform
    Antworten: 63
    Letzter Beitrag: 07.02.2016, 14:52
  3. WS2812: intelligente RGB-LED
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 10.04.2013, 21:50
  4. Antworten: 9
    Letzter Beitrag: 20.04.2011, 19:36
  5. Wie vier Motoren ansteuern???
    Von cinhcet im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 9
    Letzter Beitrag: 29.06.2006, 12:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad