Powering Peripherals From a Microcontroller - Arduino UNO R3, Pi Pico W, Adafruit Feather NRF52840, BBC Micro:bit and Cytron Maker Nano RP2040
by kevinjwalters in Circuits > Microcontrollers
285 Views, 0 Favorites, 0 Comments
Powering Peripherals From a Microcontroller - Arduino UNO R3, Pi Pico W, Adafruit Feather NRF52840, BBC Micro:bit and Cytron Maker Nano RP2040
Microcontroller boards are often used by hobbyists with external peripherals which will have a requirement for a particular supply voltage range and current. This article takes a look at how to determine the limitations of a microcontroller board to determine how and if a sensor or actuator (including light-emitting devices) can be powered from the board and for low power devices whether they can be safely powered directly by GPIO. Peripherals can always be powered direct from an external power supply but this may be less convenient and add to the size, cost and complexity of a project.
The power limitations will be one part of evaluation process to determine the suitability of microcontroller board(s) for a hobbyist project. The following common and interesting boards are used as examples to discuss the documented and undocumented power limitations.
- Arduino UNO Revision 3 - a very popular board.
- Raspberry Pi Pico W - great value small board with a buck-boost DC-DC converter.
- BBC Micro:bit - a well-established board in the education arena with some interesting differences between the original V1 board and later V2 revision.
- Adafruit Feather nRF52840 Express - one from the Adafruit Feather series, convenient for LiPo battery power features.
- Cytron Maker Nano RP2040 - a board following the Arduino Nano layout with a 3.3V microcontroller.
A subsequent article will look at real world measurements with some typical hobbyist peripherals.
Some of the excerpts from schematics shown as images in this article have been reformatted to improve the presentation.
Supplies
The following microcontroller boards are examined in this article.
An Approach
The strange, useless image above is Stable Diffusion's output with the prompt: "A cool diagram showing the evaluation process for a microcontroller including its ability to power peripherals."
Broadly speaking, the power and current limitations of a microcontroller board will vary depending on
- how it's powered,
- how it creates other voltages onboard,
- what protection is used and
- how power is routed.
Ideally, the limitations should be fully described in the technical specification and/or in a datasheet. This allows a user to assess how/if peripherals can be connected. Sometimes essential details are absent and some combination of the following steps will be required.
- Consult the manufacturer or vendor either directly or via support forums. For the former, checking if responses can be published publicly or shared is wise.
- Take an informed look at the schematic, if available, or failing that inspect the board at hand.
- Take some typical and worst case measurements and make some conservative estimates.
There's also the option to
- Look for similar (working) projects ideally from technically-renowned authors, sites or publications.
- Seek opinions on Internet forums or Q&A sites ideally from knowledgeable users.
- Ask your favourite LLM-powered chatbot and pray it's trained on good data and it doesn't hallucinate.
If the product's power limitations are not well documented then there's a risk the product could change in the future and the project is no longer viable as it exceeds the limitations.
After determining the theoretical limit it's always worth doing some practical testing in the target environment(s) for the project:
- to verify calculated values;
- to check your understanding of the board is correct;
- to ensure any required high currents can be delivered - a hardware power profiler could be useful here;
- to check if there are any voltage drops;
- to monitor temperature rises of the microcontroller board and its components.
Additional Concerns
If power is from a battery then it's important to perform testing as the battery discharges. This is necessary because the voltage decreases over time - this will depend on battery chemistry, health/age and load. This can also be affected by battery protection circuits like the ones found on many lithium ion batteries (this includes LiPos).
Some peripherals require a very stable or very precise power supply. For example, a noisy power supply, a +/- 5% voltage tolerance or a 0.4V drop when loaded may be unacceptable.
If the calculated current is near the maximum value for a microcontroller or the software behaviour is critical for keeping it below the maximum then this testing may need to be repeated for significant software revisions to ensure that code changes have not increased the usage.
The nature of the limit is worth understanding to decide how close average and peak usage should be to the limit.
Power Supply Limits
The power for a microcontroller board clearly needs to be higher than the power requirements of the peripherals attached to the board. E.g. a 5V 200mA (1000mW) supply to a microcontroller board would never be able to meet the requirements for a 3.3V 500mA (1650mW) device although some might be able to provide 3.3V at 220mA (726mW).
USB
In simplified terms, the 5V power from USB has various prescribed current limits listed below. There's slightly more detail in the Wikipedia USB hardware page, table shown above.
- USB type-B and micro USB:
- 100mA for an unenumerated device or a passive hub
- USB2 500mA;
- USB3 (blue ports) 900mA;
- Battery chargers: 1500mA.
- USB-C: 1500mA.
The power from a power bank or charger may be substantially higher. The quality (gauge) of the USB cable will affect the ability of the cable to supply current with minimal voltage drop.
Some USB power supplies are intentionally just over 5V but within the permitted voltage range of the USB standard. The Raspberry Pi 12.5W Micro USB Power Supply is one well-known example at 5.1V. An interesting part of its specification is the "1.5m 18AWG captive cable with micro USB output connector" - the wire gauge has been chosen to be appropriate for the high current.
A simple simple approach for higher currents is to have multiple USB ports. This is a rare solution but can be seen on the Nordic Power Profiler Kit II where a second power-only port enables the device to supply 1A from any pair of USB ports.
USB Power Bank
These may look a bit like a simple battery but they are normally a lithium ion battery with a DC-DC converter to produce a constant 5V. They
- produce a slightly noisier supply voltage than a battery but far less than a desktop computer and
- can automatically turn off at low currents.
The automatic power off can get triggered if a microcontroller board only uses a few milliamps. This is well worth testing as power banks are unlikely to include this minimum current value in their specification.
Power Supply
- The power supply needs to genuinely capable of supplying the required current. The voltage and noise (ripple) at the maximum current is worth testing, particularly for an unfamiliar brand supply.
- Many microcontroller boards use a linear regulator to produce a low noise 3.3V or 5.0V supply. This will dissipate more heat for a higher power supply voltage. At high currents it's worth using the lowest voltage permitted for the board to minimise heat generation.
Battery
- Useful as a very low noise power supply.
- Batteries should be sized for the current requirements, e.g. 250mA would be inappropriate for a CR2032.
- Battery voltage decreases during discharge to a degree that varies based on battery chemistry, battery health/age and load.
- Important to test with battery power if it will be used and in the target environment as temperature affects battery performance.
- Important to understand battery deterioration over the lifetime of project.
- Protection circuits like the ones found on LiPo batteries will cause a drop to 0V when the battery voltage approaches a level that can damage the battery.
The Pi Pico W datasheet has a warning about Lithium batteries which applies to all microcontrollers and projects.
If using Lithium-Ion cells they must have, or be provided with, adequate protection against over-discharge, overcharge, charging outside allowed temperature range, and overcurrent. Bare, unprotected cells are dangerous and can catch fire or explode if over-discharged, over-charged or charged / discharged outside their allowed temperature and/or current range.
Arduino UNO R3
The Arduino UNO Revision 3 (AKA Rev3 or R3) is one of the most common and recognisable microcontroller boards used by hobbyists. Its microcontroller is powered at 5V and it has 5V GPIO. This makes it unusual relative to newer 3.3V microcontrollers.
Its huge popularity early on means that many peripherals were designed for a 5V supply and 5V logic levels. These are sometimes designed to work at 3.3V, sometimes happen to work and occasionally half work in a confusing manner.
There are many clones, some from well-known manufacturers, others from low-brand or no-brand ones. And there are dubious counterfeits using the Arduino branding but not made by Arduino. All of these may have different schematics and different components compared to the (genuine) Arduino UNO R3.
Specification
From UNO R3 > tech specs, it can be powered by
- USB-B (5V),
- 2.1mm barrel connector for 7-12V (centre-positive) or
- VIN pin on header (from the datasheet, this is 6-20V).
For outputs it has
- 3V3 and 5V output pins on headers (From pinout diagram, 3V3 has 50mA maximum) and
- GPIO current at 20mA.
The power tree in the datasheet initially appears useful but raises many questions. The legend shows the current values are maximum values for each component. The ATMEGA16U2-MU will be less familiar - the technical specs mentions it's a USB-Serial processor.
- Is VIN the header pin? Is this the same thing as the centre pin on the 2.1mm barrel jack?
- A reasonable output current from a typical op-amp is a few mA, what is the OPAMP component marked as a "conversion type" doing?
- Is the 8.7mA all for LEDs together? This looks likely.
- Are there any components like (schottky) diodes or switching bipolar or MOSFET transistors in the path for protection which will cause a small voltage drop?
Schematic
The parts of the schematic that relate to the power for the UNO-TH-Rev3e are shown above.
The opamp is acting as a comparator comparing the VIN (header pin input) voltage against the 3V3 line. The opamp switches the p-channel MOSFET off if the board is powered via VIN otherwise USB power (USBVCC) is connected to +5V and gets regulated by the LP2985-33DBVR to produce the +3V3. The body diode in the MOSFET is oriented to prevent back-powering the USB host.
The barrel connector power is PWRIN and this passes through the D1 diode to VIN. This will prevent VIN powering the barrel connector but not vice versa. This explains the higher voltage requirement for the barrel connector as the D1 diode will have a ~0.6V voltage drop (or ~0.3V for a schottky diode). The VIN voltage is then regulated to 5.0V by the NCP1117ST50T3G.
The schematic has some labels for the parts on it and the datasheets could be checked for those parts but the schematic is not a guarantee that these parts will not be substituted in the future. A low-brand Arduino clone is likely to be even less predictable.
The USB power will be limited by the supply. However, the UNO's 500mA polyfuse (MF-MSMF050-2) provides a lower limit for USB power only.
Other Datasheets
The OnSemi NCP1117 voltage regulator says it offers "Output Current in Excess of 1.0 A". This is fairly high for a microcontroller board but high currents will depend on the power supply to the Arduino and the regulator's ability to dissipate power in the form of heat. The Arduino UNOs do not have a heat sink for this but the printed circuit board (PCB) ground tracks/plane are a form of heat sink. The optimal scenario is the minimum input voltage from VIN pin or the barrel connector in a cool, ventilated environment.
The ATMega328P datasheet (page 258) adds more detail for GPIO. It's tempting to extrapolate to Arduino 20mA per GPIO to all 14 digital and 6 analogue pins - this would total 20 * 20mA = 400mA. Unfortunately, there is also an ATMega328P limit of 200mA total power for the processor and all GPIO pins. And certain groups of pins have additional total limits of 150mA for sourcing current and 100mA for sinking current. It also states 4.1V (0.9V below the supply voltage) is the minimum output voltage at 20mA - this is a worst case voltage but it illustrates more caution is required on GPIO as currents go beyond one or two milliamps.
The data sheet also has a reminder about what Atmel's definition of an absolute maximum rating means, reproduced below.
Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions beyond those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.
This is likely to be the reason why Arduino publish the GPIO limit as 20mA per pin rather than the datasheet's absolute maximum value of 40mA.
Rummaging
These are some good discussions on Arduino UNO powering. The dates on these discussions indicate the model will be R3 (i.e. not R4) even if that's not mentioned.
- StackExchange: Electrical Engineering: How much current can I draw from the Arduino's pins?
- Adafruit Forums: Arduino: Max current draw from arduino
- Arduino Forum:
- Maximum current draw on 5v and vin pins?
- Maximum current from the 5V pin? - Includes old links to Mike Cook's Tutorials on Power Examples and Power Supplies (via Internet Archive).
Conclusion
The only specified values are
- 50mA is available from the 3V3 pin.
- GPIO can output (source) 20mA with an additional total limit of below 200mA and below 150mA total for groups of pins.
The 5V pin is not specified and it's difficult to know what's safe. Starting at 450mA to be below the polyfuse value (relevant to USB power only) and subtracting the peak measured processor current is a starting point. Using the minimum voltage permitted if powered via barrel connector or VIN will minimise the temperature rise on the regulator.
This is for a (genuine) Arduino UNO R3. It's very important not to assume that other Arduino boards (including the UNO R4) and boards from other manufacturers have the same specification and limits.
A few examples are:
- Arduino UNO R4 has lower limits for GPIO, just 8mA and a very different power system.
- Arduino Nano 33 IoT has a 5V pin but it needs to be connected by the user with (some very simple) soldering. The GPIO logic level is 3.3V and this is limited to 7mA on this SAMD21-based microcontroller.
- Cytron Maker Uno+ is designed for USB power only and therefore omits the 5V regulator, barrel connector and leaves the VIN pin unconnected.
See Also
- Arduino: Power Consumption on Arduino Boards by Karl Soderby - a look at power usage on the Arduino UNO R4 WiFi, Arduino GIGA R1 WiFi and Arduino Nano ESP32 using the Nordic Power Profiler Kit II.
- Arduino: Powering Alternatives for Arduino Boards - this has a very useful looking table for current per product from output pins claiming the UNO R3 can supply 1000mA from 5V and 150mA from 3.3V but the first value appears optimistic and unqualified and the second value is contradicted by documentation cited here (issue #2052).
- Tech Explorations: The Ultimate Guide to Powering Your Arduino Uno Board - a thorough review similar to this one, slightly more detail.
Raspberry Pi Pico W
The Raspberry Pi Foundation followed the success of their single board computer (SBC) with a very affordable microcontroller board, the Pi Pico based on their new RP2040 microcontroller. The Pi Pico W is the variant with an additional chip to support Wi-Fi and Bluetooth.
Specification
From the detailed Pi Pico W datasheet it can be powered by
- Micro USB (5V) or
- VSYS pin at "~1.8V to 5.5V".
For outputs it has
- VBUS pin - directly connect to USB power.
- VSYS pin could be used as an output on USB power, it's after a schottky diode.
- 3V3(OUT) pin - "(maximum output current will depend on RP2040 load and VSYS voltage; it is recommended to keep the load on this pin under 300mA"
- There's no indication on GPIO currents.
Schematic
This appears in the datasheet to aid understanding of how the RP2040 is powered. The detailed Powerchain section 3.4 explains the surprisingly wide permissible supply voltage range including voltages far below 3.3V. This is due to the use of a switched mode power supply (SMPS) in the form of a RichTek RT6154 Buck-Boost Converter converting a wide range of DC input voltages to 3.3V. This also has an interested feature to change the operation mode to optimise for efficiency or for low-noise. This converter can supply 3.3V at 3A under some conditions but clearly these are not met on the small Pi Pico W board as the recommendation is to stay under 300mA.
Other Datasheets
The RP2040 datasheet describes the GPIO as "Output drive strength can be set to 2mA, 4mA, 8mA or 12mA" in section 2.19.4. Pads. The table in section 5.5.3.4. IO Electrical Characteristics states the maximum source current is 50mA and maximum sink current is 50mA for total across GPIO and QSPI pins.
Rummaging
- Someone else has spotted and raised the issue of the 300mA recommendation vs 3A regulator: Raspberry Pi StackExchange: Maximum power draw on Pi Pico 3.3V rail with USB power.
Conclusion
- The only specified value is a recommendation to use less than 300mA from the 3V3(OUT) pin.
- The RP2040 microcontroller datasheet states a 12mA maximum per GPIO and a limit across all GPIO of 50mA.
- The VBUS offers direct access to USB power so will inherit its limit although it's unclear if the PCB trace length, width and thickness ("weight") can carry that.
BBC Micro:bit
The original V1 BBC micro:bit was designed as an affordable board for education. The V2 added some new features and changed the power capability. The edge connector has become popular and for peripherals and to enable products to be controlled by a micro:bit. A few other boards replicate the connector, like the Adafruit CLUE and the KittenBot Meowbit.
Specification
From the useful Power Supply documentation it can be powered by:
- Micro USB (5V) or
- JST-PH socket for a two alkaline battery pack.
- LiPo batteries must not be used as the fully-charged voltage exceeds the 3.6V component maximum even with the additional voltage drop allowance** from a "BAT60 [schottky] diode".
- Three cell battery packs must also not be used for the same reason.
- "3V Ring Powering" (with care due to lack of regulation and protection)
- Two obscure "rounded rectangular pads" (sometimes referred to as lozenges) on the back of the board.
- The edge connector 3V (this is normally used as an output for peripheral).
For outputs from Power Supply section for V1 and V2 it has:
- 3V pad limits.
- V1: 120mA - 30mA onboard worst case budget = 90mA.
- V2: 300mA - 90mA onboard worst case budget - 20mA (safety margin?) = 190mA (this is lower than the 270mA mentioned in Power Supply article).
- GPIO output limits.
- V1: 5mA (both source and sink).
- V2: the specification of values inherited from the nRF52833 datasheet is more complex and expressed as current to maintain a certain voltage, typical values are 9mA (source) and 10mA (sink).
The edge connector does not provide access to the voltage from the USB supply meaning 5V devices cannot be powered from it.
** See Other Datasheets and Testing section.
Schematic
- The V1.3b schematic shows the low current regulator being used for the USB power only. The regulator is a feature of the microcontroller used for USB interfacing (NXP MKL26Z128VFM4) .
- The V2.2.1 schematic has an interesting use of two diodes in series for the circuit protection on the battery.
- The 3V pad on the V2 is always regulated, the V1 is only regulated when USB powered.
Other Datasheets
The schottky diodes are interesting on the micro:bit. The Vf chart is shown above from the datasheet for the Infineon BAT60A, in a warm room the Vf is 0.12V for 10mA and 0.18V for 100mA, surprisingly low.
Rummaging
One slight surprise is a recommendation to limit the total GPIO current 15mA, mentioned by Nordic staff on the support forum:
Testing
Here's some quick testing with a V1.3b (angle the board to read this as it's printed in black on black!) and V2.2.1.
- Three not-recently-charged Rechargeable NiMH AA batteries (INADVISABLE, VOLTAGE IS TOO HIGH) no external load.
- V1 battery 3.83V, 3V pad 3.74V.
- V2 battery 3.83V, 3V pad 3.29V.
- Two very old used alkaline AA batteries no external load.
- V1 battery 2.58V, 3V pad 2.48V.
- V2 battery 2.59V, 3V pad 2.43V.
- Two old used alkaline AA batteries 51 ohm external load (~50mA).
- V1 battery 2.65V, 3V pad 2.48V
- V2 battery 2.68V, 3V pad 2.35V
Some observations.
- Three rechargeable batteries should not be used despite their nominal voltage of 1.2V as three can exceed the recommended maximum voltage of 3.6V. The voltage in the testing was 1.28V per cell for batteries that were charged six months ago and had been used a little. The voltage will be far higher for a short period if they have just been charged and are used immediately.
- The 3V pad on the V2 is likely to be via the 3.3V regulator (the schematic confirms this).
- The V1 shows the schottky diode is actually 0.09V to 0.17V for these tests. A forward voltage of 0.3V is commonly used in discussions about schottky diodes but clearly it can be lower and can vary.
- The V2 voltage drop from battery to 3V pad is more than the V1 because of the regulator and the pair of series schottky diodes. It is still remarkably low due to the choice of diodes and performance of the Onsemi NCP114 low dropout regulator
- It's clearly important to test with representative loads.
Conclusion
- The specification is clear on the 90mA for the V1 and less clear on the 190mA or 270mA for the V2 from the 3V pad.
- The 3V pad will output 3.3V on USB power but for an alkaline battery pack it will be lower on the V1 and, based on testing, slightly lower on the V2.
- The V1 could supply more power if it is only powered via the battery connector but there's no specified value for this.
- The maximum battery voltage is specified as 3.6V but strictly speaking this appears to be a V1 only limit. The V2 has a different power design and regulates the voltage everywhere including the 3V pad although higher voltages will cause more power dissipation in the regulator.
- A GPIO current of 5mA per pin is practical on both V1 and V2 and Nordic recommend total GPIO current of 15mA on their forums.
- For any use where the V2 is required for its power features then care must be taken to avoid using an incorrect version board. The V1 and V2 boards do look a bit different but a user may not realise a V2 is required and may not notice or be aware of the differences in appearance.
- The absence of (near) 5V power on the edge connector is a limitation**.
See Also
- BBC micro:bit: Connecting a power supply to the micro:bit
- Kitronik: Options for Powering the BBC micro:bit
** This is why the micro:bit-based Cytron EDU:BIT has a special power splitter cable.
Adafruit Feather NRF52840 Express
The Feather series is Adafruit's take on a range of 3.3V microcontroller boards and stacking peripherals called Wings. The Feather nRF52840 Express using Nordic's microcontroller was the first of series to feature a single-chip, Bluetooth Low Energy capability usable from CircuitPython.
All Feather boards have JST-PH sockets with LiPo charging for battery power. This can be used at the same time as USB power with USB power taking priority.
Specification
From Adafruit Learn: Introducing the Adafruit nRF52840 - Power Management It can be powered by
- Micro USB (5V) or
- JST-PH socket for (single cell) LiPo. Only lithium rechargeable batteries can be used due to the charging circuit.
For outputs it has
- BAT pin - direct connection to JST-PH battery (no polarity protection).
- USB pin - direct connection to USB power.
- 3V pin - output from the onboard 3.3V regulator, "While you can get 500mA (implied minus the onboard usage) from it, you can't do it continuously from 5V (from USB) as it will overheat the regulator."
Schematic
The schematic confirms the USB pin is directly connected to USB power. There is a (schottky) diode and p-channel MOSFET as protection and selection of the voltage source for the Diodes Inc AP2112 3.3V low dropout regulator. The schematic has some notes about dropout voltage. At high currents a LiPo battery near the end of its discharge below around 3.6V might cause the 3.3V voltage to drop a little below 3.3V.
A MicroChip MCP73831 Li-Polymer Charge Management Controller looks after charging a LiPo connected to JST-PH from USB.
Other Datasheets
The BBC micro:bit page in this article covers looking at the nRF52 series microcontroller in the V2 version.
Conclusion
- The documentation only informs the user that a peak current of 500mA is the limit from the 3V pin but this cannot be sustained due to thermal issues. No limit for continuous use is offered.
- There is no value for power from USB pin but as this is a direct connection it will inherit the USB power limitations plus anything from PCB trace dimensions.
- The nRF52 datasheets state a GPIO current of 9mA per pin is practical and Nordic recommend total GPIO current of 15mA on their forums.
Cytron Maker Nano RP2040
The Cytron Maker Nano RP2040 follows the Arduino Nano's form factor and pinout. It uses the same microcontroller as the one on the Pi Pico. It's similar to the Pi Pico but adds a very useful reset button, a user button, two RGB pixels and on the underside there's a tiny speaker and two "Maker Ports" which are compatible with Adafruit's STEMMA QT peripherals and Sparkfun's Qwiic peripherals. The 3.3V boards in Seedstudio's Grove range can also be used with a (supplied) converter cable.
The first Arduino Nano boards used 5V microcontrollers but now the majority of the range uses 3.3V. It's worth carefully checking the logic level and ADC voltage compatibility of peripheral boards.
Specification
From the MAKER-NANO-RP2040 Datasheet, it can be powered by
- micro USB (5V) or
- VIN pin on header at 7-30V.
For outputs it has
- 3V3 pin:
- VIN power: 50mA minus onboard usage;
- USB power: 100mA minus onboard usage.
- 5V pin:
- VIN power: 100mA minus onboard usage.
- USB power: 800mA minus onboard usage.
- There is no detail on the GPIO but these are simply pins from the RP2040 microcontroller.
This raises a few questions.
- Is the 5V pin at the same voltage level as USB power when it's powered from there?
- How much power does the RP2040 use? And how much for the RGB pixels, speaker and GPIO indicator LEDs? And for the first two are they using 3.3V power or 5V?
Other Datasheets
The Pi Pico W page in this article covers looking at the RP2040 microcontroller datasheet for GPIO current limits.
Board Inspection
The schematic is not published but the board's layout is visible and some educated guesses can be made from the traces and verified with some voltage measurements using a multimeter.
- A relatively large SMT component sits on the underside near the micro USB socket. This is a schottky diode (the label and a ~0.3V drop confirm this). This must be protecting the USB host from accidental back-powering by the board. The voltage on the 5V pin is around 4.7V on USB power so this appears to be the USB power passing through the diode. Given a reasonable pcb trace width/thickness and short length this should be able to supply the full USB power to the 5V pin.
- There's a 4 pin CJ 78L05 at the end of the board in a SOT-89 package. This must be what lowers the VIN voltage and it does have a 100mA minimum and no stated maximum.
- There's a smaller 5 pin device nearby (perhaps labelled 2U=F8W?) which looks like it's the 3.3V regulator and must be somehow taking either the USB power via diode or 5V regulated VIN to power the RP2040. The similar Cytron Maker Nano uses a RichTek RT9013 LDO regulator according to its schematic at 3.3V, this RP2040 board may use the same component, or may not.
Testing
- The Maker ports supply 3.3V and therefore consumption from peripherals is coming from the 3.3V budget.
- Beeps on the speaker using CircuitPython's simpleio.tone use approximately 90mA.
Conclusion
- The datasheet is useful in providing current limits for the 3V3 and 5V pins. This was enhanced to add detail about USB vs VIN power after a discussion with the manufacturer.
- The RP2040 microcontroller datasheet states a 12mA maximum per GPIO and a limit across all GPIO of 50mA.
- The datasheet mentions the GPIO LEDs can easily be disabled to reduce the current by 1.19mA. This small saving is only really relevant to low-power / battery-powered applications.
- For the "onboard usage" some testing would be required to work out the current consumption of the RP2040. If the RGB pixels, speaker or Maker ports are used then the current for those needs to be included.
Comparison Table
This table tries to summarise the power features and limitations of the microcontrollers boards. It's difficult to standardise the data to for a true like-for-like comparison. Before making a final decision, the conclusion section in this article is worth consulting for the board and ensure you read the latest manufacturer's documentation.
Board | Microcontroller | Power Supply | GPIO | Power Output (mA) | |||
---|---|---|---|---|---|---|---|
pin | total | 3.3V | 5V | Other | |||
Arduino UNO R3 | ATMega328p | USB type-B 500mA 2.1mm barrel (centre pos.) 7-12V VIN pin 6-20V | 20 | 200** | 50 | USB: 500mA polyfuse Other: ? | - |
Raspberry Pi Pico W | RP2040 | USB micro | 12 | 50 | 300 | VBUS: direct | VSYS: USB with diode |
BBC micro:bit V1 | nRF51822 | USB micro JST-PH for alkaline batteries | 5 | 15 | 3V: 90 | - | - |
BBC micro:bit V2 | nRF52833 | USB micro JST-PH for alkaline batteries | 9 | 15 | 3V: 190 | - | - |
Adafruit Feather nRF52840 Express | nRF52840 | USB micro JST-PH for LiPo battery | 9 | 15 | ? | USB: direct | BAT: direct |
Cytron Maker Nano RP2040 | RP2040 | USB micro VIN pin 7-30V | 12 | 50 | USB: 100 - onboard VIN: 50 - onboard | USB: 800 - onboard** VIN: 100 - onboard | - |
** See board's page in this article for essential detail.
Going Further
The image above is from element14's video about measuring ripple (noise) on power supplies. The green line is the 5V power supply rail and the purple line is a specialist near-field probe being used to examine an inductor's action.
Some other interesting boards to investigate:
- Arduino UNO Revision 4 (R4) Minima (or WiFi) - superficially, this looks very similar but the power is very different to the R3. It has USB-C, the polyfuse is used in a different place in the circuit on the WiFi variant, it uses a buck converter and the processor has significantly lower limits on GPIO current.
- Unexpected Maker FeatherS2 and Adafruit Feather ESP32-S2 both have a second regulator which can be turned off in software to disable power to the peripherals on the i2c bus.
- Adafruit CLUE - the backlight uses a fair amount of current and bugs could allow a DC signal through its tiny speaker with associated high current.
- Adafruit Circuit Playground Express - there's no series resistor on the infrared diode, improper or unwise/optimistic use will use a lot of current.
- A General Instruments/MicroChip PIC-based board.
Further reading in addition to the links on previous pages:
- ElectroBOOM: Definition of Voltage and Current (ElectroBOOM101-002)
- Science Buddies: How to Power an Arduino Project (Lesson #19) (YouTube) - shows how to power an UNO R3 and an UNO R4.
- Adafruit Learn: How to Choose a Microcontroller - does not really cover power requirements but it's an interesting general read on the selection process.
- Andreas Spiess (YouTube)
- #334 How to find the right Power Supply for your Project - a look at mains power for projects.
- #351 10 Battery Power Boards for Raspberries and ESPs. Start of “SuperPower” project
- EEVblog
- EEVblog #1009 - Voltage vs Power vs Energy
- EEVblog 1538 - NEW PROJECT Part 2 - Microcontroller Selection (YouTube) - a search for a low-power microcontroller chip.
- Wikipedia: Comparison of single-board microcontrollers
- Heat and thermal testing
- SparkFun: Understanding Thermal Resistance
- Thermal testing Raspberry Pi 4 - a look at the heat generated by the Pi 4 (not Pi pico) from The MagPi magazine issue 88.
- Group test: Best Raspberry Pi 4 thermal cases tested and ranked from The MagPi magazine issue 90.
- Analog Devices: Temperature Measurement Theory and Practical Techniques (Application note AN-892) (pdf)
- EEVBlog: EEVblog #105 - Electronics Thermal Heatsink Design Tutorial (YouTube)
- Battery power
- The voltage over time (for a constant current load) can be seen in the plots below.
- CR2032 coin cells and Lithium ion (LiPo): Instructables: Battery Capacity Measurement Using Kitronik Inventor's Kit and Adafruit CLUE.
- Zinc-carbon, Alkaline and NiMH rechargeable batteries: Instructables: NiMH Rechargeable Battery Comparison Using Kitronik Inventor's Kit and Adafruit CLUE.
- Adafruit
- Collin's Lab: History of the Battery (YouTube)
- Collin's Lab: Battery Basics (YouTube)
- Collin's Lab: Powerful Battery Usage with Ladyada (YouTube)
- Power profiling
- Nordic Semiconductor: Become an expert on power profiling your application (YouTube)
- Instructables: RGB LED Current Measurement With Nordic Power Profiler Kit II
- Power supply noise
- Cadence PCB Solutions: How to Measure Power Supply Ripple on an Oscilloscope
- Instructables: Exploring and Reducing ADC Noise on Adafruit CLUE (Nordic NRF52840) - (spoiler alert) the ADC noise on a micocontroller board if influenced by the 5V supply despite the use of a linear regulator for the 3.3V microcontroller's supply.
- element14 presents: How to Measure Ripple Voltage on a Switch-Mode Supply - Workbench Wednesdays (YouTube) - shows why a multimeter cannot measure noise on a power supply and how an oscilloscope and other test equipment can be used to measure it using a well-designed and a badly-designed switched-mode power supply.
- EEVblog: EEVblog #594 - How To Measure Power Supply Ripple & Noise