The following information may help you if you are experiencing erratic motor behavior, especially when in automatic control:
The BR ESC’s have a +/- 25 usec deadband built into the firmware. In the case of using an Adaruit Metro-Mini Arduino processor to interpret joy-stick position, the +/-25 is not enough. I suspect this may be the case for other processors as well.
My measured noise from the the A/D conversion of 0-5 volts to 0 - 1023 at the joy-stick mid-point position is 480 +/- 7. Mapping that to 1100 - 1900 gives an ESC input of 1489 - 1529 (measured), due to system noise. Even though the 1529 isn’t much outside the deadband, it is enough to cause trouble with heading-hold applications. My LSM303 has a measured variation of +/- 2 degrees. Using a Kp of 15, which seems to work best, and add to that the processor noise of above, you can see a big problem can arise. If the system happens to see a + 2 compass variation and a + 7 noise spike from the A/D converter at the same time, the ESC can receive a very large pulse width signal. It happens, and has happened to me on numerous occasions. I feel it can be damaging to the motor bearings when instantly accelerating from a dead stop to high RPM, plus it drives me crazy when trying to record video footage, or hold course when in heading hold. I can reduce the Kp, to minimize the problem, but then my heading drift increases to undesirable levels.
For non-heading hold (manual) steering it is easy to build a larger deadband into the control program to avoid erratic motor action when the joy-stick is centered. I haven’t figured out how to do that for auto heading work.
I would like to hear if any of you have worked with this issue and what solutions you came up with.