ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    VOXL 2 Mini & VOXL Mini 4-in-1 ESC Configuration for PWM Motor Control

    ESCs
    3
    18
    1180
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • JP DroneJ
      JP Drone @Alex Kushleyev
      last edited by

      @Alex-Kushleyev Thank you! I will check it works.

      1 Reply Last reply Reply Quote 0
      • JP DroneJ
        JP Drone @Alex Kushleyev
        last edited by

        @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
        

        6c300ae2-0fbd-447b-894d-a3fe34902dc6-image.png

        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 KushleyevA 1 Reply Last reply Reply Quote 0
        • Alex KushleyevA
          Alex Kushleyev ModalAI Team @JP Drone
          last edited by

          @JP-Drone , sorry this happened to you. Sometimes from updating from much older firmware, this happens.

          Can you please try the command you already tried with a small modification. try it several times if ti does not work:

          ./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 --id 3
          

          Also maybe try to power cycle voxl2 mini and the ESC and try the above command again.

          Alex KushleyevA 1 Reply Last reply Reply Quote 0
          • Alex KushleyevA
            Alex Kushleyev ModalAI Team @Alex Kushleyev
            last edited by

            also please try voxl-set-cpu-mode perf to set cpu to perf mode to avoid long sleeps, maybe that causes the voxl-esc tool to time out.

            Alex KushleyevA 1 Reply Last reply Reply Quote 0
            • Alex KushleyevA
              Alex Kushleyev ModalAI Team @Alex Kushleyev
              last edited by

              Additionally, do you have a USB to serial adapter that you could use to connect to the ESC directly from a linux PC? Then you could run the voxl-esc tools on the PC and that is a good backup option if running the tools on VOXL2 is not working reliably. We are working to make this more reliable, but using a PC for ESC configuration is a good option as well.

              JP DroneJ 1 Reply Last reply Reply Quote 0
              • JP DroneJ
                JP Drone @Alex Kushleyev
                last edited by

                @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>
                
                JP DroneJ 1 Reply Last reply Reply Quote 0
                • JP DroneJ
                  JP Drone @JP Drone
                  last edited by

                  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 KushleyevA 1 Reply Last reply Reply Quote 0
                  • Alex KushleyevA
                    Alex Kushleyev ModalAI Team @JP Drone
                    last edited by Alex Kushleyev

                    @JP-Drone,

                    You should change your px4 params to send out pulse less than 1000us (900 or 950) when in disarmed mode or you can just stop sending the pulses. Please note that pwm calibration is not supported, it should not be needed.

                    Please do not change the pwm_min and max values, they are not for this purpose. These parameters limit the power that is applied to the motor, not the input pwm signal.

                    The pwm mode will not be disabled unless the esc receives a valid packet via uart (which includes correct checksum), which is virtually impossible if you do not actually have uart signals connected to flight controller.

                    Standard PWM protocol does not support requesting telemetry, so there is no way to tell ESC to send it. If you would like to make use of the full feature set of the esc, you should use our UART communication protocol, which offers the benefits that you are looking for.

                    Are you able to tell me what flight controller software you are using? Our ESC uart protocol is open and can be included into any flight controller.

                    Alex

                    JP DroneJ 1 Reply Last reply Reply Quote 0
                    • JP DroneJ
                      JP Drone @Alex Kushleyev
                      last edited by

                      @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.

                      1 Reply Last reply Reply Quote 0
                      • Jeremy FrederickJ
                        Jeremy Frederick @Alex Kushleyev
                        last edited by

                        @Alex-Kushleyev Reading through this thread and access to the PWM output without using the VOXL IO board would definitely be of interest for my team, any chance the full sized VOXL ESC would have a similar capability using its AUX outputs?

                        Alex KushleyevA 1 Reply Last reply Reply Quote 0
                        • Alex KushleyevA
                          Alex Kushleyev ModalAI Team @Jeremy Frederick
                          last edited by

                          @Jeremy-Frederick, can you specify which ESC you are asking about?

                          The PWM pins on the ModalAI ESCs (which have the pwm signals on a connector or test pads) are bi-directional, and yes they could be used as PWM output. However, a firmware change is required and enabling PX4 to send out PWM signals is another change

                          We were considering enabling this feature but it is not yet implemented. Can you please provide more information about your requirements?

                          • what type of PWM signal are you trying to send ? min/max range, update frequency, (is it one shot, or just preriodic)
                          • how often are you planning to update the value of this PWM signal?
                          • how many PWM signals do you need?
                          • what is the source for the control of PWM signal in your application (RC or something else?). The reason why I am asking, the ESC would need to receive a serial data packet from voxl_esc driver in px4, so somehow that pwm output information would need to enter the voxl_esc driver.

                          Alex

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          Powered by NodeBB | Contributors