So what exactly ARE my PWM values?

I think I’ve got my octocopter ready to auto-tune… Got the s1000 motors designated in the right order, got my esc PWM_MOT_MAX and PWM_MOT_MIN set for the DJI ESC’s (1120 minimum and 1920 maximum), then calibrated my Taranis radio outputs iusing Mission Planner to go from 1000 to 2000. I think it’s all great and ready, but kind of want an experienced set of eyes to look at what I’ve done and tell me if something looks obviously wrong or like it could have been done a different (better) way. It’s confusing to me how these PWM values for throttle are being derived considering all the adjustments:

OpenTX Companion Taranis X9D+ radio Output settings:

Mission Planner MOT_PWM_MAX & MOT_PWM_MIN:

Gives me a throttle low:

and a throttle high:

but using servo outputs from Mission Planner:


I sort of feel like I should be setting my servo outputs to go from 1120 to 1920 (same as the DJI ESC’;s) … Is this the case?

To answer your question directly, it appears that your flight controller is seeing an INPUT of 1000-2000 from the Taranis, but the flight controller is scaling the OUTPUT to 1120-1920. This is what you want for the DJI escs

The screen with bars for Roll, Pitch, Yaw, Throttle are the values coming IN from the TX.

The Servo output screen is what the flight controller is sending OUT. This screen will not show any movement until you are flying. It is sitting at 1120 since that is your MOT_PWM_MIN value and I assume the copter is sitting in the un-armed state. IMHO, This screen is not very useful for most multicopters. It is useful for auxilary systems such as crop sprayers, seeders and planes that might have wing servos.

Someone correct me if Im wrong, but I think arducopter scales the full TX IN to the MOT_PWM_ values. So for your case, 1000 IN from the TX means that the flight controller sends 1120 out to the motors. likewise, when your TX is sending 2000, the flight controller sends 1920 out to the motors.

Check out the RC_xxxxx parameters: https://ardupilot.org/copter/docs/parameters.html#rc1-parameters

These values are set bu the transmitter calibration page in mission planner. there is a whole set of params for each channel (ie - RC1_MIN, RC2_MIN, etc). In particular, the RCx_MIN and RCx_MAX parameters control the range of the INPUTS from the TX. Check them on your setup - I bet the _MIN is 1000 and the _MAX is 2000.

You could setup your TX output range to be 1120 to 1920 on your transmitter, then re-calibrate your transmitter in mission planner. This would result in both the INPUT and OUTPUT values being scaled the same, but this is not relevant since the flight controller will adjust the outputs to maintain level flight anyways.

I hope that helps

TL;DR - INPUT and OUTPUT values can have different ranges. The MOT_PWM_MIN and _MAX values set the OUTPUT range and the servo output screen will only show activity once the flight controller is actually commanding the motors to spin. The RCx_MIN and RCx_MAX values set the INPUT range from the TX and are set by mission planner on the calibration screen.

EDIT: about the servo output screen - I think mission planner must not be updating the min and max values in the drop downs there. It appears that your MOT_PWM_MIN parameter setting is working because all values on that screen are 1120. We expect the outputs to be sitting at the min value when the copter is dis-armed. I wouldnt worry too much about the servo output screen, just go fly it!

1 Like

It looks as though you have set it up correctly. As the above post says the rc calibration screen in mission planner shows you the rc signal in. The servo output screen shows the signal being output from the flight controller. Ardupilot has control over the outputs, depending on what flight mode you are using and how you have setup your parameters will change how the outputs respond. As you are setting up a multicopter and the servo outputs are set as motors, the output values won’t change unless the system is armed. In short, you can’t easily deduce what the input/output relationship of the pwm signals should be.

Incase you haven’t seen it yet, follow this guide for getting your aircraft flying and tuned up:

https://ardupilot.org/copter/docs/tuning-process-instructions.html

I hope that helps.

I see your original post here - I should clarify:

The RC calibration process might not get exactly 1000-2000. Even though the taranis is set to go from 1000 to 2000, some channels might actually be 950 to 2020 (just random numbers, for example) But dont worry about that. That is the whole point of the RC calibration process - it identifies the MIN and MAX values. Think about it like this - the flight controller doesnt really care about the actual PWM value from the transmitter, but rather the % position of each channel. The flight controller simply needs to know if the pilot is commanding 0% or 100% or something in between.

in general,

  1. PWM from taranis (RCx_MIN through RCx_MAX) is sent to reciever
  2. receiver passes the PWM to the flight controller
  3. flight controller does some math, and depending on the flight mode, interprets the pilot’s incoming pwm signals
  4. the flight controller injects the pilot’s commands into the PID control loop that is commanding outputs and attempting to keep the craft in the air.

TL:DR there is a control loop between the pilot’s input (stick positions/Taranis PWM) and the motor outputs (PWM Out from the flight controller)

2 Likes

I ended up leaving everything the same as when I originally posted this thread, except I changed each of the servo outputs to go from 1120 to 1920 and to use 1520 as the trim value. Maybe they are not being used at all, but makes me feel better.

In your case, The output ranges are important. Most escs don’t provide the input pwm range. In those cases, assuming the range is 1000-2000 is common. The dji escs do provide esc range specs. It is a good idea to set the range for your escs.

About the trim value - it should be in the middle. That being said, arducopter will automatically adjust the hover value with https://ardupilot.org/copter/docs/ac_throttlemid.html

Hover value and trim values can be different because your copter might be able to hover at 40% for example if it was a touch over powered or 60% if it was a touch under powered. Regardless, this all happens in the background. See the link above for more info to read into it.

Thanks. Yes, I have seen about the hovering values. I’ve currently set mine to 35% on the s1000, down from an adjusted 50% it adjusted while I’ve been setting it up.

I think I’m about ready for the Autotune procedure… Thanks for checking out my setup and validating and clarifying.

As for the trim values being set in the middle… I did this, but I think Mission Planner’s Radio Calibration page caused it to change to low throttle position on my throttle channel. I’ll try setting it, then calibrating again to find out.

1 Like