Link

Open loop Motion control

BLDC motors Stepper motors

This is the standard motion control approach where the position sensor is used to provide feedback to the motion control loop. The motion control loop (motor.move()) will calculate the target torque (current or voltage) to be applied to the motor using the underlying torque/FOC control loop (motor.loopFOC()) in order to achieve the desired motion.

SimpleFOClibrary gives you the choice of using 2 different open-loop control strategies, control strategies that do not require a position sensor

Index search uses also uses open-loop velocity control, but has some additional parameters, see index search


You set the open-loop modes by changing the motor.controller variable. If you want to control the motor angle you will set the controller to MotionControlType::angle_openloop and if you want to control motor angular velocity MotionControlType::velocity_openloop.

// MotionControlType::velocity_openloop    - velocity open-loop control
// MotionControlType::angle_openloop       - position open-loop control
motor.controller = MotionControlType::angle_openloop;
Velocity control Position/angle control
MotionControlType::velocity_openloop MotionControlType::angle_openloop
Go to Velocity control docs Go to Position/angle control docs

How it works?

Choose the motor type:

BLDC motors Stepper motors

Choose the voltage control type:

Position control Velocity control

For more information about the source code implementation of the motion control strategies check the library source code documentation