VOXL ESC Frequently Asked Questions
Table of contents
- ❗Important. Please Review ❗
- Unboxing and testing new standalone ESC
- Q/A
- Q: How do I identify the hardware and software version of my ModalAI ESC?
- Q: What behavior should I expect when I power on my ESC?
- Q: What is the behavior of the four blue on-board LEDs?
- Q: How do I update ESC Firmware
- Q: How do I troubleshoot communication with my ModalAI ESC when using a serial-to-usb adapter
- Q: How do I check the model of the serial-to-usb adapter I am using?
- Q: I am using
voxl-esc-scan.py
command, but it is not detecting all four ESC channels? - Q: What is the easiest way to test spinning the motors to make sure my ESC and motors are working correctly?
- Q: What is ESC calibration and when do I need to perform it?
- Q: How do I locate the IDs (0-3) of each of the four ESC Channels?
- Q: How is spin direction of the motor determined and how do I reverse it?
- Q: How do I see the temperature of the ESC?
- Q: How can I see the current measurement of each ESC channel and total current?
- Q: Does M0138 Racing ESC need an external capacitor?
- Q: Does the Mini ESC (M0129 standard 4S version) support 4S LiHV battery?
- Q: I have a M0134-6 ESC (6S version), however the marking on PCB states 2-4S. Which specification is correct?
❗Important. Please Review ❗
Using the latest ESC firmware
- It is strongly recommended to update the ESC firmware to the latest version upon receipt of a new ESC board
- This applies to all ModalAI ESCs
- Current ESC firmware version can be queried using
voxl-esc
tools command :voxl-esc-scan.py
- The latest ESC firmware is hosted on gitlab ESC Firmware
- Each VOXL2 SDK also includes ESC firmware releases, located in
/usr/share/modalai/voxl-esc-tools/firmware
, however it may not be latest depending on the version of SDK
- Each VOXL2 SDK also includes ESC firmware releases, located in
ESC params shipped with new ESC boards
- ModalAI ESCs standalone ship with ESC parameters used for production testing only
- All users must ensure that correct ESC parameters are loaded to the ESC before using the ESC
- Loading ESC parameters is done using
voxl-esc
tools, specificallyvoxl-esc-upload-params.py
andvoxl-esc-verify-params.py
- New motor / propeller configurations should go through the ESC tuning process, see ESC Calibration
voxl-esc tools
voxl-esc
python tools can be used to query information about the ESC, such as hardware version, firmware version, ESC params as well as updating ESC firmware, ESC params and running calibration and other tests- the latest
voxl-esc
tools are hosted on gitlab, see voxl-esc-tools - the esc params for various vehicles are also hosted on gitlab, see voxl-esc-params
- a release of
voxl-esc-tools
andvoxl-esc-params
is also included in each VOXL2 SDK, but it may not be the latest version, depending on SDK version (/usr/share/modalai/voxl-esc-tools
and/usr/share/modalai/voxl-esc-params
)
Unboxing and testing new standalone ESC
- Remove the ESC from the packaging while following common ESD precautions
- Inspect the ESC for any damage, if any damage is found, please contact us via RMA web form or the forum
- Plug the ESC power leads into a power supply, appropriately rated for the ESC (12V is supported on all ESCs, but please confirm the spec sheet)
- please note that aggressive spin testing using a power supply is highly discouraged due to voltage spikes from regenerative braking (see Regenerative Braking)
- The ESC should rapidly flash 4 blue status LEDs for 1 second (bootloader mode), then firmware will start and flash the LEDs more slowly several times, after which the blue status LEDs on the ESC will be off
- The idle current draw of a standalone ESC will be between 20-30mA at 12V input (no spinning motors, no load connected to the ESC regulated voltage outputs). If current draw in excess of 100mA is observed, it is possible that the ESC has some sort of issue.
- Perform a simple spin test
- solder motor leads to all four ESC motor outputs
- if the ESC parameters for the motor / propeller are available, load the correct parameters using
voxl-esc-upload-params.py
script - perform a simple test at low power using the following
voxl-esc
tools command (without propellers is always best for initial tests)./voxl-esc-spin.py --id 255 --power 10
- stop the script after a few seconds and verify by looking at the information printed in the terminal that the RPMs of all four ESCs are close to the same (within 5-10%)
- see sample output here
- do not perform aggressive spin tests using a power supply, especially step tests which vary the power / rpm up and down
Q/A
Q: How do I identify the hardware and software version of my ModalAI ESC?
A:
- The ESC board can be identified visually by comparing the images from the datasheet : ESC Docs
- Using Software, it is easy to query the hardware and firmware version of the ESC
https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc
is the location of primary tools for testing the ModalAI ESCs- use
voxl-esc-scan.py
command, which will detect the ESC and print out the hardware type (M0049, M0117, M0129, M0134, M0138, etc) and the software version and additional information - see sample output
Q: What behavior should I expect when I power on my ESC?
A: See below
Q: What is the behavior of the four blue on-board LEDs?
A:
- during the first 1 second after ESC is powered on, the bootloader in each MCU (ESC channel) activates and waits for an optional firmware update. During this first 1 second, the blue LED of each ESC channel will rapidly blink (5-10hz)
- after the 1 second has elapsed, if the bootloader will verify the stored firmware and if the ESC has valid firmware installed, the firmware will begin executing, followed by 2-3 slow flashes and a motor beep (if motors are attached and beep is enabled in ESC params)
- if there is no valid firmware loaded on one or more ESC channels, those ESC channels will continue to rapidly blink the blue status LED (indefinitely) and will be ready to accept the firmware, which should be loaded using
voxl-esc
tools. - during normal operation or firmware udpate, when there is ongoing communication with the ESC, blue status LEDs will flash continuously. This can be used to confirm communication between the ESC and host / flight controller.
Q: How do I update ESC Firmware
A:
- if the ESC is connected to VOXL2, make sure PX4 is not running by stopping it with
systemctl stop voxl-px4
command - use
voxl-esc
tools command./voxl-esc-upload-firmware-all.sh
, which will automatically detect the ESC type and pick the correct firmware for updating - individual ESC channels can be updated with specific firmware using
./voxl-esc-upload-firmware.py
script (see script help for details)
Q: How do I troubleshoot communication with my ModalAI ESC when using a serial-to-usb adapter
A:
- Connect the serial-to-usb adapter to a Linux PC
- Make sure TX of the ESC goes to RX of the USB adapter and RX of ESC goes to TX of the USB adapter
- Make sure that you are using 3.3V I/O levels on the USB to serial adapter (although 5.0V levels should work and should not hurt the ESC, but no guarantees)
- If your ESC configured to used 2Mbit communication rate, make sure your USB adapter supports 2Mbit. Some adapters, such as CP2102 only supports up to 1Mbit
- (advanced) Use an oscilloscope to verify that USB adapter is transmitting data to ESC. To avoid any possibility that ESC is affecting the TX signal, disconnect the USB adapter from the ESC, run
voxl-esc-scan.py
command and check that TX signal is observed coming out of the USB adapter using an oscilloscope. The signal should be 3.3V level
Q: How do I check the model of the serial-to-usb adapter I am using?
A:
- using
voxl-esc
tools, run./voxl-esc-scan.py
and the output should be something like:... INFO: All COM ports: /dev/ttyS0 : ttyS0 /dev/ttyUSB0 : CP2102 USB to UART Bridge Controller - CP2102 USB to UART Bridge Controller ...
Q: I am using voxl-esc-scan.py
command, but it is not detecting all four ESC channels?
A: This can happen if one or more ESC channel has
- corrupt firmware (firmware update interrupted or failed)
- corrupt params (parameter update failed)
- parameters set to different baud rate from the remaining ESC channels
Q: What is the easiest way to test spinning the motors to make sure my ESC and motors are working correctly?
A:
- use
voxl-esc-spin.py
script - use
--ramp-time
parameter to avoid instantly jumping to high power / rpm command right after spin-up - use
--power
command instead of--rpm
to check the open loop motor response. Rpm control can mask issues because it uses a feedback controller. - use plotting feature to plot the results and make sure all four look similar (within a few hundred rpm)
- comparison of the rpm vs power command response from a known good configuration can be used to detect improperly functioning ESC / motor
- see help in
voxl-esc-spin.py
script for more information
Q: What is ESC calibration and when do I need to perform it?
A:
- The calibration of ModalAI ESCs is different from calibration of traditional ESCs, which typically use PWM signal as control input.
- Since the data is sent to ModalAI ESC using serial protocol with error checking, there is no need to calibrate the response to PWM input signal
- The calibration actually is designed to characterize the response of the specific motor and propeller in order to perform better RPM control
- see https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/blob/master/voxl-esc-tools/calibration.md for details on performing ESC calibration
Q: How do I locate the IDs (0-3) of each of the four ESC Channels?
A: The ID of the ESC channel (0, 1, 2 or 3) is marked on each corner either on one or both sides of the PCB and/or the motor output pads. When in doubt, running voxl-esc-spin.py
test script for each ID can be used to confirm the ESC channel mapping. Please note that PX4 has parameters to re-map the ESC channels, however from point of view of the ESC itself and the ESC communication protocol, the true ESC ID mapping can be validated using the voxl-esc
tools.
Q: How is spin direction of the motor determined and how do I reverse it?
A: The Spin direction of the motors depends on the wiring of the motor and the direction configuration in the ESC firmware. By default, all ESC params are set up to alternate directions, so if four motors are wired to the ESC in the same way, their spin directions will alternate (this simplifies production and testing). If a reversal of motors is required, it is recommended to simply switch the order of any two motor phases at the ESC solder pads.
Q: How do I see the temperature of the ESC?
A: The temperature of the ESC board is measured by each MCU on the ESC board and is continuously reported to the Flight Controller. esc_status
topic on PX4 contains the ESC temperature of each ESC channel as well as voxl-esc
test spin functions provide the temperature information. the M0138 ESC reports two temperature measurements taken at the two MCUs and two measurements taken by separate temperature sensors located next to mosfets.
Q: How can I see the current measurement of each ESC channel and total current?
A: The current measurement of each ESC channel is reported as part of the ESC communication protocol for those ESCs that have individual current sensing (M0049, M0117, M0134, but not M0129, M0138). The ESCs which only report total current sensing will report 0 for individual channel current and will send out a special packet (along with the standard esc telemetry packet) with the total board current and voltage information. This special packet is parsed by voxl-esc
tools during testing as well as PX4 for reporting the battery status without using an APM
Q: Does M0138 Racing ESC need an external capacitor?
A: The Racing ESC (M0138) has more than 1000uF of surface mount capacitors, which is sufficient for most applications
Q: Does the Mini ESC (M0129 standard 4S version) support 4S LiHV battery?
A: Yes, the mini esc (standard 4S version) supports voltages up to at least 18V. The TVS protection diode will start clamping / conducting around 19-20V, depending on temperature, which means exceeding this voltage will result in the TVS diode overheating and burning out.
Q: I have a M0134-6 ESC (6S version), however the marking on PCB states 2-4S. Which specification is correct?
A: The M0134-6 ESC does in fact support up to 6s LiPo input voltage. The PCB markings from the 4S version have not been updated for the 6S version. There should be a -6 sticker on the ESC itself and the ESC will be detected as M0134-6
when using voxl-esc-scan.py
tool to detect the ESC with software.