Here's the scenario: We have 1 arduino uno accepting DMX and converting that to a signal that is being sent out digitally (PIN 3). The digital signal then goes to several IR LED senders that control 3,200 IR, color-changing candles. I've recently added some more senders, and now some of the senders are not working (even some that were working before). I assume this is because the digital signal has been weakened due to me splitting it so many times.
I'd like to add another arduino to control half of the IR senders. I obviously already have a cable running to every device, but I know of a perfect place to "interject" the new arduino. Is this possible? Can the second arduino essentially "repeat" or decode and re-encode the digital signal? If so, what pins am I looking at and will I need any special code?
Thanks for the help!
-
Or - can I use a different PIN on the current Arduino to power the other half of the senders? It needs to be PWM capable.Ed Olivett– Ed Olivett2017年12月12日 17:44:17 +00:00Commented Dec 12, 2017 at 17:44
-
@AltAir - We use a custom built IR sender using LED Bucks from Sparkfun. We used these last year without a problem. The problem is now happening after adding 6 additional bucks this year.Ed Olivett– Ed Olivett2017年12月12日 18:09:08 +00:00Commented Dec 12, 2017 at 18:09
-
Can you provide a link to the devices you use in your senders?Majenko– Majenko2017年12月12日 18:36:02 +00:00Commented Dec 12, 2017 at 18:36
-
@Majenko - sparkfun.com/products/13716Ed Olivett– Ed Olivett2017年12月12日 21:55:44 +00:00Commented Dec 12, 2017 at 21:55
2 Answers 2
The scenario you are referring to - connecting one output to many devices - is called the fan-out. Yes, a GPIO pin has a limited amount of drive which limits the number of devices in the fan-out.
There are two problems that are caused by excess fan-out:
- Excess current draw from resistive loads
- Excess capacitance from logic loads
The former is evident when you have too many LEDs connected directly to an output (with resistors, of course). The combined current draw of the LEDs exceeds the current the IO pin can provide and either damage the pin or the LEDs go dimmer than would be desired.
The latter is more evident when working with communication signals. The excess capacitance imposed by each gate attached to the output causes a low-pass filter effect which can filter out high-frequency signals or corrupt the waveforms by removing higher frequency components and "curving off" the nice clean square waves.
In normal logic systems it's common to use line drivers or buffers to allow the connection of more devices to a single signal. Devices such as the 74HC244, which is 8 buffers in one chip, are commonly employed. You can connect the inputs of all 8 buffers to one Arduino output, and each output from the buffer mirrors the input exactly and can connect to more devices than an Arduino can (each output has an extra 10mA steady-state drive capacity than the Arduino).
And yes, you can even connect the output of one buffer to the inputs of other buffers to give even more capacity.
schematic
simulate this circuit – Schematic created using CircuitLab
-
So it sounds like I could use some of these buffers. Is this something I buy or build?Ed Olivett– Ed Olivett2017年12月12日 21:59:12 +00:00Commented Dec 12, 2017 at 21:59
-
It's a chip you buy and build into your design.Majenko– Majenko2017年12月12日 22:00:26 +00:00Commented Dec 12, 2017 at 22:00
-
ok. So basically I would buy one of those devices and then put that between the Arduino and the led bucks?Ed Olivett– Ed Olivett2017年12月12日 22:11:48 +00:00Commented Dec 12, 2017 at 22:11
-
-
I have 28 bucks powering 4 IR LEDs each.Ed Olivett– Ed Olivett2017年12月12日 22:12:29 +00:00Commented Dec 12, 2017 at 22:12
The buffer is a good idea, each pin on an arduino can deliver 20ma, but then the chip can over heat, and you can't drive every output to 20ma, so the buffer chip is the way to go. Just consider the speed of the buffer when you are sending data. There are many chips that can do it, and many that might not be able to do it. So look at the speed of the chip from input to output. Then again, the arduino may not be able to keep up. So consider a PIC, some PIC's are really fast compared to an arduino.