1

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!

4
  • 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
    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
    Dec 12, 2017 at 18:09
  • Can you provide a link to the devices you use in your senders?
    – Majenko
    Dec 12, 2017 at 18:36
  • @Majenko - sparkfun.com/products/13716
    – Ed Olivett
    Dec 12, 2017 at 21:55

2 Answers 2

1

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:

  1. Excess current draw from resistive loads
  2. 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

8
  • So it sounds like I could use some of these buffers. Is this something I buy or build?
    – Ed Olivett
    Dec 12, 2017 at 21:59
  • It's a chip you buy and build into your design.
    – Majenko
    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
    Dec 12, 2017 at 22:11
  • Yep. That's right.
    – Majenko
    Dec 12, 2017 at 22:12
  • I have 28 bucks powering 4 IR LEDs each.
    – Ed Olivett
    Dec 12, 2017 at 22:12
0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.