Production Arduboy Schematic

7 posts were split to a new topic: Display for homemade Arduboy

I decided to necro-post instead of starting a new topic for this.

In looking over a homemade Arduboy design for @mameise, I noticed a few questionable component values used in the real Arduboy that I’ve never evaluated before.

  1. Resistor R7, connected to the PROG pin of the MCP73831 charge controller, determines the battery charge current. Its value is 2K, which will result in a current of 500mA. I believe the recommended charge current for the type of LiPo battery used for the Arduboy is 1C (a current of 1mA per 1mAh battery rating). The Arduboy battery is rated 180mAh so a 1C charge current would be 180mA. 500mA is 2.8 times 1C, or 2.8C. That seems quite excessive to me and probably isn’t very good for the life of the battery. Some LiPo batteries meant for RC use specify safe charge rates of up to 3C but I can’t find any recommendations that regular LiPo batteries be charged at more than 2C (and most say stay at, or below, 1C).

  2. The part number for the battery protection IC isn’t given in the schematic but, based on the wiring, it appears to be a DW01-P or equivalent. If this is the case, the DW01 datasheet recommends that R11 be 100ohm but the Arduboy uses 10K.

    This resistor, along with C11 is to filter out noise on the Vcc power input. The datasheet states that Icc (the current draw through the Vcc pin) is typical 3uA, maximum 6uA. At this current, the voltage drop across a 100ohm resistor would be a negligible 0.3mV to 0.6mV but with 10K it would be 30mV to 60mV. Since the voltage on Vcc is used to determine over-voltage and under-voltage, I wonder if the battery is still properly protected with such a difference between Vcc and the actual battery voltage?

  3. Again if the battery protection IC is equivalent to a DW01-P, resistor R6 is on the CS (Current Sense) pin. The datasheet says this resistor should be 1K but the Arduboy uses 10K.

    The datasheet states:

    In normal mode, the DW01-P continuously monitors the discharge current by sensing the voltage of CS pin. If the voltage of CS pin exceeds the overcurrent protection voltage (VOIP) beyond the overcurrent delay time (TOI1) period, the overcurrent protection circuit operates and discharging is inhibited by turning off the discharge control MOSFET.

    So if the resistor on CS is 10 times the recommended value, I wonder how that affects the over-current protection?

Does @bateske or anyone else have any information or thoughts about this?

1 Like

5 years, no battery failures other than mechanical ones.

For any issues use

But any ideas why you made those design choices?


Can you at least tell us what specific battery protection IC the Arduboy uses, so we can determine what resistor values are recommended for it?



Are mistakes choices?

Are mistakes not by definition the unintended consequence of some purposeful action which was undertaken by choice?
Conversely, can a mistake be a mistake if someone didn’t make a decision of some kind?

(Or have I just been on the skooma again?..)


I was pretty spicy about the feedback about the power circuit but I might actually have a chance to fix it in another production batch. So thanks to @mlxxxp and thanks to everyone else for supporting Arduboy!

1 Like

It’s just a matter of changing 3 resistor values, so I would hope it wouldn’t be too much trouble. Maybe you should consider changing the RGB LED dropping resistors to something more to your liking, at the same time.

Yeah I have a chance to rebuild the BOM.

1 Like

Need to tweak R2 setting I think, charging at an extremely safe 23mAh, I’d like to get it to around 100.

The schematic in the original post indicates R7 is for setting the battery charge current (but maybe you have a new schematic where it’s R2?).

According to the MCP73831 datasheet, you would use a 10K resistor to get a 100mA charge current.

The formula is:
Ireg (mA) = 1000 / Rprog (kOhms)
Rprog (kOhms) = 1000 / Ireg (mA)

Oh, well, you called the programming resistor R2 in your post,

So I just ran a test on the old Arduboy which uses a 2k programming resistor and it appears to charge at 24mAh regardless.

I updated to a 6.8k resistor and I’m only seeing slightly less around 23mAh.

Seems to have to do mostly with the internal logic and the batteries internal resistance so it doesn’t nuke small batteries.

By the way, I did all these tests with the first Arduboy, and nothing showed up weird. I guess I just never revisited the circuit after the tests all showed good values. If when I did this test it showed that the Arduboy was actually charging at 500mAh I’m pretty sure I would have gone back to the drawing board.

Sorry, my mistake. I’ve now corrected it.

The MCP73831 has 3 charge modes. The charge LED will be on in all three modes but the current won’t always be the programmed charge current. You have to make sure you’re measuring during Fast Charge Constant-Current mode.

Summarising the datasheet, the modes are:

  1. Preconditioning: If the voltage at the V BAT pin is less than the preconditioning threshold, the MCP73831/2 enter a preconditioning or Trickle Charge mode. It supplies a percentage of the charge current (established with the value of the resistor connected to the PROG pin) to the battery.
  2. Fast Charge Constant-Current Mode: The programmed charge current is supplied to the battery or load. This is the mode you should be in to measure the charge current.
  3. Constant-Voltage Mode: When the voltage at the V BAT pin reaches the regulation voltage, V REG, constant voltage regulation begins.
  4. (Charge Termination, charge LED off): The charge cycle is terminated when, during Constant-Voltage mode, the average charge current diminishes below a percentage of the programmed charge current.

I measured the charge current of one of my Arduboys, as seen through the USB port, using a USB breakout board I made. I’ve changed the programming resistor on this Arduboy to 8.2K. The measured current was about 123mA. The formula says it should be 122mA.


What do you get on the original 2k resistor? Do you see 500mAh?

I doubt you could get 500mAh out of a 180mAh battery :wink: (I assume you meant 500mA, not 500mAh.)

I didn’t want to go to the trouble of desoldering and replacing the 8.2K resistor, then having to reverse the process afterwards. What I did was hold a 2.7K through-hole resistor in parallel with the 8.2K. This would result in very close to 2K.

I only got 300mA (still way to high), not 500mA. This may be because I only discharged the battery down to 3.5V loaded, which immediately jumped up to over 3.6V when the Arduboy was turned off. The high remaining charge plus the high current plus the internal resistance of the battery might have quickly forced the voltage up to 4.2V, thus entering Constant-Voltage mode and limiting the current somewhat. I wouldn’t be surprised to see 500mA with a fully discharged battery.

Are you measuring through the multimeter directly or are you using a shunt resistor?

I’m testing it at the battery, at the usb port with multimeters and I also just got an inline usb tester hooked up and nothing is reporting anything close to that.

I gotta get this battery good and depleted maybe? I ran it all the way out several times and have not seen anything close to what you are getting on a stock arduboy.

I’ve tried 4 different multimeters in current mode, plus a µCurrent. All gave the same reading with the setup pictured above. The shunt in the µCurrent is 0.01 ohm.

I haven’t bothered to measure the current directly into the battery. It shouldn’t matter. With the Arduboy switched off, the extra current required to power the MCP73831 plus the charge LED will only add about 1.5mA.

I would try removing the meter measuring the battery from your setup. Its burden voltage may be a factor. Also try to use short wires for the battery or solder it directly back in.

Note that I’ve also changed the R11 and R6 resistors in the battery protection circuit to 220 ohm and 1K respectively.

I’ve also tested my Tetris Microcard, which has the same resistor mods, and saw the same 122mA charge current.