OctoWS2811 + MAX485, noisy on Teensy, OK on Arduino UNO

Status
Not open for further replies.
Hi, I'm into a long strip LED project. I have some 1 meter WS2812b LED strips connected into each other in series, with something like a 3 meters cable between each one. I was using a Teensy 3.2 board with the OctoWS2811 board, which was working OK, but wasn't reliable sometimes when using long cables between strips. I was asking on this forum how to solve that and was told to use these boards designed by Paul. Because of the aesthetics needs of my project I had to reduce the design to fit into it, and built my own boards (triple checked that the circuit were the same) but with these version of the MAX845: MAX485ESA+T.

So, now my circuit is like this: teensy > MAX485 transmitter board > MAX485 receiver > 60 LED long WS2812b LED strip > MAX485 transmitter > and so forth.

When I run a FastLED sketch on an Arduino UNO the whole circuit works OK:


But when I try to run videoDisplay on the Teensy the results are very bad (this should be a solid hue rotation on every pixel, but it seems to work fine only on the first 10 LEDs, the ones at the bottom right):


The problem here is that when I tried with the Teensy and videoDisplay, but without the MAX485 boards, it worked fine, but now it seems that somehow the MAX485 IC can't handle the speeds of the Teensy, it seems to be a signal timing problem. I don't know, do you have a possible diagnostic for this problem and how to solve it (without having to discard the MAX485 boards)?

Thank you.
 
UPDATE: I tested the same FastLED sketch that I tried on the Arduino UNO on the Teensy, and the problem persists. It seems to be a hardware related problem on the Teensy's side, but I tested the Teensy on a WS2812b strip without the MAX485 boards and it works well, so I think theres a problem maybe in the way I'm connecting it to the MAX485 board. The only difference I know between the Teensy and Arduino outputs is the logic level voltage, but I did tests with the OctoWS2811 board (that steps up the voltage of the outputs to 5v) and the problem was still there. Any ideas?
 
UPDATE 2: did some further testing, narrowed down the problem to being using two different power sources for the first transmitter and receiver. When I use the same power source the problem disappears, but I need them to be separated, so I'll have to find another solution (I'm sure it's possible because it works fine with the Arduino UNO). What I think is that somehow the Teensy output (compared with the Arduino's) is responsible for this, so I'll try adding an operational to the output.

So, for now I know that:

WORKS if I power the first transmitter and receiver with the same power source.
WORKS if I use an Arduino UNO with the first transmitter and receiver powered by different sources.
DOESN'T WORK if I use a Teensy 3.2 with the first transmitter and receiver powered by different sources (I need this to work).
 
Yes, I have all grounds connected together. I did another test just a moment ago and made it work by feeding the Teensy and the first transmitter through the USB port. I can use it like this, but I'm trying to understand why it didn't work before, why it doesn't work if I power the Teensy by USB and the first board with an external power source with common ground.
 
well all the usb ports on the pc have a common ground, you are not using AGND are you? use GND points only
 
Update on this, I have a weird problem and I need some help to diagnose.

As I stated on the first post of this thread my setup is:

teensy > MAX485 transmitter board > MAX485 receiver > 60 LED long WS2812b LED strip > MAX485 transmitter > MAX485 receiver > 60 LED long WS2812b LED strip > MAX485 transmitter > and so forth (8 strips in total)

The problem I have is this: the first strips work well, but they're increasingly noisy as the chain advances. When there are few pixels lit the entire system works flawlessly, also works great when I light them all for just one frame and then go to black. The problem appears when there's a lot of pixels lit with the same color and increases with brightness. When all the pixels are lit but with different colors the system also works OK.


CASES (the structures are daisy chained from right to left):

Arduino Nano, multicolor patterns (works OK)


Arduino Nano, solid magenta 80% brightness (the last structure is noisy)


Teensy 3.2, solid magenta, maybe 90% brightness (the last 5 structures show blue instead of magenta)


Teensy 3.2, small cyan section, 100% brightness (shows no problems)


Teensy 3.2, big cyan section, 100% brightness (is a disaster)


Teensy 3.2, small magenta section, no problem


Teensy 3.2, solid magenta, maybe 70% brightness (the last two structures show blue)



THINGS I TESTED

Lack of power: every structure has it's own power source (a 5v 4A switching power supply, the structures consume a maximum of 5v 3.7A, but I wasn't near this on the examples I showed), I thought the problem could be related to lack of power, I tested two structures with one common power source of 5v 35A, the problem worsened (so it seems it is somehow related to the power source). And also, looking at the videos you can notice that the problem is worse in relation to the number and brightness of the LEDs.

GND problems: I've read that some projects with similar problems solved it by making changes in the way the GND is wired. I did some tests: using one common power source, cutting the common ground, etc. The problem was always the same no matter what I did with the GND wires.

Design of the MAX485 boards: the design of these boards is based on this one: https://oshpark.com/shared_projects/kM1DRLS1 When the boards weren't present the problem didn't existed, but the signal also wasn't something to trust. I know that the signal is transmitted and received correctly because of the examples you can see on the videos marked as not having problems, but is a fact that adding these boards is one of the causes of the problem. I would like to find a solution that doesn't make me replace these boards.

Signal reflection: lastly, my last hope was signal reflection. It happens that in some patterns, when they don't work, you can se some noisy "inverted" pattern elements. For example, mixing the pattern shown in the "small cyan" videos with a solid background, sometimes a yellow same sized pattern appears on some structures (I understand yellow as having the inverted signal of cyan, inverted in time not in color, you can se something like this in the "big cyan section" video). I tried removing the last MAX485 transmitter (that sends signal into open wires) thinking it could be the problem, but after removing it the problem is the same. You think it could be signal reflection? Should I put diodes at the end of the last strip dataline?

Some extra info: solid colors like green, blue and red work fairly way (little noise at the end of the chain), the problem is when I mix two colors (cyan, magenta and yellow, white works fairly OK).

Thank you in advance, I hope someone finds this problem pretty obvious and can give me hand.
 
Last edited:
Can you double check which RS485 chip you really have?

MAX485ESA+T should work fine. Rated for 2.5 Mbps data rate should be fine. But if you happen to have any of these chips which are only rated for 0.25 Mbit/sec speed, they won't work reliably for the 0.8 Mbit/sec data rate and varying pulse width (effectively about 2-3 Mbit/sec).

max485.png
(click for full size)
 
Hi Paul, double checked, I'm using MAX485ESA+T.

Someone told me it could be a decoupling problem, the problem seems to be power-consumption related, so I'll try with a 1000uF capacitor at the start of each strip and maybe feeding from both sides.
 
I dunno. Using twisted pair for your rs485 wiring? Gnd connected at the first led and not at power supply. I think I was told this matters. I don’t see 1 strip of lights pulling gnd too high unless your power wiring is really thin.
 
The diagram does not represent the cables length, 5v and GND is connected from the power source, the reference, the receiver and the strip at the same spot. I was also told to feed the transmitters directly from source instead from the end of the strip.

So I´ll try:

- Increasing wiring thickness (I checked, is thinner than recommended).
- Adding a 1000uF capacitor at the start of each structure's circuit.
- Feeding the MAX485 at the end of each structure directly from the source.
 
Status
Not open for further replies.
Back
Top