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.
Components
The power board is composed of the following integrated circuits:
Component |
Version 1 |
Version 2 |
|---|---|---|
Microcontroller |
Raspberry Pi RP2040 |
Raspberry Pi RP2350A |
Current sensor |
Texas Instruments INA230 |
(Integrated in the charger) |
Battery charger |
Texas Instruments BQ25611D |
Texas Instruments BQ25620 |
Boost converter (motors) |
Texas Instruments TPS61088 |
Texas Instruments TPS61088 |
Boost converter (Raspberry Pi et servo) |
Texas Instruments TLV61070A |
Texas Instruments TPS61022 |
Buck-boost converter (microcontroller) |
Texas Instruments TPS63031 |
Texas Instruments TPS63001 |
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
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 at 1Hz, it means that the battery cannot be charged. It can be due to too low or too high battery temperature. If it blinks faster, it means that the batteries are missing or their fuse is blown.
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 VbatBattery current:
power get IbatBattery state of charge:
power get socBattery 1 temperature:
power get tempbat1Battery 2 temperature:
power get tempbat2Charging state:
power get chargePower board hardware revision:
power get boardPower board firmware:
power get versionSelf-test status:
power get selftest5V rail voltage:
power get 5VMotor rail voltage:
power get Vmot
Setters
Motor power:
power set motor <on|off>Charging current:
power set Ichrg <value>Input current value must be between 100mA and 3200mA and must be a multiple of 100Ship-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.