Why is it unnecessary to set MOT_PWM_MIN/MAX when using DShot?

Hello, I’m using ArduCopter 4.5.7 for my quadrotor. I have some problems about PWM and DShot protocol about ESC.

  1. What’s the function of MOT_PWM_MIN and MOT_PWM_MAX? What’s the connection between the parameter and ESC Calibration?
    In my understanding, when using PWM at 400Hz, ESC calibration aligns the PWM range defined by the flight controller with the ESC (e.g., the flight controller might consider the PWM range to be 1250-2500, while the ESC considers it to be 1300-2450; these ranges need to match).
    The purpose of MOT_PWM_MIN and MOT_PWM_MAX, on the other hand, is to set the minimum and maximum PWM values I expect the flight controller to output. For example, if I want my quadrotor to hover when I set the RC throttle at 50%, I can modify MOT_PWM_MAX to control the PWM output at RC full throttle. This allows the quadrotor to achieve hover at 50% throttle.
    In other words, I understand that MOT_PWM_MIN/MAX parameters are not related to ESC calibration. Is my understanding correct?
  2. Why is it unnecessary to set MOT_PWM_MIN and MOT_PWM_MAX when using the DShot protocol?
    I could understand why ESC calibration is unnecessary with the DShot protocol—it is digital, and a range of 0~2048 can perfectly represent different speed percentages. However, I don’t understand why it’s unnecessary to set MOT_PWM_MIN and MOT_PWM_MAX (or similar parameters). If I want to achieve the earlier functionality (hover at around 50% RC throttle), how should I do it?
    Thanks for all your helps!

The ardupilot does the job of hover at around 50% RC throttle in AltHold Mode, Loiter and Guided mode for you.

Just tune it like explained in the documentation and do not over think it. It will work as you expect it to in those modes.

And on stabalize you need to use the stick, no way to get that at 50% anyway, so do not try it.

Thank you for your reply. I understand what you said. In fact, I am a developer of autonomous quadrotor. Due to the limitations of our algorithm, I need to set Bit 3 of param GUID_OPTIONS to True in GUIDED mode (that’s mean, SetAttitudeTarget interprets Thrust As Thrust).

Previously, when using the PWM ESC protocol, in my opinion, ArduCopter would convert the Thrust (a percentage) received from MAVLink into a PWM value based on MOT_PWM_MIN and MOT_PWM_MAX (as I understand, the calculation is PWM = Thrust * (MOT_PWM_MAX - MOT_PWM_MIN) + MOT_PWM_MIN) and send it to the ESC. However, when using the DShot protocol, I am unsure what this Thrust represents. Is it a percentage relative to the motor’s maximum speed?

Thanks for your reply again!

In our past work, we typically test the quadrotor in Stabilize mode and adjust the MOT_PWM_MIN and MOT_PWM_MAX parameters. When these parameters enable the quadrotor to take off at around 30% throttle and hover roughly at 40-50% throttle (not a stable hover, but with relatively stable altitude), our algorithm runs stably in GUIDED mode. That’s why I asked about hovering at 50% throttle earlier.