board dev studio

Verified 2026-10

m5stack INA226AIDGSR ATOMIC Motion Base v1.2 with Power Monitor

Atomic-shape drive base with 4 servo and 2 DC-motor channels behind an STM32F030F4P6 I2C slave at 0x38, an RZ7899 driver, an INA226 battery monitor and a 900 mAh 18350 cell - $8.50 USD.

Place this board on a carrier in the editor →

Logic level3.3 V

Part & documents

Headline partINA226AIDGSR
Data sheetINA226AIDGSR data sheet →
Sourceshop.m5stack.com/products/atomic-motion-base-v1-2-with-power-monitor →

Specs

MCUSTMicroelectronics STM32F030F4P6 (Arm Cortex-M0, TSSOP-20) with RZ7899 motor driver and TI INA226AIDGSR power monitor

Pinout

9 pads, as the vendor numbers them.

#NameFunctionSignals
13V33.3 V rail from the Atom, odd column, top
2I2C_SCLI2C clock to the base's STM32, even column
3PORT.Cone signal line of the PORT.C HY2.0-4P socket, odd column
4I2C_SDAI2C data to the base's STM32, even column
5PORT.Cthe other signal line of the PORT.C socket, odd column
65V5 V rail, charging input, even column
7PORT.Bone signal line of the PORT.B HY2.0-4P socket, odd column
8GNDground, even column
9PORT.Bthe other signal line of the PORT.B socket, odd column

Buses

BusSignalsPinsVoltageNote
I2C ×1SDA, SCLI2C_SDA, I2C_SCL3.3 V VThe Atom talks to the base's STM32 at 0x38 on pads 4 (I2C_SDA) and 2 (I2C_SCL): servo angles at 0x00-0x03 (0-180 deg), servo pulse widths at 0x10/0x12/0x14/0x16 (500-2500 us), motor speeds at 0x20-0x21 (signed -127 to 127). The base's own INA226 is not on the Atom's bus at a published address.

I²C / bus addresses

AddressBusDeviceNote
0x38I2CSTM32F030F4P6 controller (servo/motor registers)

Power

Input900 mAh 18350 cell, charged at 5 V from the Atom's USB-C or a Grove socket (switch must be ON)
Typical draw0.041 mA

Notes

The vendor names the headline part in its title (INA226AIDGSR) but the board's controller is the STM32F030F4P6 that owns address 0x38 - the INA226 is the battery monitor, and its own I2C address is not published, so none is recorded. Servo channels are not in pin order: PA1 = Servo1, PA3 = Servo2, PA0 = Servo3, PA2 = Servo4. Pads 3, 5, 7 and 9 are labelled only 'PORT.C'/'PORT.B' by the vendor, so no wire colour is assigned to them here. Motor speed registers are signed (-127..127). The base must be switched ON before it charges. Overload protection trips at 5 V/5 A; peak 1 A per motor channel and 0.4 A per servo channel; operating range 0-40 C - narrower than an Atom.

AI context

Dense context for pasting into a model prompt — addresses, pinout, voltages, tolerances and the vendor's reference circuit.

PART: M5Stack Atomic Motion Base v1.2, SKU A090-V12, a 75.4 x 24.0 x 20.7 mm servo and DC-motor drive base for the Atom series, built around an STM32F030F4P6 (TSSOP-20) that exposes itself to the Atom as an I2C slave at 0x38. The headline part in the vendor's own title is the INA226AIDGSR current/voltage monitor that watches the battery; the rest of the power path is an RZ7899 motor driver, an ETA9740 charger and a DW01-A single-cell protection IC, and the pack is a removable 18350 cell at 900 mAh.
ADDRESSES: the base's controller answers I2C at 0x38 on the Atom's bus (I2C_SCL on pad 2, I2C_SDA on pad 4). The vendor does not publish the INA226's own bus address, so it is not recorded here.
REGISTERS at 0x38: 0x00-0x03 servo angle, one byte MSB, 0-180 degrees, read/write, channel 1-4; 0x10, 0x12, 0x14, 0x16 servo pulse width, two bytes MSB, 500-2500 us, read/write; 0x20-0x21 motor speed, one byte MSB, -127 to 127, read/write for motor 1 and 2.
PINOUT: the vendor numbers the Atom interface 1-9, odd pins in one column and even pins in the other, pin 1 unpaired: 1 = 3V3, 2 = I2C_SCL, 3 = PORT.C, 4 = I2C_SDA, 5 = PORT.C, 6 = 5V, 7 = PORT.B, 8 = GND, 9 = PORT.B. PORT.B and PORT.C are the base's two HY2.0-4P sensor sockets; the vendor's table names only the port on pads 3, 5, 7 and 9, not which of the port's two signal wires each pad reaches, so this entry does not assign a wire colour to them.
STM32 PIN MAP: PA10 = I2C SDA, PA9 = I2C SCL, PA4 = M1F, PB1 = M1R (DC motor 1 forward/reverse), PA6 = M2F, PA7 = M2R (motor 2), PA0 = Servo3, PA1 = Servo1, PA2 = Servo4, PA3 = Servo2 - the servo channels are not in numeric order on the port pins. A 4-pin SWD header (J3: 3V3, SWDIO, SWCLK, GND) is on the board for direct firmware work, and the STM32F030F4P6's own pins are BOOT0 1, PF0-OSCI 2, PF1-OSCO 3, NRST 4, VDDA 5, PA0-PA7 6-13, PB1 14, VSS 15, VDD 16, PA9 17, PA10 18, PA13/DIO 19, PA14/DCK 20.
SUPPLY: 5 V on pad 6 from the host Atom or through a Grove socket for charging, with a 18350 900 mAh cell; charge cut-off 4.14 V, discharge cut-off 2.5 V, charging current 5 V at 1.18 A, standby current 4.04 V at 40.97 uA with the switch on. Charger components per the schematic: ETA9740 with a 3.3 uH/4012 inductor L1, R2 150 k on ISET, C1/C3/C4/C5 marked 106 (10 uF) and C2 marked 475 (4.7 uF); the STM32 has C6 marked 104 (0.1 uF) and the 3V3 rail has its own decoupling.
LIMITS: overload protection trips at 5 V at 5 A; full-load steering current 3 A; peak current 1 A per motor channel and 0.4 A per servo channel. Operating temperature 0 to 40 C. Logic level on the I2C lines and the 3V3 pad is 3.3 V, matching the Atom.
TRAPS: (1) The base must be switched ON before it will charge - the vendor states this explicitly for both the host-cable and Grove-5V charging paths. (2) Servo channels 1-4 map to PA1, PA3, PA0, PA2 in that order, so wiring by pad order would run the wrong axis. (3) The battery is a removable 18350; the DW01-A protection and the INA226 monitor are separate chips, so the monitor readings are the reference for battery state, not the protection IC. (4) Motor speed registers are signed, -127 to 127, not 0-255. (5) The base is an Atom-shape board: its 3V3 pad is fed from the Atom, and the two Grove ports' remaining pins come from the base's own rails, not from the Atom's pins.

Provenance

Every figure on this page was read from the 6 sources below and last checked on Oct 25, 2026.