We're a bit stuck on the following problem :

We've connected a bunch (18 to be precise) of Arduino NANOs on the same +12V supply and they all share the same PWM output from another device (which goes into an input of each Arduino) and also a boolean signal in the form of a +5V (12V going through a voltage divider).

Problem is: On the bench with two units, it works perfectly fine. But when we put all of the 18 units in parallel in the system, the Arduinos start to fry one after the other (about 8 so far and usually 2 or 3 at a time).

The µC gets real hot and lets out the magic smoke. The regulator itself is completely OK and doesn't heat up significantly.

We don't see where we might be wrong. I completely agree that inputs should be buffered, protected and whatnot, but for a prototype we really thought that'd work... But that's not the case!


simulate this circuit – Schematic created using CircuitLab

Thanks for your help!

  • 2
    \$\begingroup\$ I can't see anything wrong from the diagram so I am afraid the devil is in the detail. Where do all the power and ground connect to exactly. Also for further experimenting: fuses are cheaper then Arduino's. had a quick look at the nano but I can't find a 12V supply. So what do you use to power it? \$\endgroup\$ – Oldfart Mar 16 '18 at 12:38
  • \$\begingroup\$ Hi Oldfart, They are supplied by the same 12V indeed. Will edit the circuit accordingly. \$\endgroup\$ – VoltsAndNuts Mar 16 '18 at 12:53
  • \$\begingroup\$ Do you have series resistors between the Arduino outputs and the LED controller inputs?? \$\endgroup\$ – Spehro Pefhany Mar 16 '18 at 13:13
  • \$\begingroup\$ Hi Spehro, Do you mean on the NRZ bus com'? I think not. \$\endgroup\$ – VoltsAndNuts Mar 16 '18 at 13:15
  • \$\begingroup\$ The Arduino Nano can't handle 12V inputs according to their tech specs - 5V max. Sorry, I misread too quickly - 12V is indeed allowed on the VIN. \$\endgroup\$ – Araho Mar 16 '18 at 13:27

You should add resistors on signal lines between the Arduino outputs and the LED boards. A few hundred ohms (maybe 470 ohms to 1K) should suffice, if your speed is high you may have to use a lower value depending on cabling etc.

The reason is that the ground on the LED boards will bounce around relative to the Arduino supplies as the LEDs switch. If it bounces outside the supply range by more than a few hundred millivolts, significant current will flow in the protection diodes on either chip. If that current is too high, it can cause latchup of the CMOS chip which will generally be destructive if there is a lot of power supply current available.

| improve this answer | |

If the power sag of Vss drops below the PWM voltage by 0.5V SCR shootthru (aka Latchup), will destroy the uC.

ABSOLUTE MAXIMUM on inputs is -0.5V to Vcc +0.5V.

Ref Table 33-1. Absolute Maximum Ratings Atmel-2545W-ATmega48/V / 88/V / 168/V_Datasheet_Complete-11/2016

If this (Vin exceed Abs Max) is exceeded then SCR latchup may occur and if exceeded by 0.1V latchup WILL occur with the inherent buried substrate of the CMOS device like an SCR inside affected creating a low ohm short circuit across Vss each which can be absorb heat and burn up recoverable only in a brief time by power cycling.

So PWM input must always be less than Vss by ensuring Vss is stable.
7~12V is only for a 5V LDO.

Misc. Info.
Operating Voltage:
2.7 - 5.5V for ATmega48/88/168
1.8 - 5.5V for ATmega48V/88V/168V

Table 33-2. Common DC characteristics Ta = -40°C to 85°C, V CC = 1.8V to 5.5V
Vol =0.9V max @ 20mA ... RdsOn("0")=45 Ohms max (25 typ)
Voh=4.2V min @20mA @5V ...RdsOn("1")= 0.8V/20mA =40 Ohms max ( 25 typ)

I call this RdsOn "ESR" and this rises as Vgs is lowered with Vss. which is useful for computing LED load currents with appropriate Rs added if Vss > Vf.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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