Erratic Throttle and Airspeed in Loiter/RTL After Autotune (ArduPlane v4.6.3)

Hi everyone,

I recently built a fixed-wing aircraft and am flying it with ArduPlane v4.6.3.

Today I performed Autotune, and after completing the tuning, the aircraft flies well in both FBWA and Stabilize modes. The roll and pitch response seem stable, and manual flying feels normal.

However, I am facing an issue in Loiter and RTL modes. In these autonomous modes:

  • The throttle continuously oscillates between high and low values.

  • The airspeed is erratic and does not remain stable.

  • This causes the aircraft to repeatedly increase and decrease power instead of maintaining steady flight.

I would appreciate your help in identifying the root cause. Specifically, I would like to know:

  • Could this be related to the Autotune results?

  • Are there any parameters I should check or retune?

  • Could this indicate a problem with the aircraft’s trim, CG, thrust, or overall airframe setup?

I have attached the flight log for analysis. Any suggestions on what to look for or which parameters need adjustment would be greatly appreciated.

Thank you for your time and support.

Log

Hi,

I took a look at your flight log and found the exact cause of the issue. Your analog airspeed sensor is misconfigured and is actually reading the battery current sensor instead.

In the log, ARSP.RawPress perfectly matches BAT.Curr. This means your airspeed reading is entirely based on your battery current draw, not actual airspeed.

When you switch to throttle-managed modes like Loiter or RTL, TECS tries to maintain airspeed by adjusting the throttle. However, increasing throttle draws more current, which makes the flight controller think the airspeed has shot up. TECS then drastically cuts the throttle, the current drops, the airspeed drops, and TECS punches the throttle again. This creates a severe loop that causes the violent throttle oscillation you experienced.

Please double-check your ARSPD_PIN parameter and make sure the signal wire is connected to the correct analog pin on your flight controller.

Hi hatnac,

Thanks for looking into the log. Will check the parameters and signal. Actually, I am using Matek Digital Airspeed Sensor ASPD-DLVR with CAN connector.

Hi again,

Thanks for the extra details! Using a Mateksys ASPD-DLVR (CAN) with ARSPD_TYPE = 2 (Analog) explains everything—the flight controller was trying to read an analog pin, which happened to be reading battery current!

Here are the steps to set up your sensor properly and verify it:

  1. Correct the Airspeed Parameters

    • Set ARSPD_TYPE = 8 (DroneCAN): This tells ArduPilot to fetch airspeed data from the CAN bus instead of an analog pin.
    • Verify CAN settings: Make sure your CAN driver and protocol parameters are enabled (e.g., CAN_P1_DRIVER = 1 and CAN_D1_PROTOCOL = 1).
  2. Pre-flight Ground Test (Pitot Tube Check)

    • Before flying, connect to Mission Planner (or your GCS) on the ground:-Gently blow into the tip of the pitot tube (dynamic port).
    • Confirm that the reported airspeed increases. If it decreases or stays at zero, your dynamic and static silicone tubes might be swapped.
  3. In-flight Auto-Calibration

    • Set ARSPD_AUTOCAL = 1.
    • Fly in FBWA mode at a steady altitude and perform several smooth 8-figures or constant circles for a few minutes. ArduPilot will automatically calibrate the ARSPD_RATIO.
    • Once calibrated, you can set ARSPD_AUTOCAL = 0 to save the ratio.

Hope this fixes the issue.