ESC32 Run Modes
ESC32´s support 4 different run modes:
- Open Loop Throttle Mode (default)
- Closed Loop RPM Mode
- Closed Loop Thrust Mode
- Servo Mode
Open Loop Throttle Mode
Open loop throttle mode is the default run mode. In this mode the input command signal is simply scaled to throttle duty between 0 and 100 percent. The top speed of the motor will drop with the battery voltage.
Closed Loop RPM Mode
In closed loop RPM mode, the control signal is scaled to RPM by controlling the voltage to the motor. This allows to control the exact speed of the ESC and compensate for voltage drop in battery supply.
To use Closed loop RPM mode requires that a RPM to Voltage Calibration is run in order to generate Feed Forward terms for the specific motor and propellor used. A RPM scale parameter is also used to define the RPM at full speed:
FF1TERM = +0.00000e+00
FF2TERM = +0.00000e+00
PWM_RPM_SCALE = 6000 RPM
Closed Loop Thrust Mode
Closed loop thrust mode uses the Closed Loop RPM controller and adds two thrust terms to then scale the RPM to thrust.
To use thrust mode, you must first generate the settings for closed loop RPM mode and enter them into the configuration.
The Thrust terms are then generated by measuring the thrust of your propellor throughout its range it and plotting it as a thrust curve and expressing it as a 3rd order polynomial.
Further description and method to set up thrust mode can be found in this forum post.
Servo mode basically converts ESC32 into a servo controller that can be used with high resistance gimbal motors.
Servo mode must ONLY be used with high impedance motors for designed for brushless gimbals. Using it with a normal type motor with low impedance can destroy the motor and ESC.
For servo mode to work properly, you need to set the number of magnetic poles in your motors. You should also set the current limiter to a low value to prevent overcurrent damage:
MAX_CURRENT = 2
MOTOR_POLES = 14
The servos operation is governed by these 5 parameters:
SERVO_DUTY = 5.0 %
SERVO_P = 0.050
SERVO_D = 0.000
SERVO_MAX_RATE = 1000.0 deg/s
SERVO_SCALE = 360.0 deg
SERVO_DUTY is basically power. Increase to get more torque and holding power. Too much can overheat the motors, so increase gradually and watch for signs of overheating.
SERVO_ P is the P term of the PD controller. More P will allow faster transitions. Too much will produce oscillation and jitter in the motor. Work your way up slowly and watch for signs of motor heating up.
SERVO_D is the D term of the PD Controller. In most cases the D term is not needed. Use small values if tuning the D term (start with 0.001)
SERVO_MAX_RATE is the maximum rotation rate allowed in degrees per second
SERVO_SCALE defines the number of degrees the control signal is scaled to.