Configuring battery monitor with FPV ESC
-
Another question - when you use voxl-esc tools and spin id 2, do you get a total current measurement printed in terminal along with regular esc feedback?
-
@Dan-Jennings , did you figure out this one?
the way the battery publishing works on M0138 (FPV) ESC and M0129 (Mini) ESC is as follows:
- one of the MCUs on the ESC is hooked up to the total current sensor. On M0138 it is ID2, on M0129 it is ID3
- when flight controller requests feedback from the ESC (by setting appropriate bit in the commanded RPM or Power control packet), the ESC ID with the current measurement will send out its regular feedback packet and right after the special battery status packet
- this battery status packet is received and parsed by PX4 and if the
VOXL_ESC_PUB_BST
px4 param is set to 1, the battery status is published, code here - this only happens if
voxl_esc
px4 driver is running and and it is communicating with the ESC (e.g. UART baud rate is correct). You will see the ESC flash all 4 blue leds, which means the commands (disarmed rpms = 0 if not in flight) are received from the PX4 flight controller - you can view the battery status message in VOXL2 terminal using the following command:
px4-listener battery_status
I hope this helps!
Alex
-
@Alex-Kushleyev still pending on this. Have had other issues to solve. Will be starting another thread shortly.
-
-
We're finally rebuilt and recalibrated, but still no battery status. All 4 blue LEDs are flashing on the ESC, so the voxl_esc px4 driver should be running but we get:
voxl2:/$ px4-listener battery_status never published
Where would that PX4 param be located?
-
@restore , can you please check which version of voxl-px4 you are using? You can use “voxl-version” tool.
-
@Alex-Kushleyev
We are using px4 version 1.14.0-2.0.68
I connected to px4 with QGC and was able to confirm that VOXL_ESC_PUB_BST is enabled. It'd still be handy to know where those params are stored so we can edit them while connected through adb.Thanks
-
@restore The px4 parameters are stored in a binary file at
/data/px4/param/parameters
so you can't modify that file directly.However you can use the following to set a param:
px4-param set PARAM_NAME PARAM_VALUE
or view parameters with
px4-param show
-
@restore, also can you please check which version of ESC firmware you are running on the FPV ESC? you can do this using voxl-esc tools (while px4 is not running).
voxl-esc scan
I suggest to update to the latest ESC firmware in voxl-esc repository (dev branch).
-
@Alex-Kushleyev
ESCs are firmware version 39, hash 17d64675
I checked/usr/share/modalai/voxl-esc-tools/firmware
and the M0138 firmware matches the one here.modalai_esc_firmware_m0138_1_v0_39_RC11_17d64675.bin
-
@restore, thank you for checking.
Let's do another test:
- for safety, remove propellers from motors
- with px4 disabled, go to
/usr/share/modalai/voxl-esc-tools
on voxl2 - run:
./voxl-esc-spin.py --id 2 --power 0
-- this will send a zero power command to ESC ID 2 (which measures the total current and sends back the battery status message). Motors will not spin. This will also request the battery status and you should see output (if possible you can use the latest voxl-esc tools from dev branch from (https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/dev) since I am not sure which voxl-esc version is installed on your board).
./voxl-esc-spin.py --id 2 --power 0 ... Found voxl-esc tools bin version: 1.6 VOXL Platform: M0054 Detected RB5 Flight, VOXL2 M0054 or M0104! ... ... Board : version 42: ModalAi 4-in-1 ESC (M0138-1) ... ... [0.017] (2) RPM: 0, PWR: 0, VOLTAGE: 15.612V, TEMPERATURE: 35.87C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.612V, BOARD_CURRENT: -0.232A [0.034] (2) RPM: 0, PWR: 0, VOLTAGE: 15.609V, TEMPERATURE: 35.88C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.609V, BOARD_CURRENT: -0.200A [0.060] (2) RPM: 0, PWR: 0, VOLTAGE: 15.610V, TEMPERATURE: 35.86C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.610V, BOARD_CURRENT: -0.248A [0.080] (2) RPM: 0, PWR: 0, VOLTAGE: 15.618V, TEMPERATURE: 35.85C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.618V, BOARD_CURRENT: -0.224A [0.095] (2) RPM: 0, PWR: 0, VOLTAGE: 15.612V, TEMPERATURE: 35.87C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.612V, BOARD_CURRENT: -0.272A [0.120] (2) RPM: 0, PWR: 0, VOLTAGE: 15.608V, TEMPERATURE: 35.90C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.608V, BOARD_CURRENT: -0.240A [0.134] (2) RPM: 0, PWR: 0, VOLTAGE: 15.612V, TEMPERATURE: 35.92C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.612V, BOARD_CURRENT: -0.264A [0.160] (2) RPM: 0, PWR: 0, VOLTAGE: 15.613V, TEMPERATURE: 35.90C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.613V, BOARD_CURRENT: -0.248A [0.174] (2) RPM: 0, PWR: 0, VOLTAGE: 15.608V, TEMPERATURE: 35.92C, CURRENT: 0.000A, BOARD_VOLTAGE: 15.608V, BOARD_CURRENT: -0.168A
note that there are
BOARD_VOLTAGE
andBOARD_CURRENT
printed, which are parsed from the battery status message coming from the ESC ID2. Please note that the current around 0 is not very accurate due to a very large measurement range (showing -0.2A, but the discharge current should really be positive based on our convention).Alex
-
@Alex-Kushleyev
Thanks for the help, as I was calibrating the ESCs I did notice those messages, which confused me as to why we weren't able to get that information in PX4. On Monday it suddenly just started working despite my changing nothing. Gotta love when things fix themselves