@Alex-Kushleyev
I try reducing the pulse next.
We use ArduPilot with an external flight controller.
It would be nice to use the ESC UART protocol directly from the FC.
Having ArduPilot work on the VOXL 2 mini would be even better.
@Alex-Kushleyev
I try reducing the pulse next.
We use ArduPilot with an external flight controller.
It would be nice to use the ESC UART protocol directly from the FC.
Having ArduPilot work on the VOXL 2 mini would be even better.
We are planning to fly only in PWM.
Can PWM based control always be enabled as we want to avoid crashing due to the PWM to be disabled in flight?
if there is any valid packets received by the ESC via UART, the pwm input interface is disabled until the ESC is rebooted. This should not happen unless you are actually communicating with the ESC via UART. This is done to avoid any possible interference between UART-based control and PWM-based control while in flight. UART protocol is still fully functional.
Also, the flight is PWM based control, but I would like to get the ESC telemetry (RPM, voltage and current) via UART.
Could you make it possible?
@Alex-Kushleyev Thank you very much.
I was able to set the parameter for ID 3 from the information you provided.
And, I also confirmed that the motor spins via PWM by motor tests.
However, after the motor test was completed, some motors continued to spin even after the FC set the PWM to 1000.
Some motors will stop rotating once the motor test is complete.
I don't know if this is a parameter issue or an ESC firmware issue.
I modified min_rpm and min_pwm, but did not solve the problem.
<EscParameters>
<IdParams>
<param name="id" value="127"/> <!-- 0-7 .. 127 means use hardware ID pins to read ID-->
<param name="dir" value="2"/> <!-- 0=fwd, 1=rev, 2=fwd id-based, 3=rev id-based -->
</IdParams>
<UartParams>
<param name="protocol_version" value="2"/> <!-- reserved for future use -->
<param name="input_mode" value="0"/> <!-- reserved for future use -->
<param name="baud_rate" value="2000000"/> <!-- communication bit rate -->
<param name="char_timeout_ns" value="0"/> <!-- not used -->
<param name="cmd_timeout_ns" value="100000000"/> <!-- timeout for incoming commands before ESC will stop the motor -->
</UartParams>
<TuneParams>
<param name="pwm_frequency" value="48000"/> <!-- switching freqency of PWM signal going to motors. 24Khz and 48Khz are only options for now -->
<param name="vbat_nominal_mv" value="14800"/> <!-- used for sanity checking and limiting of voltage-dependent funcions -->
<param name="num_cycles_per_rev" value="7"/> <!-- number of pole pairs in the motor. used for converting electrical frequency to mechanical rpm -->
<param name="min_rpm" value="500"/> <!-- minimum RPM that will be attempted, otherwise capped -->
<param name="max_rpm" value="29344"/> <!-- maximum RPM that will be attempted, otherwise capped -->
<param name="min_pwm" value="30"/> <!-- cap for minimum power to be ever applied. max is 999 -->
<param name="max_pwm" value="999"/> <!-- cap for maximum power to be ever applied. max is 999 -->
<param name="pwm_vs_rpm_curve_a0" value="0"/> <!-- this is actually motor_voltage vs rpm curve.. using legacy naming -->
<param name="pwm_vs_rpm_curve_a1" value="0"/> <!-- Emax RS1306 3300KV with tri-blade 3x3x3 -->
<param name="pwm_vs_rpm_curve_a2" value="0"/>
<param name="kp" value="250"/> <!-- RPM controller proportional gain -->
<param name="ki" value="30"/> <!-- RPM controller proportional gain -->
<param name="max_kpe" value="300"/> <!-- maximum proportional erorr term (max is 999) -->
<param name="max_kie" value="100"/> <!-- maximum integral error term (max is 999) -->
<param name="max_rpm_delta" value="0"/> <!-- cap for maximum rpm error used in RPM controller -->
<param name="spinup_type" value="1"/> <!-- 0: traditional, 1: sinusoidal -->
<param name="spinup_power" value="70"/> <!-- power used to during spin-up procedure -->
<param name="latch_power" value="70"/> <!-- power used during latching stage of spin-up (out of 999)-->
<param name="spinup_power_ramp" value="8"/> <!-- it will take ( 4096 / (spinup_power_ramp*10000) ) seconds to ramp sinusoidal start-up power from 0 to spinup_power -->
<param name="spinup_rpm_target" value="1000"/> <!-- Desired RPM at the end of the sinusoidal spin-up procedure -->
<param name="spinup_time_ms" value="1000"/> <!-- Duration of the sinusoidal spin-up procedure -->
<param name="spinup_bemf_comp" value="1"/> <!-- 0: disable, 1:enable back-emf compensation in sinusoidal spin-up procedure -->
<param name="motor_kv" value="2850 "/> <!-- kV value of the motor. used in back-emf compensation during spin-up -->
<param name="min_num_cross_for_closed_loop" value="50"/> <!-- exit latching mode of fixed power after this number of zero crossings -->
<param name="protection_stall_check_rpm" value="1000"/> <!-- if motor spins below this RPM, stall check will trigger and stop / restart the motor -->
<param name="brake_to_stop" value="0"/> <!-- apply brake when stopping motor (or not) -->
<param name="stall_timeout_ns" value="20000000"/> <!-- after spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="require_reset_if_stalled" value="0"/> <!-- require sending an array of zero commands to reset before next spin-up, if motor stalled -->
<param name="tone_freqs" value="[200, 215, 225, 250, 0,0,0,0, 0,0,0,0]"/> <!-- 200 is 2000Hz, max 255 -->
<param name="tone_durations" value="[10, 10, 10, 10, 0,0,0,0, 0,0,0,0]"/> <!-- duration of each tone in units of 10 milli-seconds. Poor naming!!! -->
<param name="tone_powers" value="[60, 60, 60, 60, 0,0,0,0, 0,0,0,0]"/> <!-- max is 255 -->
<param name="dt_threshold_ns" value="150000"/> <!-- during start up, ignore inter-commutation times less than this val, probably noise -->
<param name="max_dt_ns" value="2500000"/> <!-- min and max values for time between two commutations. these are used as caps -->
<param name="min_dt_ns" value="10000"/>
<param name="dt_bootstrap_ns" value="2000000"/> <!-- filter bootstrap value for commutation dt during start up -->
<param name="spinup_stall_dt_ns" value="6000000"/> <!-- during spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="spinup_stall_check_ns" value="30000000"/> <!-- time after beginning of spinup to start checking for spinup stall -->
<param name="alignment_time_ns" value="0"/> <!-- alignment time before spin-up -->
<param name="timing_advance" value="0"/>
<param name="sense_advance" value="0"/>
<param name="demag_timing" value="0"/> <!-- unused -->
</TuneParams>
</EscParameters>
@Alex-Kushleyev
I updated to the new firmware.
However, ESC ID 3 doesn't work now.
ESC ID 3 is set as the fallback from this message.
WARNING: 57600 baud rate is the fallback baud rate if ESC params are not valid
I then attempted to rewrite the parameter using this command, but it failed.
./voxl-esc-upload-params.py --params-file ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml --device /dev/slpi-uart-2 --baud-rate 57600
In light of this situation, could you advise if it's possible to fix the configuration issue with ESC ID 3 for proper functionality?
Logs:
Here is the log of the firmware update, and it's successful.
voxl2-mini:~/voxl-esc/voxl-esc-tools(enable-pwm-input-in-firmware)$ ./voxl-esc-scan.py
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000, protocol: firmware
INFO: ESC Information:
INFO: ---------------------
ID : 0
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0036
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
ID : 1
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0032
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
ID : 2
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0034
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
ID : 3
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0038
Firmware : version 37, hash a0ca0a86
Bootloader : version 184, hash 10bf24c8
---------------------
voxl2-mini:~/voxl-esc/voxl-esc-tools(enable-pwm-input-in-firmware)$ ./voxl-esc-upload-firmware-all.sh
Usage:
- Autodetect board and upload latest firmware to all ESCs:
./voxl-esc-upload-firmware-all.sh
- Autodetect board and upload latest firmware to a single ESC ID <esc_id>:
./voxl-esc-upload-firmware-all.sh <esc_id>
Detecting ESCs...
Received standard error event 2
[INFO] M0129-3 detected
ESC Firmware: modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Flashing all ESCs
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [0, 1, 2, 3]
INFO: Sending reset command to ESC ID 0
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 0 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 0
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [1, 2, 3]
INFO: Sending reset command to ESC ID 1
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 1 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 1
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [2, 3]
INFO: Sending reset command to ESC ID 2
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 2 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 2
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
INFO: Firmware file size : 23024 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESC(s) detected: [3]
INFO: Sending reset command to ESC ID 3
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 3 : /home/root/voxl-esc/voxl-esc-tools/firmware/modalai_esc_firmware_m0129_3_v0_39_RC13_eef79926.bin
Progress: 100% [##################################################]
INFO: Firmware successfully updated for ESC id 3
And then I uploaded the parameters. It seems to write IDs 0, 1, and 2, but it fails for ID 3.
voxl2-mini:~/voxl-esc/voxl-esc-tools(enable-pwm-input-in-firmware)$ ./voxl-esc-upload-params.py --params-file ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Params file name : ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml
INFO: Params file size : 7419 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
INFO: ESCs detected:
INFO: ---------------------
ID: 1, SW: 39, HW: 40: ModalAi 4-in-1 ESC (M0129-3)
ID: 2, SW: 39, HW: 40: ModalAi 4-in-1 ESC (M0129-3)
---------------------
INFO: Loading XML config file...
INFO: Uploading params for ESC ID 255...
-- board config
-- id config
-- uart config
-- tune config
DONE
INFO: Resetting ESCs...
DONE
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
ERROR: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
ERROR: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 230400
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
ERROR: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 57600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 57600
INFO: ESCs detected:
INFO: ---------------------
ID: 0, SW: 39, HW: 40: ModalAi 4-in-1 ESC (M0129-3)
---------------------
INFO: Loading XML config file...
INFO: Uploading params for ESC ID 255...
-- board config
-- id config
-- uart config
-- tune config
DONE
INFO: Resetting ESCs...
DONE
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 115200
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
ERROR: voxl_uart_read_bytes: Bus '12' is not initialized
Updated baud rate to 230400
ERROR: No ESC(s) detected
Scan command says ID 3 is fallback mode.
voxl2-mini:/$ voxl-esc
Starting Wizard
What do you want to do?
1) scan 3) spin 5) upload_params
2) detect 4) upgrade_firmware
#? 1
enabling bridge
bridge enabled
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000, protocol: firmware
INFO: ESC Information:
INFO: ---------------------
ID : 0
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0036
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
ID : 1
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0032
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
ID : 2
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0034
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
---------------------
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
Updated baud rate to 230400
WARNING: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400
ERROR: voxl_uart_read_bytes: Bus '12' is not initialized
Updated baud rate to 230400
WARNING: No ESC(s) detected
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 57600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 57600, protocol: firmware
INFO: ESC Information:
INFO: ---------------------
ID : 3
Board : version 40: ModalAi 4-in-1 ESC (M0129-3)
UID : 0x2039333557555304003D0038
Firmware : version 39, hash eef79926
Bootloader : version 184, hash 10bf24c8
---------------------
WARNING: 57600 baud rate is the fallback baud rate if ESC params are not valid
WARNING: Please verify params using voxl-esc-verify-params.py
WARNING: Motors will not spin unless valid params are present
---------------------
Found ESCs:
id: 0, port: /dev/slpi-uart-2, baud rate: 2000000
id: 1, port: /dev/slpi-uart-2, baud rate: 2000000
id: 2, port: /dev/slpi-uart-2, baud rate: 2000000
id: 3, port: /dev/slpi-uart-2, baud rate: 57600
successfully pinged ESCs
disabling bridge
bridge disabled
DONE
./voxl-esc-upload-params.py --params-file ../voxl-esc-params/boards/esc_params_generic_m0129_pwm.xml --device /dev/slpi-uart-2 --baud-rate 57600
esc_params_generic_m0129_pwm.xml
<EscParameters>
<IdParams>
<param name="id" value="127"/> <!-- 0-7 .. 127 means use hardware ID pins to read ID-->
<param name="dir" value="2"/> <!-- 0=fwd, 1=rev, 2=fwd id-based, 3=rev id-based -->
</IdParams>
<UartParams>
<param name="protocol_version" value="2"/> <!-- reserved for future use -->
<param name="input_mode" value="0"/> <!-- reserved for future use -->
<param name="baud_rate" value="2000000"/> <!-- communication bit rate -->
<param name="char_timeout_ns" value="0"/> <!-- not used -->
<param name="cmd_timeout_ns" value="100000000"/> <!-- timeout for incoming commands before ESC will stop the motor -->
</UartParams>
<TuneParams>
<param name="pwm_frequency" value="48000"/> <!-- switching freqency of PWM signal going to motors. 24Khz and 48Khz are only options for now -->
<param name="vbat_nominal_mv" value="14800"/> <!-- used for sanity checking and limiting of voltage-dependent funcions -->
<param name="num_cycles_per_rev" value="7"/> <!-- number of pole pairs in the motor. used for converting electrical frequency to mechanical rpm -->
<param name="min_rpm" value="4000"/> <!-- minimum RPM that will be attempted, otherwise capped -->
<param name="max_rpm" value="29344"/> <!-- maximum RPM that will be attempted, otherwise capped -->
<param name="min_pwm" value="70"/> <!-- cap for minimum power to be ever applied. max is 999 -->
<param name="max_pwm" value="999"/> <!-- cap for maximum power to be ever applied. max is 999 -->
<param name="pwm_vs_rpm_curve_a0" value="0"/> <!-- this is actually motor_voltage vs rpm curve.. using legacy naming -->
<param name="pwm_vs_rpm_curve_a1" value="0"/> <!-- Emax RS1306 3300KV with tri-blade 3x3x3 -->
<param name="pwm_vs_rpm_curve_a2" value="0"/>
<param name="kp" value="0"/> <!-- RPM controller proportional gain -->
<param name="ki" value="0"/> <!-- RPM controller proportional gain -->
<param name="max_kpe" value="0"/> <!-- maximum proportional erorr term (max is 999) -->
<param name="max_kie" value="0"/> <!-- maximum integral error term (max is 999) -->
<param name="max_rpm_delta" value="0"/> <!-- cap for maximum rpm error used in RPM controller -->
<param name="spinup_type" value="0"/> <!-- 0: traditional, 1: sinusoidal -->
<param name="spinup_power" value="70"/> <!-- power used to during spin-up procedure -->
<param name="latch_power" value="80"/> <!-- power used during latching stage of spin-up (out of 999)-->
<param name="spinup_power_ramp" value="8"/> <!-- it will take ( 4096 / (spinup_power_ramp*10000) ) seconds to ramp sinusoidal start-up power from 0 to spinup_power -->
<param name="spinup_rpm_target" value="1000"/> <!-- Desired RPM at the end of the sinusoidal spin-up procedure -->
<param name="spinup_time_ms" value="1000"/> <!-- Duration of the sinusoidal spin-up procedure -->
<param name="spinup_bemf_comp" value="0"/> <!-- 0: disable, 1:enable back-emf compensation in sinusoidal spin-up procedure -->
<param name="motor_kv" value="2850 "/> <!-- kV value of the motor. used in back-emf compensation during spin-up -->
<param name="min_num_cross_for_closed_loop" value="100"/> <!-- exit latching mode of fixed power after this number of zero crossings -->
<param name="protection_stall_check_rpm" value="1000"/> <!-- if motor spins below this RPM, stall check will trigger and stop / restart the motor -->
<param name="brake_to_stop" value="0"/> <!-- apply brake when stopping motor (or not) -->
<param name="stall_timeout_ns" value="20000000"/> <!-- after spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="require_reset_if_stalled" value="0"/> <!-- require sending an array of zero commands to reset before next spin-up, if motor stalled -->
<param name="tone_freqs" value="[200, 215, 225, 250, 0,0,0,0, 0,0,0,0]"/> <!-- 200 is 2000Hz, max 255 -->
<param name="tone_durations" value="[10, 10, 10, 10, 0,0,0,0, 0,0,0,0]"/> <!-- duration of each tone in units of 10 milli-seconds. Poor naming!!! -->
<param name="tone_powers" value="[60, 60, 60, 60, 0,0,0,0, 0,0,0,0]"/> <!-- max is 255 -->
<param name="dt_threshold_ns" value="150000"/> <!-- during start up, ignore inter-commutation times less than this val, probably noise -->
<param name="max_dt_ns" value="2500000"/> <!-- min and max values for time between two commutations. these are used as caps -->
<param name="min_dt_ns" value="10000"/>
<param name="dt_bootstrap_ns" value="2000000"/> <!-- filter bootstrap value for commutation dt during start up -->
<param name="spinup_stall_dt_ns" value="6000000"/> <!-- during spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
<param name="spinup_stall_check_ns" value="30000000"/> <!-- time after beginning of spinup to start checking for spinup stall -->
<param name="alignment_time_ns" value="0"/> <!-- alignment time before spin-up -->
<param name="timing_advance" value="0"/>
<param name="sense_advance" value="0"/>
<param name="demag_timing" value="0"/> <!-- unused -->
</TuneParams>
</EscParameters>
@Alex-Kushleyev Thank you! I will check it works.
@Alex-Kushleyev
Thank you for your response. I understand your availability and appreciate your willingness to assist. I'll await your firmware update next Wednesday.
I attempted to upgrade the ESC firmware before, but encountered an error:
ERROR: Bus 12 is already initialized. To reinitialize, please close it first.
Besides enabling bridge (disabling voxl-px4), are there any other services I should stop or additional steps I should take to free up the serial bus before attempting the ESC firmware upgrade?
$ voxl-esc
Starting Wizard
What do you want to do?
1) scan 3) spin 5) upload_params
2) detect 4) upgrade_firmware
#? 4
enabling bridge
bridge enabled
[INFO] Setting CPU to performance mode
[INFO] Scanning for ESC...
Received standard error event 2
[INFO] M0129-3 detected
[INFO] has for most recent firmware: eb6fb500
[INFO] Expected ESC firmware info:
Firmware: modalai_esc_firmware_m0129_3_v0_39_RC10_eb6fb500.bin
Firmware hash: eb6fb500
[INFO] Number of ESCs with correct FW: 0
[INFO] 0 of the ESCs do not have the current firmware
[INFO] Uploading current ESC firmware...
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.6
INFO: Firmware file name : firmware/modalai_esc_firmware_m0129_3_v0_39_RC10_eb6fb500.bin
INFO: Firmware file size : 22672 bytes
VOXL Platform: M0104
Detected RB5 Flight, VOXL2 M0054 or M0104!
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Received standard error event 2
Sending initialization request
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 2000000
WARNING: Unable to detect ESCs in order to reset them..:
'NoneType' object has no attribute 'get_detected'
WARGING: Attempting to continue
ERROR: Bus 12 is already initialized. To reinitialize, please close it first.
Updated baud rate to 230400
INFO: Installing firmware to ESC ID 0 : firmware/modalai_esc_firmware_m0129_3_v0_39_RC10_eb6fb500.bin
ERROR: An error occured during the write process.
[ERROR] failed to upload firmware to ESC0
disabling bridge
bridge disabled
EXITING VOXL-ESC WITH ERROR
@Alex-Kushleyev
Thank you for reply.
We understood the circumstances in which RPM control is recommended.
However, I would like to continue testing PWM control as well.
Yes, we are connecting the PWM input to A0 - A3 and try to using with 1-2ms pulse.
Please let me know when it's enabled.
I am in the process of assembling a drone using the VOXL 2 Mini in conjunction with the VOXL Mini 4-in-1 ESC and an external FC. I selected the VOXL Mini 4-in-1 ESC due to its features of PWM control and power output capabilities.
Through the voxl-esc utility, I have successfully executed scan and spin commands, confirming that the motors are operational. However, when attempting to test the motors via PWM signals from the external FC, there is no response.
Could you please guide me on whether there is any additional setup required to enable motor movement via PWM through the VOXL Mini 4-in-1 ESC? Are there specific parameters or configurations that need to be adjusted on the ESC to facilitate this?
I would like to mention that I have not yet performed the ESC calibration. Could the lack of calibration be a factor in the motors not responding to PWM inputs from the external FC?
I'm looking forward to your suggestions and advice to resolve this issue.
@tom I appreciate your attempt to assist.
I have the following devices, and I've confirmed that SDK 1.1.2 works with all except for the VOXL Flight:
Could you please advise on an alternative solution or provide any specific steps I should follow for the VOXL Flight to address the issue with the camera server crashing? I'm eager to resolve this problem and would greatly appreciate any further guidance or recommendations you might have.
Thank you once again for your support.
@tom Thank you for your response.
There is no option for 21.
I tried it with v1.8.9 (SDK 1.1.2) and the dev version (74ad3a65) of the voxl-camera-server.
# voxl-configure-cameras 21
Camera Configuration: 21
invalid option
Please provide a camera configuration-id
available camera configurations are as follows:
0 None
1 Tracking + Stereo(OV7251)
2 Tracking Only
3 Hires + Stereo(OV7251) + Tracking
4 Hires + Tracking
5 TOF + Tracking
6 Hires + TOF + Tracking
7 TOF + Stereo(OV7251) + Tracking
8 Hires Only
9 TOF Only
10 Stereo(OV7251) only
11 Tracking + Hires + Dual Stereo(OV7251) Pairs
12 Stereo(OV9782) only
13 Hires + Stereo(OV7251)
14 Stereo(OV9782) + TOF + Tracking