Go Down

Topic: Building 32x32 (1024 pixels) LED WS2812B Wall (Read 927 times) previous topic - next topic

BabyGeezer

...
I have attached the scheme, will it work?


probably understood, but just for completeness sake, the 2nd GND for the 2nd row is not there, and neither the DIN-DOUT line.
Attach your images to be viewed directly - THIS WAY;
https://forum.arduino.cc/index.php?topic=519037.0

PaulRB

Don't connect 5V to the Vin pin, that requires 7-12V. Connect it to the 5V pin.

PetrMaliarov

How will 5m pieces fit on a 2m wall?
It was my first assumption when I read that every 5m have to be powered in parallel (I thought to power every 2.5 lines: 5 = 2+2+2*(1/2)). But currently I'm going to power every 2m strip in parallel. What arduino would be better to use for it Mega or Due? I guessed to use Due because it is a bit faster, but conversion 3.3v to 5v looks tricky.

PetrMaliarov

#18
May 24, 2019, 05:29 pm Last Edit: May 24, 2019, 05:31 pm by PetrMaliarov
probably understood, but just for completeness sake, the 2nd GND for the 2nd row is not there, and neither the DIN-DOUT line.
Yes, I'm just forgot to add them to scheme. Attached corrected scheme.

PaulRB

#19
May 24, 2019, 07:12 pm Last Edit: May 25, 2019, 11:00 am by PaulRB
What arduino would be better to use for it Mega or Due? I guessed to use Due because it is a bit faster, but conversion 3.3v to 5v looks tricky.
From what we know about your project, one output pin will be required. So to use Mega or Due would be very wasteful, because these Arduino have many pins.

I could suggest an AdaFruit Trinket M0. I have not used one myself, but it seems appropriate for your project. The Trinket M0 has a special pin for driving led strips, so you would not need to convert the 3.3V to 5V. EDIT: The ItsyBitsy M0 has this special pin.


Converting 3.3V to 5V signals is not tricky. As already suggested, a 74hc14 or 74hct14 chip will do this.

PetrMaliarov

#20
May 25, 2019, 08:48 am Last Edit: May 25, 2019, 08:49 am by PetrMaliarov
Thank you! I will try AdaFruit Trinket M0.

PaulRB

#21
May 25, 2019, 10:55 am Last Edit: May 25, 2019, 10:56 am by PaulRB
I'm sorry, that was an error. The Trinket M0 does not have the special pin for driving NeoPixels, so you might still need a logic level shifter (e.g. 74hc14).

The AdaFruit ItsyBitsy M0 has the special pin! It's only slightly larger.


PaulRB

#22
May 25, 2019, 11:06 am Last Edit: May 25, 2019, 11:09 am by PaulRB
Another possibility to consider would be a Wemos mini, or similar esp8266 based board. These are 3.3V, so again you may need the level shifter. But with these boards you could control your wall over WiFi.



wvmarle

They also have LOTS more RAM and general processing power than the AVR chips, allowing for much more fancy displays.
Quality of answers is related to the quality of questions. Good questions will get good answers. Useless answers are a sign of a poor question.

BabyGeezer

...still need a logic level shifter (e.g. 74hc14).
...
i didn't know you could use Schmitt Triggers for that purpose.

is there a benefit, or what different considerations would there be, when compared to the usual MOSFET packages on the usual Bi-Directional Level-shifters that are available.
Attach your images to be viewed directly - THIS WAY;
https://forum.arduino.cc/index.php?topic=519037.0

PaulRB

Those bi-directional modules are designed for i2c, which is normally 100KHz or maybe 400KHz. NeoPixel signals are 800KHz.

In my personal experience, the bi-directional modules work with NeoPixels, but not well. They are marginal, at best, for this purpose, and I found that even touching the connections with a finger would prevent the strip from updating correctly, corrupting the pattern randomly, or blocking it altogether. Investigating with a 'scope, I found the signals output by the level shifter were a mess. The crisp signal edges had been turned into sawtooth patterns, indicating the shifter circuit was not able to switch fast enough.

Using 74hc14 did not suffer from these problems, the signals remained clean and touching the circuit had no effect.

But using 74hc14 for i2c level conversion would not work of course because a bi-directional shifter is needed.

BabyGeezer

Those bi-directional modules are designed for i2c, which is normally 100KHz or maybe 400KHz.
NeoPixel signals are 800KHz.
...
But using 74hc14 for i2c level conversion would not work of course because a bi-directional shifter is needed.
i see - good to know, thanks a lot !
Attach your images to be viewed directly - THIS WAY;
https://forum.arduino.cc/index.php?topic=519037.0

wvmarle

Those level shifters are basically open drain outputs; using a 10k pull-up on the module. That's what gives the sawtooth-shaped signal at high speeds. This can be improved on by lowering the value of those resistors - 3k3 or so will give a much cleaner output signal.

The 74HC14 on the other hand has push/pull outputs, but it works in only one direction, allowing it to pass fast signals with good quality (clean block wave).

The SDA line of I2C is bidirectional, so a 74HC14 won't work for that - you need bidirectional level shifting for I2C.
Quality of answers is related to the quality of questions. Good questions will get good answers. Useless answers are a sign of a poor question.

Paul__B

And that is the answer - the "bidirectional level shifters" pull down well enough, but not for pulling up.

The Schmitt trigger is not necessary, a basic 74HCT04 is just fine, but it is always a "nice" idea to "sharpen up" the waveform using the Schmitt trigger.

A 74HC14 will generally work but you are getting a bit close to the switching logic levels.  The "HCT" versions are specifically designed as level shifters.

BabyGeezer

...
The Schmitt trigger is not necessary, a basic 74HCT04 is just fine, but it is always a "nice" idea to "sharpen up" the waveform using the Schmitt trigger.
...
i see, so it's not the Schmitt trigger that is functioning as the level-shifter.
is it more like a buffer then ? (albeit with inverted signal)

i had a look at the Diode Inc. datasheet for the 74HCT04 (says it has Schmitt trigger on the input anyway)
which is called a hex-inverter with standard push-pull outputs. - what does that mean ?

Attach your images to be viewed directly - THIS WAY;
https://forum.arduino.cc/index.php?topic=519037.0

Go Up