Motor control algorithms and driver implementation
This skill provides motor control algorithm implementation and driver development expertise for embedded systems controlling DC, BLDC, stepper, and AC induction motors.
device-driver-development.js - Motor driver implementationreal-time-architecture-design.js - Real-time control designisr-design.js - Control loop ISR designThis skill is invoked when tasks require:
| Type | Control Method | Feedback |
|---|---|---|
| Brushed DC | PWM duty cycle | Encoder optional |
| BLDC | Six-step, FOC | Hall, encoder, sensorless |
| PMSM | FOC | Encoder, resolver, sensorless |
| Stepper | Step/direction, microstepping | Open-loop, encoder |
| AC Induction | V/f, FOC | Encoder, sensorless |
typedef struct {
float i_alpha, i_beta; // Clarke transform output
float i_d, i_q; // Park transform output
float v_d, v_q; // Voltage commands
float v_alpha, v_beta; // Inverse Park output
float theta; // Rotor angle
float speed; // Rotor speed
} foc_state_t;
void foc_current_loop(foc_state_t* state, float i_a, float i_b, float i_c) {
// Clarke transform
clarke_transform(i_a, i_b, i_c, &state->i_alpha, &state->i_beta);
// Park transform
park_transform(state->i_alpha, state->i_beta, state->theta,
&state->i_d, &state->i_q);
// PI controllers
state->v_d = pi_controller(&pid_d, state->i_d_ref - state->i_d);
state->v_q = pi_controller(&pid_q, state->i_q_ref - state->i_q);
// Inverse Park
inv_park_transform(state->v_d, state->v_q, state->theta,
&state->v_alpha, &state->v_beta);
// SVPWM
svpwm_generate(state->v_alpha, state->v_beta, pwm_duties);
}
motor_control:
motor_type: bldc | pmsm | stepper | induction
control_method: foc | six_step | vf | step_dir
pwm_frequency: 20000 # Hz
current_loop_rate: 20000 # Hz
speed_loop_rate: 1000 # Hz
feedback: encoder | hall | sensorless