Activity Forums Questions & Troubleshooting Hardware Driving a WS2811 strip

  • Driving a WS2811 strip

     Jarda updated 4 years, 3 months ago 2 Members · 4 Posts
  • bam

    Member
    July 29, 2020 at 9:43 am

    Hello,

    I’m trying to drive a led strip as a part of a machine for design purposes. The strip contains WS2811 (https://pdf1.alldatasheet.com/datasheet-pdf/view/1132633/WORLDSEMI/WS2811.html” class=”bbcode_url”>https://pdf1.alldatasheet.com/datasheet-pdf/view/1132633/WORLDSEMI/WS2811.html) ICs which control the LEDs. When I attach the Data line of the led Strip to the pin header on my Controllino MAXi it works just fine but when I plug it into the screw terminal (I double checked whether I put it in the right slot) it doesn’t work. I’d like to be able to use the screw terminal of the output so I won’t have to solder a sperate wire just for connecting it to the tiny pin.

    I was thinking that the WS2811 doesn’t like the 12V on the Data Line but according to the datasheet it shouldn’t be a problem.

    Could it be that the HighSide Switch can’t properly relay the data signal?

    Furthermore I just uploaded a simple Fade program (see below) that fades a pin up and down. Again, hooking up a multimeter to the right pins on the pin header shows me the correct voltage values in a range from 0 to 5V. The led of the pin state indicator fades as well. Testing the screw terminal output shows me something fluctuating between 11 and 12V.

    Would it be possible to have a look at the datasheet of the HighSide Switch?

    Code:


    int led = 9; // the PWM pin the LED is attached to
    int brightness = 0; // how bright the LED is
    int fadeAmount = 5; // how many points to fade the LED by

    // the setup routine runs once when you press reset:
    void setup() {
    // declare pin 9 to be an output:
    pinMode(led, OUTPUT);
    }

    // the loop routine runs over and over again forever:
    void loop() {
    // set the brightness of pin 9:
    analogWrite(led, brightness);

    // change the brightness for next time through the loop:
    brightness = brightness + fadeAmount;

    // reverse the direction of the fading at the ends of the fade:
    if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
    }
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
    }

  • Jarda

    Member
    July 29, 2020 at 1:01 pm

    Hello BAM,

    thank you for your question. I think solution is simple. As you already wrote, used high side driver is not suitable for higher speed switching and is not going correctly to zero (reason of measured 11-12V). Solution can be to reduce the communication speed.

    Used switch has following timing parameters:

    Turn ON Time(to 90% of Vout) 90-170us

    Turn OFF Time (to 10% of Vout); 90-230us

    So if you want to really use the screw terminal, you should use something around 1kHz.

    What communication speed you are using please?

    Also high side driver needs some load to work properly, try also to use some load in parallel to WS2811 input.

    BR

    Jarda

  • bam

    Member
    July 30, 2020 at 6:25 am

    Hello Jarda,

    Thank you for your quick response!

    According to the data sheet, transmitting one bit of information to the WS2811 takes about 2.5 us in slow mode. Which translates to a frequency of 400 kHz. Lowering the transmission speed sadly isn’t an option because the IC can’t read data that’s being sent at a lower frequency. So I guess I’ll have to use the pin header…

    As for the PWM issue, just now I put a 1kOhm resistor in parallel to my multimeter, loaded the Fade program from yesterday and I now get correct readings froom 0.2V to 12.3V! So that’s solved. Thanks a lot!

  • Jarda

    Member
    August 5, 2020 at 11:02 am

    Hello BAM,

    thank you for response and enjoy the CONTROLLINO !

    BR

    Jarda

Viewing 1 - 4 of 4 replies

Log in to reply.

Original Post
0 of 0 posts June 2018
Now