Quadcopter flips over on takeoff. All usual suspects checked. SOLVED

I know this is probably the most common question on this forum, but I’ve checked everything and it’s driving me crazy. The props are on correctly, the motors are spinning the right direction, the motors spin in the correct sequence in motor test. Accelerometer is calibrated, initial tune parameters are set, transmitter is calibrated (and pitch stick is reversed because it was wrong initially), compass is calibrated.

I’m not sure what else to test, and I’m starting to think it’s the ESC. This exact setup worked with a different ESC, but that one blew and I had to get a new, different one because the other one was out of stock. It’s worth noting that I did have to replace the flight controller (with the same model) and set everything up again in Mission Planner as well, so it’s possible that I set something wrong.

Log file: 15 12-31-1969 7-00-01 PM.bin - Google Drive
Video: IMG_4265.MOV - Google Drive

Edit: Here’s a better log file: 16 12-31-1969 7-00-01 PM.bin - Google Drive

Edit 2: I found that one of the arms was a bit loose. I tightened it, but unfortunately that didn’t solve anything.

It’s something like PID issue, just like mine 5" Mark4 with 10" default PID.

Please check Initial Tuning Flight — Copter documentation

Cant tell much from the video because the props are spinning too fast to confirm if directions are correct, but that looks like attitude control oscillation rather than a motor order flip.

The order will be good IF you select “All in sequence” in the motor test and the motors activate in A, B, C, D order regardless of the numbers.
image

If the order is wrong, check the other frame types before changing any wiring or SERVO settings, you might be able to just select BetaFlight X for example.

Change FRAME_TYPE to suit

Apart from that you will want these parameters for that small quad, as a starting point:

ATC_ANG_PIT_P,10
ATC_ANG_RLL_P,10
ATC_ANG_YAW_P,6
ATC_RAT_PIT_D,0.0015
ATC_RAT_PIT_I,0.05
ATC_RAT_PIT_P,0.05
ATC_RAT_RLL_D,0.0015
ATC_RAT_RLL_I,0.05
ATC_RAT_RLL_P,0.05
ATC_RAT_YAW_I,0.02
ATC_RAT_YAW_P,0.2
BATT_FS_CRT_ACT,1
BATT_FS_LOW_ACT,3
INS_ACCEL_FILTER,10
INS_HNTCH_ENABLE,1
INS_LOG_BAT_MASK,1
INS_LOG_BAT_OPT,4

You have DSHOT300 selected but no ESC data in the log. Probably best to change to the Bidirectional DSHOT firmware if it is not already - I could not tell for sure (except the BDMASK parameter is there, so maybe that is the proof)
And use the Stable version 4.5.1 instead of DEV unless you really are testing something specific.

Set these:

MOT_PWM_TYPE,6
SERVO_BLH_AUTO,1
SERVO_BLH_BDMASK,15
SERVO_DSHOT_ESC,1   or 2 for BLHELI_S/Bluejay
INS_HNTCH_BW,25
INS_HNTCH_FM_RAT,1
INS_HNTCH_FREQ,100
INS_HNTCH_HMNCS,1
INS_HNTCH_MODE,3
INS_HNTCH_OPTS,2
INS_HNTCH_REF,1

and that will increase the DSHOT rate a bit, hopefully get the bidirectional data working, and set up the harmonic notch filter in “set and forget” mode based on ESC RPM data.

1 Like

I reduced each of the pitch and roll PID values by 50% two times, and the oscillations seem to be gone, but now it just flips over right away when I increase the throttle enough.

Work through all the info I just posted - the PIDs I listed should be OK to get airborne once the motor order is confirmed.

What do you mean by “oscillations seem to be gone”? Can you hover the drone right above the ground about 5~10cm height?

If you can’t hover at that altitude and didn’t seem much vibration, then check the motor order and propell spin direction. And make sure to use stablized mode to test.

Please check: Connect ESCs and Motors — Copter documentation

Thanks for the detailed help. Unfortunately after implementing all your changes, the motors won’t spin at all. I still think it might be an ESC issue, since I’m using this junky BLHeli_S ESC from Amazon because it was the quickest ESC to arrive and I needed to try to fix the quadcopter today after blowing my previous ESC in a crash yesterday. This new ESC doesn’t seem to have ESC telemetry, could that be the issue?

OK, use the settings you had regarding MOT_PWM_TYPE,5 and SERVO_* until you get a BLHELI_32 ESC.
Alter these HNOTCH settings:

INS_HNTCH_MODE,1
INS_HNTCH_BW,140
INS_HNTCH_FREQ,280
INS_HNTCH_FM_RAT,0.7
INS_HNTCH_HMNCS,1
INS_HNTCH_REF,0.17
INS_HNTCH_OPTS,0

And then we can make further adjustments once you do get it airborne.

My opinion is it should be a crime to sell those BLHELI_S ESCs, they are almost (but not quite) useless without telemetry and other useful features. They are built down to a price, to use an tiny low-spec MCU chip that was already in use on other old ESCs.

That junky ESC can likely be flashed with Bluejay firmware and then you don’t need telemetry to get the most value out of it with Bdshot.

Still not airborne, it does the same wobbly oscillation thing that can be seen in the video I posted above.

Flight log: 23 12-31-1969 7-00-01 PM.bin - Google Drive

How would I go about doing that? As far as I can tell, the FC has no way of communicating with the ESC except through the M1, M2, M3, M4, and current pins.

Sure it does via passthru. I have flashed a couple of these shit ESC’s for testing purposes and you get BDshot telemetry for the notch filter and whatever Dshot protocol you want to use. Use Dshot600. Obviously you need to use the Bdshot version of firmware and configure for it.
There are some links here, the Configurator is simple to use.
Bdshot with Bluejay.

When I try to connect I get this error: Port already in use by another application - try re-connecting

No, I can’t hover at all. I just meant it didn’t wobble around before flipping (like in the video I posted), this time it just flipped.

Well, If everything is followed guide.

Maybe you can try this: Initial Parameters Calculator Plugin

I don’t think it’s a parameters issue. It has to be the ESC, and its inability to run DSHOT600 or use any telemetry feedback. I just bought a new BLHeli_32 ESC that will come on Monday, so here’s hoping that will solve these issues.

Why not try DSHOT150 or DSHOT300? it can fly without telemetry back to FC.

I’m using DSHOT300 right now, it’s the only one that even allows the motors to spin at all. But it’s still not taking off. The only differences between this ESC and my old one which worked are that it’s BLHeli_S instead of BLHeli_32, it’s DSHOT300 instead of DSHOT600, and it doesn’t have ESC telemetry. So the issue must be with one of those things. Unless there’s still something else I’m missing.

@vandjac When you say “All in sequence”, does it match what @xfacta said here? Motor 1 should spin when Motor A is pressed, Motor 4 when Motor B is pressed, Motor 2 when C is pressed and Motor 3 when D is pressed. Is that the case?

Yes, it follows the order A->B->C->D clockwise like in the picture when I select “All in sequence”.