This is a follow-up from a previous topic: Compact Voltage-Controlled Current Source Array.

What I asked originally was some proposal for a current source array controlled by a multiple channel DAC schematic. The main application is an optical phased-array antenna, constituted by resistor elements. The requirement was to have at least a 16-channel board (but up to 64) with each current source channel should provide up to 50 mA. I ended up doing a modified version of the design in this Texas Instrument application note and now I'm drawing the PCB. Each channel is a double stage amplifier in a current-mirror fashion scheme. In this modified version I replaced the DAC with a 16-channel one and doubled the components count.

After some discussion with few colleagues, I decided, as a first prototype, to make an Arduino shield for the Arduino UNO board (to save some time in design) that can be stacked up to 4 boards (in order to have 4x16 channels). Since I do not have much experience in PCB design, I would kindly ask you few problems to address:

  1. Power supply for the DAC and the op-amps: do you think that the +5 V from the USB port of the Arduino board is able to power up also the 4 nanoDACs and the 64 dual op-amps? According to specs, the +5V pin should not exceed 0.5 A, but I think we are very far from that. If not, could you suggest a different power scheme? Should I use a voltage regulator on each board?
  2. Power supply for the current mirror: since each board might sink up to 0.8 A, I don't think I can use any Arduino board pin to deliver this power supply. What is the best way to power up all boards with one connector?
  3. Voltage reference: at the moment, the DACs rely on the internal reference and it should be accurate enough. What if in the future I wish I could provide an external reference to minimize noise? It has to be directly on the board or could it be provided from a pin?

EDIT Details on the PCB: The schematic for 2 channels is shown below.

enter image description here The board schematic has 8 replicas of this schematic.

enter image description here The DAC is this IC. The PCB layout closely resemble the one described in page 5 of the TI app note, with the differences being the double count of channels, the west connector and the Arduino-compatible pins. The output west connector will be 2x8 ribbon connector lateral socket with 2.54mm pitch. This will be used for connection on another PCB having the chip to be tested (or for the multiprobe test equipment).

The main goal of the board is the generation of periodic current ramps (sawtooth waveform), with each ramp having a different slope. The load of each channel is constituted by a 100 ohm resistor, but some chip have 600 ohm load resistors. Noise will limit the accuracy of the system, but for the time being, we don't know if noise on the Vref will be the limiting factor. The laser RIN, supplying the chip, might be a bigger source of noise. Nevertheless, the less noise the better.

  • \$\begingroup\$ How much current do the nanoDACs and dual op-amps draw? How much voltage does the current mirror need? \$\endgroup\$
    – Reinderien
    Commented Nov 26, 2020 at 20:14
  • \$\begingroup\$ Looks like the nanoDACs take 4.2mA worst-case \$\endgroup\$
    – Reinderien
    Commented Nov 26, 2020 at 20:31
  • \$\begingroup\$ Quescient current for the op-amps looks like 1mA worst-case. \$\endgroup\$
    – Reinderien
    Commented Nov 26, 2020 at 20:33
  • \$\begingroup\$ It's not enough to link your schematic - please insert an image. \$\endgroup\$
    – Reinderien
    Commented Nov 27, 2020 at 14:43
  • \$\begingroup\$ I appended a link of the schematic. I've also almost completed the PCB design. May I ask to someone from the community some help for finishing it? \$\endgroup\$ Commented Nov 27, 2020 at 16:38

1 Answer 1


do you think that the +5 V from the USB port of the Arduino board is able to power up also the 4 nanoDACs and the 64 dual op-amps?

At zero load, yes. If I read the specsheets correctly, quiescent current total would be 4 * 4.2mA + 64 * 1mA = 80.8mA.

Since you have not shown any circuit diagram at all, I don't know what your load looks like, so subtract 500mA - 80.8mA = ~400mA of room for load of these stages.

since each board might sink more than 0.8 A, I don't think I can use any Arduino board pin to deliver this power supply. What is the best way to power up all boards with one connector?

You haven't specified a connector, so at a guess: the easiest thing to do is a screw-wire-trap-style terminal block. These are somewhat tall so you'll only want to populate the topmost one in the board stack, unless you have adequate stand-off between the boards and you dearly want them to be identical.

The shields all use standard 100mil-pitch header. You can add more of this or, if you're careful, reuse existing shield pin positions for this purpose, dedicated to power distribution. It's not difficult to find such header rated for 3A.

If power distribution pin current capacity becomes an overriding concern, put your exterior power input block in the middle of the board stack rather than the top, so that the worst-case inter-board current will scale by roughly n/2 instead of n. This scheme has other risks, though, that if there is regulator heat dissipation on this board, convection may be hindered.

You will not need to duplicate regulators on each board, but you will need to duplicate power stabilisation capacitors on each board.

That said, 10,000 amps is "more than 0.8 A", and none of this would work for such a load, so you're going to need to choose a maximum.

[Could] the DAC [voltage reference] be provided from a pin?

Yes. You won't need to care about pin current capacity, but depending on a long list of things you haven't specified, you'll need to care about noise, interference from close-by digital switching, etc.

  • \$\begingroup\$ Thanks for your contribution, I'll edit the answer later on adding more details and specs \$\endgroup\$ Commented Nov 27, 2020 at 8:18

Your Answer

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

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