Place a 300 to 500 Ohm resistor between the Arduino data output pin and the input to the first NeoPixel. The resistor should be at the end of the wire closest to the NeoPixel(s), not the microcontroller. Some products already incorporate this resistor…if you’re not sure, add one…there’s no harm in doubling up!
Could someone explain why "The resistor should be at the end of the wire closest to the NeoPixel(s), not the microcontroller"?
The Arduino pin is an output, it has about 30 to 40 ohms impedance to ground or Vcc, so its never going
to be troubled with voltage spikes generated by reflections. The neopixel is an input, high impedance,
and appears to have rather inadequate protection diodes so is easily damaged by reflections from an
unterminated cable (most cables have characteristic impedances of 100 ohms or so, which is a gross mismatch
for a high-Z logic input, so reflects a 2 x Vcc pulse)
Reflected wave ( in differential RS-485 systems like CAN , MODBUS, DEVICENET etc. ) has nothin to do with voltage spikes. The termination resistors (120 ohm) are there to prevent Reflected Wave due to impedance mismatch which corrupts the digital signals . Omitting the termination resistor doesn't cause voltage spikes. It causes corrupted data. As I stated, I am not familiar with Neopixel but the OP stated the location of the series resistor was critical. RS-495 termination resistors are Parallel ( Across the bus, from CAN Hi to CAN Lo ) , NOT SERIES , so there is a big difference. Perhaps I shouldn't have ventured a guess. Apparently I am not even in the ball park..
I'll refrain from further comment..
A reflection from an open circuit is a voltage spike! OK its only double the incident voltage,
but that's still a spike from the neopixel's point of view... If it's pad protection circuitry was adequate
it would tame the spike completely, rather than being damaged by it. Adding a resistor limits
the current that causes the damage to the neopixel pad (doesn't suppress the reflection, its still
an open circuit).
With typical ribbon or twisted pair the characteristic impedance is around 100 ohms, so in a 5V system there
is 50mA max available to do damage to the neopixel, but adding 500 ohms reduces that to <10mA.
All you need is a few m of CAT5 or coax, a clocked logic output and a reasonably fast 'scope to see
such reflections
I have never had problems plugging the neopixel input straight into the board. But, if this resistor is best practice - go nuts! Maybe it only becomes a thing if you have a long wire between the arduino and the neopixels. IIRC, any conductor has a small amount of inductance, so a long conductor will probably do odd things to 800kHz signals.
A reflection from an open circuit is a voltage spike! OK its only double the incident voltage,
but that's still a spike from the neopixel's point of view..
MarkT,
In the following video, the reflected wave is not seen as any increase or "spike" in the amplitude of the
test signal. If you play the video to it's end and don't touch your mouse or keyboard , another video will begin about how to measure cable impedance and correct it with proper termination. In neither case is any increase or spike seen in the amplitude of the original signal. Both videos are consistent with my understanding of "Reflected Wave" and neither video supports you comment above. I am not saying you are wrong. I am simply saying we are not on the same page and are talking about two different things.
Whatever you are talking about is not something I have witnessed and is not supported by either of the videos.