I have build a 7 inch LongRange quadcopter using :
Armattan Chameleon TI LR carbon frame
Matek H743 SLIM running Arducopter 4.1.0-beta5 with bidir dshot firmware
ESC : T-Motor F55A Pro II T-Motor - 3/6S -BLHeli_32 4in1 MCU F3
Xing2 2506 - 1650KV motor
Propeler : HQ Durable Prop 7 X 3.5 X 3V1S
External GPS & COMPASS : M9N-5883
External Lidar + Flow Sensor : Matek 3901-L0X
RC : TBS CrossFire Nano RX with Yaapu script telemetry running on TX16S
LIPO Battery Tattu 1800mha 100C
This quad ( and its predecessor based on GEPRC MARK4 7 inch frame) suffer from severe oscillations from 10Hz to 20Hz mainly on the roll/X axis, in STABILZE, ALTHOLD, POSHOLD modes. The issue is not produicible at all time.
I am running DSHOT 1200, in bi-direcionnal mode for high freq RPM motor telemetry.
I never tried to run older Arducopter 4.0.x since i need crossfire support and yaapu telemetry.
When the oscillation occurs, current drawn rise a lot from 8A (hover) to 20A/30A, but the quad remains under control from my RC.
Some time the oscillation last 5% of flight time, sometime 80%…
Some observations (I have the Mini version of that FC on a 5"):
Increase these:
ATC_ACCEL_P_MAX
ATC_ACCEL_R_MAX
You do not have the Dynamic Notch Filter Enabled for ESC telemetry so the RPM data is doing you no good.
You only need to set the MOT_PWM_TYPE to the Dshot protocol you want. You do not have to configure the SERVO_BLH_MASK or OTYPE. But what you have will work.
I did setup the Dynamic Notch Filter from ESC telemetry frequencies. High freq above 80Hz are now filtered. For this to work , I had to set MOT_PWM_TYPE=DSHOT300.
I also increase ATC_ACCEL_P_MAX / ATC_ACCEL_R_MAX from 110000 to 180000.
The Initial tuning values for these for a 7" is 146,000. Start there.
Set those filters back to 28.
The Notch filter is now working. You can see this by graphing FTN
I can see the Roll oscillation. Start by reducing the Rate P&I values. .100 perhaps and see how that goes. Or put it on a in-flight tuning pot with the high value at default (.135) and the load value at half that.
Sorry typo “Low Value”. But yes a range of .06 to .135 should be good for the 1st pass. What I normally do is start at default P term (.135) fly for a bit and then step the value down, fly for a bit, etc. So maybe you have 5 steps. Then from the log plot RCIN chan 6 and Desired vs actual Roll/pitch. And of course how it feels as you are testing. It can be a bit time consuming but unless you want to try Auto Tune, it’s the easiest way to manual tune.
The full process is described here, page down to Manual Tuning: Manual Tuning
I just tried those settings on Roll axis , based on the “50% from default values” recommendation in case of oscillation:
ATC_RAT_RLL_P=0.06
ATC_RAT_RLL_I=0.06
ATC_RAT_RLL_D=0.0018
Since Pitch axis also had oscillation , but with fewer amplitude, I applied a 75% factor from original PID
values:
ATC_RAT_PIT_P=0.1
ATC_RAT_PIT_I=0.1
ATC_RAT_PIT_D=0.0024
First overwall impressions are very good ! no visible oscillation, Current drawn in hover is now back to 8A… and with very good control attitude from RC …
Dave , thanks a lot !
For your information, I also previously tried to reduce P,I,D Rate bases on RC tuning (using TUNE param), but since only one value is changed (P or I or D), it had very limited effects on the my oscillation issues.
It would be very nice to have a additional option to the “TUNE” param:
Proposal 1 : to apply simultaneously a shared % gain to P, I, and D rate values of a single axis, with TUNE_MIN and TUNE_MAX set in % of initial value.
Proposal 2 : to apply simultaneously a shared gain to P and I rate values of a single axis, with TUNE_MIN and TUNE_MAX set in min /max values.
If a had one of those features, I think would have tackle this oscillation issue by myself…
Anyway, problem solved.
Looking good! You can disable INS_LOG_BAT_MASK now. At 3 you are logging a ton of data and with the Notch filter set you don’t need it.
Yes, there has been plenty of discussion about enhancing the in-flight tuning options. Plane actually has some interesting options that is not in Copter.