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

    Continuous bench supply with VOXL FPV Racing 4-in-1 ESC (M0138) — braking disable + TVS protection guidance

    ESCs
    2
    11
    186
    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.
    • Alex KushleyevA
      Alex Kushleyev ModalAI Team @austin.c
      last edited by

      Hi @austin-c ,

      Please see answers below:

      • brake_to_stop parameter does exit and it works. setting it to 0 will result in the motor coasting to a stop when it is commanded to stop or there is a command timeout. it is used here : link
      • the hardware supports disabling regenerative braking (we have tested this before), but the software does not support disabling regenerative braking during motor control
      • the TVS breakdown voltage is around 29-30V. You can actually test this by slowly increasing voltage on the power supply (in 0.1V increments) and observe the current draw increase from nominally low value (be careful)

      If you would like to test with a power supply, that's fine, but you have to be careful about the types of tests you are doing. Please understand the following:

      • regenerative braking will happen any time there is a transition from higher rpm to a lower rpm
      • this will happen regardless whether the ESC is rpm control mode or power control because that is a principle of "synchronous rectification" which is a technique for controlling mosfets (widely used on most ESCs). Any time the back-emf of the motor is higher than the average applied voltage, the regenerative current will flow back into the battery or power supply (roughly speaking).

      In general, here are our guidelines for testing with a power supply

      • keep in mind that the dynamic response (even with rpm increase) will be different from a battery, as the battery typically has lower output impedance from a power supply
      • testing steady state response or continuous spinning with slow transitions is a perfect applications
      • aggressive transitions from low to high rpm (or from low to high power) are ok
      • avoid aggressive transitions from high to low rpm, since that's when the back-emf will be generated
      • we actually have a test script voxl-esc-spin-step.py which shows you how to you can use the control software to slew rate limit the commands to avoid fast up or down transitions. you can use a similar approach for your bench testing.
      • exploring the TVS diode specs (clamping voltage) can be done using an unloaded motor, where the energy stored in the motor is small, so the TVS diode can absorb the regen energy. You can do a small step test with unloaded motor and see what what voltage the voltage spike gets clipped. There is a risk of burning out the TVS diode if the test is done with a loaded motor with a large high->low transition
      • avoid loaded motor step-down tests while using a power supply
      • set the brake_to_stop esc parameter to 0 and stop the script or send zero rpm/ power in order to stop the motor (or just stop sending commands) instead of sending low rpm before 0 rpm.
      • adding external capacitance and an additional array of similar TVS diodes (placed as close as possible to the ESC) will help reduce (using capacitors) and absorb (additional tvs diodes to distribute the heat) the regen spikes .
      • sink-capable power supplies are usually expensive, may not be worth it, depending on what you are trying to do. If you are trying to test performance of the motor using a power supply that models the battery (a battery simulator), that would work, but would be even more expensive 🙂

      What kind of tests are you planning to run? I can provide more guidance.

      Alex

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

        I went ahead and ran a few tests with a 11A power supply set to 25V.

        Using M0138 ESC, Xing2 2207 1855kV motor and 5x4x3 propeller

        Both tests using the same voxl-esc command, executed on a linux pc that is connected to the ESC directly via usb to serial adapter.

        Test command:

        ./voxl-esc-spin-step.py --id 2 --power 20 --step-amplitude 30 --step-frequency 2.0 --timeout 2.0 --cmd-rate 2000 --enable-plot 1
        

        Results / notes:

        • no load test showed a higher peak of 33.8V vs about 31.8V loaded with prop, which actually makes sense because the no load motor RPM is higher (larger back-emf).
        • only testing one channel at a time to reduce voltage spike
        • start with small step to get a sense of regenerative voltage rize
        • short test to avoid any damage
        • ran the test on ESC id 2, so that total current is measured and displayed
        • this motor has pretty high kV and small size propeller, so it decelerates quickly. However, other motor and larger propeller combinations (and larger rpm changes) may generate a lot larger spike (if the motor spends more time at higher rpms).
        • also did a test to see at which point the ESC starts drawing more current - TVS diode starts conducting (short voltage increase on the power supply, i.e. for 1 second). As the TVS diode warms up, the current drops a bit because of the diode characteristics (breakdown voltage increases with temperature). However, the performance of TVS diode varies significantly across the voltage range, so it cannot be used for any exact measurements.
          • 25-27.5V : 0.02A
          • 28V: 0.035A
          • 29V: 0.09A
          • 30V: 0.15A
          • 31V: 0.20A
            ..

        Test 1: no propeller

        m0138_xing2_2207_1855kv_step_20_50_ps_no_prop.png

        Test 2: with propeller

        m0138_xing2_2207_1855kv_step_20_50_ps_w_prop.png.png

        A 1 Reply Last reply Reply Quote 1
        • A
          austin.c @Alex Kushleyev
          last edited by austin.c

          @Alex-Kushleyev

          For context on our side: we’re looking at an MN4006 380KV motor with a 13” prop, and our system will be powered from an external DC source via a DC-DC power module (not a conventional LiPo-style source), so we’re trying to be very deliberate about regen / bus overvoltage from decel events.

          We’re still in feasibility / design phase and don’t have physical hardware spun yet, so we’re leaning heavily on your recommendations to make sure we bake in the right mitigations from the start.

          Based on what you shared, our intended approach is:

          • Configure for no braking: brake_to_stop=0 (coast on stop/timeout).
          • Treat decel as the main risk: implement slew-rate limiting / avoid hard high low RPM steps (similar to the voxl-esc-spin-step.py approach you referenced).
          • Design the input protection around an external DC bus:
          • Bulk capacitance at the ESC input, physically close to the ESC, and
          • Additional parallel TVS near the ESC input to share transient energy/thermal load.

          Since we don’t have hardware assembled, could you sanity-check a couple design-direction items?

          • For a larger inertia setup (13” prop), do you have a starting point / rule-of-thumb for how much bulk capacitance you’d place at the ESC input (order of magnitude is fine)?
          • When you say “parallel TVS,” is your intent more like multiple identical parts in parallel close to the ESC, or targeting a total TVS power/energy capability? Any rough guidance there would help.
          • Is there anything else you’d recommend we do upstream (e.g., supply-side clamp strategy, or constraints on allowable decel) given the source may not be able to sink current?
          • Really appreciate your help we’ll incorporate your guidance into the design and share what we decide / what we observe once we get to bench testing.
          Alex KushleyevA 1 Reply Last reply Reply Quote 0
          • Alex KushleyevA
            Alex Kushleyev ModalAI Team @austin.c
            last edited by Alex Kushleyev

            @austin-c , i just checked and actually we have an option to disable regen braking, it is just not available yet via a param. Here is the test result with same setup (no prop) with regen braking disabled. You can see that the motor takes a long time to coast down, but there is no regen voltage spike or regen current at all. If you application does not require rapid rpm change (high to low), then it will work fine.

            We have not tested this in a while, but at some point we did testing for an application with a smart battery which did not like being re-charged with the regen current.

            I will see if we can enable this via param or worst case scenario I can share the latest firmware with regen off.

            Regarding your other questions:

            • i don't think you can put enough capacitance to really absorb all the charge that needs to be stored.. You could do some basic calculations using the current spikes to see how much capacitance you would need, but it think it would be a LOT.
            • regarding multiple TVS diodes, yes just connect an array of them in parallel, simply to distribute the energy (heat) across multiple diodes to prevent them from overheating (also can choose larger package, but they all would have to have same specs).

            Also, since your motor is low kv, i just want to make sure you saw this document (you probably did, just double checking) : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/blob/master/voxl-esc-tools/doc/low_kv_motor_tuning.md

            Actually the app note for low kv tuning was using the Tmotor MN4006 motor with even larger 15 inch propeller (see Tuning Example section). It should work fine with appropriate parameters, we can help tuning if you tell me the exact propeller.

            motor MN4006-23 380kV, 18N24P winding configuration
            12 pole pairs (24/2)
            15-inch propeller MS1503
            6S battery voltage
            

            Alex

            a6707a34-3020-45e0-a539-3b346f14c060-image.png

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

              Also, you should note - the motor's open loop RPM speed increases at the same power setting -- this is a consequence of not having active freewheeling. This does not mean, though, that if active freewheeling (regen braking) is disabled, that you would get higher max rpm or more efficiency. It just changes the motor pwm % to rpm mapping.

              Alex

              A 1 Reply Last reply Reply Quote 1
              • A
                austin.c @Alex Kushleyev
                last edited by

                @Alex-Kushleyev thank you, this is exactly what we were hoping to hear.

                Given our power architecture, we’d strongly prefer to disable regenerative braking entirely to avoid any back-feed / bus overvoltage corner cases. We’re effectively hovering with “infinite” available source power, so we’re not trying to harvest regen energy coasting down is totally acceptable for our use case.

                For the exact prop: we’re currently baselining an APC 13x5.5MRF-R(B) (13” diameter, 5.5” pitch, folding multi-rotor blades). https://www.apcprop.com/product/13x5-5mrf-rb/?v=7516fd43adaa

                We can definitely focus on tuning once we’re on the bench. We did see the low-kV tuning note you linked (and it’s reassuring you’ve already used MN4006 with an even larger prop in the example).

                If you’re able to expose the “regen off” option via a param or share a firmware build with regen disabled, we’d love to start with that as our default configuration. Are there any specific caveats you want us to be aware of when regen is disabled beyond the slower coast-down / mapping differences you mentioned?

                Thanks again your tests and guidance are helping us de-risk the design decisions before we commit to hardware.

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

                  @austin-c , i don't have any concerns for disabling active freewheeling other than the fact that the responsiveness of the ESC will be reduced, as the RPM reduction will be purely due to air drag acting on the propeller (and small friction in the motor).

                  I can set up the MN4006 motor with a 13 or 15 inch propeller, do a RPM control tune and compare the RPM response results with regen on and off. This is actually pretty quick to do, i will try to do it in the next few days.

                  Please ping me if you don't hear back by early next week 🙂

                  Alex

                  A 1 Reply Last reply Reply Quote 1
                  • A
                    austin.c @Alex Kushleyev
                    last edited by

                    @Alex-Kushleyev appreciate the assist here. I'll follow up next week!

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

                      Hi @austin-c ,

                      I ran some tests with Tmotor MN4006-23 380kV and 15-inch MS1503 propeller, using M0138 ESC. Tests were done with a battery and a power supply. Please see results below.

                      • the colors may vary from plot to plot, but the one with slower deceleration is "regen off" 🙂
                      • did not run large rpm steps on power supply because the power supply was already current limited
                      • regen peaks were 31V (pwm step) and 33V (rpm step) for the power supply test
                      • motor acceleration is almost identical for regen on/off tests
                      • very large difference in motor deceleration, especially for the large high-to-low rpm transitions
                      • also note that the power supply tests result in slower deceleration even with regen on (because the power supply cannot sink the current)
                      • TVS diode did not blow out in this test, because the spikes were short and only a few at a time

                      Please note that, in theory, it is possible to decelerate the motor faster without regenerative braking (by applying more power, but out of phase), however we do not have this implemented.

                      If the motor deceleration is slowed down due to lack of regenerative braking, the attitude control will be affected because the motor response is highly asymmetric for acceleration vs deceleration. Overall, this will result in effectively reducing the average responsiveness of the motor, so you would need to decrease control gains and probably will not be able to handle large disturbances very well and cause oscillations if not tuned properly.

                      Please review the plots (which are not surprising), and we can discuss further..

                      Alex

                      6S battery, Power step test:
                      75e2acb0-7505-4f57-9ad0-607768c923cf-image.png

                      6S battery, RPM small step test
                      e5e02d3a-ac63-4fbf-b8e6-b64d4b33f983-image.png

                      6S battery, RPM large step test
                      7b2f7b28-6825-4498-908e-68353de9fa79-image.png

                      11A Power Supply, Power step test:
                      d6888452-1155-4567-8309-a994d7d717ff-image.png

                      11A Power Supply, RPM small step test
                      d88b5433-2756-42c7-9de6-804bbef8b814-image.png

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        austin.c @Alex Kushleyev
                        last edited by

                        @Alex-Kushleyev That’s very helpful if disabling regenerative braking is working as intended, then it sounds like that addresses the primary concern on our bench-supply side.

                        From the flight-controller dynamics side, we’d still generally prefer to keep braking enabled in the long run, but handling the FC tuning impact is something we’re comfortable with. The main blocker for us has been finding a clean way to absorb regenerative energy on the bench supply during decel events.

                        Given that regen disable appears to solve that issue, we’ll plan to proceed with controlled validation on our motor/prop combination while monitoring bus voltage during transients.

                        A couple follow-up questions:

                        • list item Would you recommend exposing regenerative braking disable as a user parameter, or is this better handled as a custom firmware build for this application?
                        • list item Did you end up making any ESC tuning parameter changes when testing in this mode, especially for a lower-kV / larger-prop setup? If so, would you be willing to share those changes?
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Powered by NodeBB | Contributors