15in Quad unstable in wind

Filtering is much better in 1st flight, in 2nd you have too much delay from filtering.
Try filtering like that.


With multi notch the freq and and attenuation should be much reduced else it will give you too much delay, it’s stated here, yellow warning

You get like 500 degree of phase delay at 48hz in last flight, which roughly translates like:
(if you assume that 1hz=1000ms)
1hz/48hz*(500degree/360degree)=~0.0289s=~29ms delay only in filters.


With proposed filtering you get 280 degree at 47hz

Which translates to ~16ms delay which is still high but much better that first one.

The RPM data looks correct.

Please check other gyro data, it might be better on 3rd gyro.
INS_RAW_LOG_OPT,10

Also check your throttle controller, It might have too small I
PSC_ACCZ_P, 0.45
PSC_ACCZ_I, 0.9

Finally in AM32 settings I’m not sure for Sinusoidal Startup, I always thought it for crawler rovers. I usually enable automatic timing advance.

It’s a common misconfiguration to enable these with the other parameters you have properly configured.

SERVO_BLH_MASK

SERVO_BLH_OTYPE

made the changes thanks

Heres the latest log with updated params: https://drive.google.com/file/d/11Yu4K8_72AutqMqs2hy47ZkrjllNFK10/view?usp=sharing

Thanks!

IMU Spectrum is all over the place, whats that about?

I reverted INS_RAW_LOG_OPT in case that was the issue: https://drive.google.com/file/d/1HS1J_1kRg4icjq_y10RR8bEDHgoviCL0/view?usp=sharing

Try disabling the bath sampler INS_LOG_BAT_MASK,0

What was the reason you are using Dshot300 and not 600? It’s probably in this thread somewhere

10 logs all gyros. A shitload of data with Raw Logging.

Ok, I tried disabling INS_LOG_BAT_MASK and reenabling INS_RAW_LOG_OPT to 10, same results… unreadable spectrogram.

I was having problems with DSHOT600 on original ESCs I was using, I’ve switched back now thanks for the reminder. What do you think of the 00000012.BIN log I just posted?

Notch Filter looks OK. Did you re-check the Motor Ranges ? MOT_SPIN at 20% looks very high and why is Max at 65%? All else looks OK for where you are in the Tune process.

If you have any trouble with Dshot600 don’t give up on it w/o trying a higher Dshot loop rate.

I have max at 0.65 because my ESCs weren’t rated for the motors. I’ve changed that back as well now as I’ve upgraded the ESCs. Thanks for the reminder. I’m having some issues with DSHOT600… sometimes I only log RPMs from 3 of the ESCs, and sometimes during a motor test (testing all) one of the motors makes a high pitched screeching sound and doesn’t spin. Any ESC setting suggestions?

……………………..

SERVO_DSHOT_RATE,2

The reason can be too slow SD card or just too much logging, 3 gyros at 3.2khz are very much data, maybe switching to just batch logging is an option.


I don’t insist on checking 3rd gyro, just saw on other builds that sometimes it have less noise in lower spectrum (but more in higher) because gyro is hard mounted, not in foam.

Please check what @dkemxr recommended, it have much sense to review motor range and dshot rates.
Filtering looks OK so I think you can try to do quicktune or autotune.

Will it result in dshot rate < 1khz?

That’s a good point with the Scheduler loop rate at default it would. So triple loop is probably a better choice or SERVO_DSHOT_RATE,3

I’m still missing 1 of 4 ESC rpm streams in my logs when running dshot600. My signal wires are long (minimum 300mm for my 15in quad).

Can you explain why you prefer DShot600 here? My understanding is that the main advantage is lower telemetry latency, but at typical large-prop blade-pass frequencies (~80–120 Hz), the ~13 µs difference between DShot300 and 600 is a tiny fraction of a vibration cycle. That makes me think DShot300 should still be more than adequate while being more robust. I’m interested to hear if there’s something I’m missing or a case where 600 clearly helped.

DShot600 is more commonly used, wider spread in the ArduPilot community and a lot more tested than all the others. Please reduce the questioning of the suggestions we do, and just do it. Post your questions once the vehicle is working!

There have been many cases where Dshot600 was more stable but if you have exhausted all options, and it sounds like you have, then perhaps you will need to run Dshot300. Read thru this Wiki entirely because the parameters involved are covered in several areas of the guide. Dshot ESC’s

Accept for motor kV Are those default settings in the AM32 configurator? I’m not suggesting that’s a bad thing just curious.

I’ve followed everyone’s suggestions blindly… to the point where I’ve rerouted ESC signal cables, swapped ESCs, and rebraided new signal wires from scratch all to debug missing RPM data from my logs while on DShot 600. One log may show RPMs for motors on channel 9,10,11. Another it could be 10,11,12. The longest signal wire is 350-400mm long (I can’t go shorter). I’m concerned it’s affecting my RPM filtering.

The quad is working and running well actually. I asked the question because if I don’t gain any real benefit running D600 on my 2kg quad, I’d rather stick with D300 to avoid the issues. BTW the wiki suggests DShot150 at 150kbaud (recommended for larger aircraft with long signal lead runs)

https://drive.google.com/file/d/1_9pBKbtJ7GGLsS21F1mTZzHPdbAGd0wT/view?usp=sharing, https://drive.google.com/file/d/1fUvdntWSPvt6W3RUcYUgy_Secf3WV6I9/view?usp=sharing

There are some ESCs out there that wont do DSHOT150, and so 300 or 600 must be used.
DSHOT is a serial protocol with some basic error checking so longish cable runs aren’t a big problem - but it’s much more preferable to keep the ESCs close to the flight controller and (more importantly) the power source, and run long motor wires instead.

Dshot150 should not support bidirectional dshot, it’s stated in some sources and ardupilot documentation too