Say I buy an Arduino UNO R3. The specifications state that it is rated for a recommendation of 7-12V and that the limit is from 6-20V. What differentiates these two and how did they come up with those numbers? Did they test them using a power supply? Did they calculate it using the known component max voltage ratings?
4 Answers
Here's my interpretation:
Between 7V and 12V, the Arduino is guaranteed to work.
Under 6V, the Arduino is almost certain to fail, but won't be permanently damaged.
Over 20V it is likely to be permanently damaged.
Between 6V and 7V, maybe it will work, but no guarantees.
Between 12V and 20V, it will probably work, but the regulator is likely to overheat.
Some of these numbers will come from voltage limits stated on the datasheets of the various components on the board. In particular the 7V lower limit will be the minimum input voltage required for the regulator to guarantee to maintain a precise and steady 5V for the rest of the system. 6V might work, but you are pushing your luck.
Some will be based on worst-case current consumption, calculated power dissipation in the regulator, and an estimate of the resulting heating. From this they seem to have determined that 12V is the largest supply voltage that the manufacturer believes will not cause anything to overheat. It may or may not be conservative, because if you run the Arduino at full pelt in a 50°C environment, without adequate ventilation, you might find that the regulator still overheats, even at 12V.
- 2\$\begingroup\$ So, the ratings are determined by the individual components themselves? \$\endgroup\$SnappyRiffs– SnappyRiffs2025-06-25 15:03:25 +00:00Commented Jun 25 at 15:03
- 3\$\begingroup\$ @SnappyRiffs All specifications, of any kind, are defined by acceptable operating conditions of the components of the system. Be it voltage, current, temperature, phase of the moon. In any design. In any application. I was simply elaborating on the particular ones you asked about, which are mostly related to acceptable operating conditions of the voltage regulator on the Arduino board. \$\endgroup\$Simon Fitch– Simon Fitch2025-06-25 15:09:07 +00:00Commented Jun 25 at 15:09
- 2\$\begingroup\$ Note that the PCB is a component as well. It's not often that the PCB itself is the limiting factor, but it can be; typical FR-4, for instance, won't behave very well at very high temperatures. \$\endgroup\$Hearth– Hearth2025-06-25 15:24:14 +00:00Commented Jun 25 at 15:24
- 1\$\begingroup\$ The 12V limit could have been set by something as simple as "that's a very common power supply voltage, so we use it a lot and we know it works. Above that be dragons." \$\endgroup\$Glenn Willen– Glenn Willen2025-06-25 18:27:36 +00:00Commented Jun 25 at 18:27
- 1\$\begingroup\$ I would argue that albeit rare it is possible for electronic equipment to fail due to undervoltage. The conservative interpretation would be that in the recommended range it works, in the absmax range it might work, and outside of that it will be damaged. \$\endgroup\$Vladimir Cravero– Vladimir Cravero2025-06-27 10:28:16 +00:00Commented Jun 27 at 10:28
The onboard regulator is supposedly a NCP1117 which is a slightly beefier version of the AMS1117. From the datasheet:
- Tj(max) is 150°C
- Rth(j-a) is 160°C/W on the minimum size pad
- Vin(max) is 20V
- Dropout voltage is typically around a volt but could be up to 1.2V
The lower limit is set by the dropout voltage. There is a series diode which it sounds like they are ignoring (a few hundred mV of drop). You should be ok at 6V input but with higher currents or transients you may have a brownout. 7V guarantees you will be good under all load conditions.
The upper absolute limit of 20V is set by the regulator - any higher and the manufacturer says all bets are off. At that voltage, you are burning off 15V in a linear regulator on a fairly small pad. At ambient temperature of 20°C, you should only be able to draw ~54mA before the regulator exceeds its maximum junction temperature. The idle current draw of the Arduino board is ~50mA so you really won't be able to do much of anything anyways. At 12V input, you'll have ~112mA of current draw which is much more comfortable.
The voltage regulator on the board is a NCP1117ST50T3G. That component has an absolute maximum input voltage of 20V. There's an additional 1A silicon (not Schottky) rectifier in series if it is powered through the barrel jack rather than the Vin pin.
However that does not mean that it will function reliably under all conditions, with 20V in especially if you're drawing current from the 5V supply, either directly or through GPIOs etc. Depending on how conservative you want to be and the maximum ambient, the maximum dissipation might be around 0.75W to 1.5W. Let's say for a hobbyist it's more like 1.4W. With a 20V input (19.3V at the regulator) and 5V out that's a maximum current of less than 100mA. Maybe as low as 50mA. With a more reasonable 12V input, the current limit due to power dissipation would be more like 100-200mA for an ambient up to 50°C maximum.
With SMT parts like that regulator used, the power dissipation capability depends on the footprint, and they've allowed a reasonable amount of copper however it's also heated by the PTC fuse.
On the low end, the dropout of that regulator depends on the current but it's around 1V. Add the diode drop to that and you get around 6.6V minimum at 100mA. The AVR will continue to work even a bit below 5V but not as reliably. And as you approach the dropout voltage the regulator becomes less able to keep noise and blips on the input voltage from affecting the 5V bus.
Ideally for this kind of regulator, you'd like the input voltage to be around 9V (assuming the series diode). That will minimize the power dissipation while still allowing enough voltage across the regulator for good load and line regulation. It is specified at a minimum regulator voltage of 6.5V with corresponds to more like 7.3V when you take the rectifier into account. A bit more if you need to operate at low temperatures.
The Arduino is a hobbyist product and is not specified like an industrial product. The user can (and often does) connect any number of devices to it, such as LCD or LED displays, LEDs, relays and so on. So I think they're being a bit vague because they don't want to have to educate the user right there on the spec sheeet.
There are at least two or even more approaches.
Sometimes you are making a device, you need to come up with some initial specs for it, such as input supply voltage range, and then select the components and design around them to fulfill your specs, and the specs are locked even if your components and design would allow for more range, as it allows you to change the design and components while still fulfilling the specs.
The other method is to take some components you already might have in stock and design a circuit with wanted functionality around them and try to calculate, estimate, or even guess what the resulting range will be and verify by measuring it holds, or then adjust it according to the measurements.
In this case the circuit is designed around a NCP1117ST50T3G linear 5V regulator, and it has a maximum allowed 20V input. A lot of the specs it has are validated down to 7V. Even if the Arduino has a diode in series on the input to drop some voltage, the regulator should work fairly well with lower voltage if current is small. With large current, it can heat up so while 20V is allowed it is recommended to use less. Maybe they calculated that at 12V it should not get too hot even with some assumed medium load current.
But we can only guess why they came up with those specific values. Perhaps the original specs were for non-LDO so a regular 7805 needs at least 7V in but newer design with NCP1117 allowed for less.