Designed, Built, Tested
Board pictured here has been fully assembled and tested.


Design Resources

Design & Integration Files

  • Schematic
  • PCB Layout
  • Bill of Materials
  • FAB Package
  • Firmware Files
Download Design Files 9.9 M

Evaluation Hardware

Part Numbers with "Z" indicate RoHS Compliance. Boards checked are needed to evaluate this circuit.

Check Inventory & Purchase


The MAXREFDES96 is an Arduino Uno R3-compatible board that provides battery charge, boost, and data-logging capabilities. The board can be operated tethered to a power supply or computer to charge a battery and operate untethered to use the battery to power the Arduino board. An SD card interface is provided to enable data logging up to 32GB of data. Status and battery state of charge (SOC) is displayed on three LEDs. An Arduino-compatible display can be added for more detailed data display.

Design files, firmware, and software can be found on the Design Resources accordion. The board is also available for purchase.

Features & Benefits

  • MAX17201 ModelGauge M5 EZ
  • MAX77818 Battery-Management PMIC (Charger Only)
  • Battery Charge Current Up to 3.0A
  • Battery Boost to Allow Running Untethered

Details Section

The MAXREFDES96 includes the MAX77818 battery-management PMIC (charger only) and the MAX17201 ModelGauge m5 fuel gauge to demonstrate Maxim’s battery-management technology. The board comes on an Arduino Uno R3 platform. The MAX77818 boost circuit can power the Arduino and MAXREFDES96# while disconnected from a power supply. Additionally, the included DS3231M RTC and a micro-SD card socket allow for data logging with timestamps. The MAX77818 automatically switches between charge mode and boost mode without host intervention to allow the board to switch from battery charging to boosted voltage; this allows the board to run in stand-alone battery-powered applications.

The MAXREFDES96# uses a variety of Maxim devices to make a charger, fuel gauge, and data-logging battery-backup system.

The MAX77818 is used for its programmable charge capability and runs up to 3A with an appropriate supply. It can be programmed to automatically switch between charge mode and boost mode based on the presence of the input power. This allows a stand-alone application that switches between charging the battery and boosting the battery voltage to power the 5V rail, allowing it to function properly without intervention from a host.

The MAX17201 is used for its ModelGauge m5 EZ fuel-gauge capability, which allows a compatible chemistry battery to be used without characterizing it, reducing development time.

The MAX7315 I2C-controlled port expander is included to reduce the number of pins used on the Arduino interface. Because the MAX7315 uses the I2C to communicate with the host, the I/O pins that the switches and LEDs would otherwise use can be used for something else. The MAX7315 controls three LEDs for display and debounces two switches for program control.

The MAX7369 I2C mux is included for two reasons. The MAX77818 is both a charger and a fuel gauge, and its fuel-gauge I2C address is identical to the MAX17201. Therefore, when the MAX17201 is being addressed, it must be isolated from the MAX77818, and the MAX7369 provides that isolation. Secondly, the DS3231M RTC is used on other shields, so the address could conflict between the MAXREFDES96 DS3231M and one used on another board. The mux allows the on-board DS3231M to be deselected if needed. The DS3231M also allows its address to be changed by pin strapping, if desired. There is one port on the mux that is uncommitted, which could be used to try out another device such as a fuel gauge that has the same address as the other fuel gauges.

Power is input through J8, a micro-USB connector that is used for power only; there is no data connection. No enumeration is done to determine the adapter capability. The MAX77818 regulates its input voltage, reducing charge current to maintain the input voltage at a programmable level. The voltage to which the software sets this is programmable. When running off the battery, the MAX77818 boosts the battery voltage to 5V to run the Arduino board.

J1 is a micro-SD card holder that can be used to store data from testing to an SD HC card having a maximum 32GB capacity. The SD HC card interfaces to the SPI port through a level shifter. The chip select is pin 10, which is common for an Arduino application. Other pins can be used, so if another card uses the SPI port, one of the chip selects may have to be moved to another pin. R56 is a 0 resistor that disconnects pin 10 from the chip select for the SD card and allows it to be wired to another pin without having to cut the board.

BT1 is a battery holder that allows a CR1225-type battery to be connected to the board to provide battery backup for the DS3231M RTC.

J7 allows a battery with a JST-PH 2 pin-mating connector to connect to the MAXREFDES96#. Next to J7 are pads (B+, B_, THM, THMGND) that can be used to connect a battery that does not have a JST-PH connector, or that has a thermistor included. If a thermistor is being added to a battery that has a JST-PH-compatible connector, the battery can plug into the JST connector and the thermistor can be connected to THM and THMGND. If using a thermistor, remove R11. If the thermistor is a value other than 10k, R34 needs to be changed to the value of the thermistor. Refer to the MAX17201 data sheet for recommended register settings for various thermistor beta values. If the JEITA battery-charging profile available in the MAX77818 is needed, this hardware setup has the temperature sensor connected to the MAX17201. The MAX77818 can be set to use an external temperature written to the temperature register, so reading from the MAX17201 and writing to the MAX77818 allow the use of the JEITA charging profile. This method is preferred because the MAX17201 has a curvature adjustment register in addition to the temperature gain and offset registers that both devices have, so the MAX17201 temperature measurement is more accurate.

SW1 and SW2 can be used for program control and are read through the MAX7315.

D1, D2, D3 LEDs can be used to display status as desired. They are written to by writing to the MAX7315, and the PWM feature allows for the LEDs to have variable intensity.

Required Equipment

  • Computer with Installed Arduino Software Programming Environment
  • Arduino Uno R3 Board
  • MAXREFDES96# Reference Design
  • Rechargeable LiPo Battery
  • 5V, 1.5A Power Source for Default Settings


  1. If the Arduino IDE is not loaded on the host computer, it must be installed. Download the Arduino IDE from and choose the version for the appropriate operating system.
  2. Figure 2. MAXREFDES96 Arduino GUI Download.

    Figure 2. MAXREFDES96 Arduino GUI Download.

    Download the MAXREFDES96# software.

  3. Make sure that the MAXREFRDES96Main.ino program is in the C:/User/user_name/Documents/Arduino directory in a folder of the same name. For example, with a file name of MAXREFDES96Main.ino, the file should be located at C:/User/user_name/Documents/Arduino/MAXREFDES96Main/MAXREFDES96Main.ino. Verify that the libraries are in the C:/User/user_name/Documents/Arduino/libraries directory. Again, the files are to be in a directory with the same name, so the MAX7315.C and MAX7315.H files are in a directory named C:/User/user_name/Documents/Arduino/libraries/MAX7315. The same applies for the MAX17201, MAX17201init, MAX77818, and MAX7369 files.


  4. Figure 3. MAXREFDES96 Arduino Library Directory Plug the MAXREFDES96# board into the Arduino Uno R3 board

    Figure 3. MAXREFDES96 Arduino Library Directory Plug the MAXREFDES96# board into the Arduino Uno R3 board.

    Figure 4. MAXREFDES96 Arduino R3 041118

    Figure 4. MAXREFDES96 Arduino R3 041118

  5. Plug the USB cable into the USB port of the computer.
  6. Plug the “B” type end into the Arduino board.
  7. Connect the power supply and MAXREFDES96# as shown below
  8. Figure 5. MAXREFDES96 Connected

    Figure 5. MAXREFDES96 Connected

  9. If the board needs to have the software loaded, follow the procedure below to load the firmware. If the files have not been loaded onto the host computer return to step #3 above.

    1. Open the Arduino IDE.
    2. Open the MAXREFEDS96Main program.
    3. Select Tools Board Info and select the board that is plugged into the computer.
    4. Select Tools Port and choose the port to which the board is connected.
    5. Select Sketch Upload and the software is uploaded to the Arduino board.

  10. Once the software is uploaded the lights blink D1, D2, and D3 in sequence for 200ms each, then all three turn on together. After that, battery SOC is displayed on D2 and D3, and D1 indicates that it is charging by blinking or discharging by being off. NOTE: The SOC is displayed on D2 and D3. SOC from 0% to 50% shows in D3 with five levels of intensity from dark to fully on. SOC from 60% to 100% shows with D3 lit and D2 with five levels of intensity from dim to fully on.
  11. The serial monitor shows the results of testing the SD card.

    • SD card absent or circuit fail: "Card failed or not installed"
    • These messages scroll away so the serial monitor must be viewed as the device starts up. The code includes a small routine that requires SW1 be pressed to continue, if it is desired, to ensure the SD card is installed.

  12. Once the program is loaded and the device is running, the USB cable and power supply can be removed and the MAX77818 automatically switches to boosting the battery voltage to 5V to run the Arduino board, facilitating its use in portable applications.

This completes the MAXREFDES96# setup.

Tools & Simulations

Software Development

Support & Training

Search our knowledge base for answers to your technical questions. Our dedicated team of Applications Engineers are also available to answer your technical questions.

Sample Products

Reference Design

Pricing displayed is based on 1-piece.

Up to two boards can be purchased through To order more than two, please purchase through one of our listed distributors.

Pricing displayed is based on 1-piece. The USA list pricing shown is for budgetary use only, shown in United States dollars (FOB USA per unit), and is subject to change. International prices may vary due to local duties, taxes, fees and exchange rates.