Power board

Since 2024, the esieabot has been equipped with a dedicated PCB to control its batteries and power delivery. It is reliable than the previous solution, it allows to monitor the battery level and the current consumption of the robot and has multiple integrated fuse.

../../_images/power-board.png

Components

The power board is composed of the following integrated circuits:

  • Raspberry Pi RP2040 microcontroller

  • Texas Instruments INA230 current sensor

  • Texas Instruments BQ25611D battery charger

  • Texas Instruments TPS61088 boost converter for motor power

  • Texas Instruments TLV61070A boost converter for Raspberry Pi and servo power

  • Texas Instruments TPS63031 buck-boost converter for internal RP2040 power

Operation

To connect the power board to your robot, plug a male to male JST PH2.0 cable from the power socket of the power board to the power socket of the add-on board. To switch ON the power board, move the power switch on the left to the I position. This will power the Raspberry Pi and the robot’s motors. To switch OFF the power board, move the power switch to the O position. To charge the battery, connect a micro USB cable to the micro USB connector on the power board. The battery will be charged automatically.

LEDs indicators

../../_images/power-board-led-indicators.png

The power board contains 5 status LEDs to indicate various states of the robot:

  • PWR (red): This LED indicates that the power board is ON. It is always ON when the power board is powered.

  • RUN (orange): This LED indicates that the motors are powered ON.

  • CHRG (white): This LED indicates that the battery is charging. If it blinks, it means that the battery cannot be charged. It can be due to too low or too high battery temperature.

  • DONE (green): This LED indicates that the battery is fully charged.

  • PLGD (blue): This LED indicates that an input power is connected, either from the micro USB connector or from the charging pad.

Charging profile

The battery charging is done in 4 phases:

  • Pre-charge: The battery is charged with a constant current of 0.2A until the battery voltage reaches 2.6V.

  • Fast charge: The battery is charged with a constant current of up to 3A until the battery voltage reaches 3.59V. By default, the input current from the micro USB port is limited to 500mA for compatibility reasons. You can manually change this limit from your Raspberry Pi using the command line, see documentation below

  • Constant voltage: The battery is charged with a constant voltage of 3.59V until the charging current drops below 150mA.

  • Termination: The battery is considered fully charged after 15 minutes of constant voltage charging.

Note

These phases are controlled by the BQ25611D battery charger and are indicated by the CHRG and DONE LEDs. They can be modified in firmware. More information can be found in the datasheet of the BQ25611D.

Commande line interface

The power board can be controlled from the Raspberry Pi using the power-cli command line interface. The power-cli command can be used to monitor the battery level, the current consumption and to update the firmware of the power board. This command line interface is provided by the package esieabot-power-manager which is pre-installed on esieabot-os.

Getters

  • Battery voltage: power get Vbat

  • Battery current: power get Ibat

  • Battery state of charge: power get soc

  • Battery 1 temperature: power get tempbat1

  • Battery 2 temperature: power get tempbat2

  • Charging state: power get charge

  • Power board hardware revision: power get board

  • Power board firmware: power get version

  • Self-test status: power get self-test

  • 5V rail voltage: power get 5V

  • Motor rail voltage: power get Vmot

Setters

  • Motor power: power set motor <on|off>

  • Charging current: power set current <value> Input current value must be between 100mA and 3200mA and must be a multiple of 100

  • Ship-mode (full power off): power set ship-mode <on|off> Setting ship-mode “on” will completely power off the power board. To turn it back on, you must plug in a charger or make contact on the QON jumper

Update

  • Firmware update: sudo power update <firmware_file> Firmware must be a .bin file

Firmware development

The power board’s firmware is developed in C++ using the Arduino framework and PlatformIO. The firmware is available on the esieabot power-board firmware repository.

Firmware update

The power board’s firmware can be updated in 3 different ways:

  • USB: Connect a micro USB cable to the micro USB connector on the power board and to your computer. Then, press the BOOT button on the power board and reset the power board by pressing the RESET button. Then, release the RESET button and finally release the BOOT button. The power board will appear as a USB drive on your computer. Copy the firmware file (.uf2) to the USB drive. The firmware will be updated.

  • SWD: Connect a SWD programmer to the SWD connector on the power board. Then, use a compabitible software to flash the firmware, like the Arduino IDE or PlatformIO with OpenOCD.

  • I2C: This is the simpler way to update the firmware. It is done automatically at each regular esieabot-os update. If you want to do it manually with a custom fimrware file, connect the power board to the Raspberry Pi and run the following command: sudo power update firmware.bin. The firmware will be updated and the next power board reboot.