33 lines
868 B
C
33 lines
868 B
C
#ifndef __MOTOR_H
|
||
#define __MOTOR_H
|
||
|
||
#include "main.h"
|
||
|
||
#define MAX_PWM_DUTY 1049
|
||
#define PWM_LIMIT 1000
|
||
|
||
#define ENCODER_RESOLUTION 11.0f
|
||
#define REDUCTION_RATIO 90.0f
|
||
#define PULSES_PER_REV (ENCODER_RESOLUTION * 4.0f * REDUCTION_RATIO)
|
||
|
||
/* 控制循环 5ms,但速度估计窗口取 2 个采样点 => 10ms */
|
||
#define MOTOR_SPEED_WINDOW_SAMPLES 2U
|
||
|
||
typedef enum {
|
||
MOTOR_FL = 0,
|
||
MOTOR_RL,
|
||
MOTOR_FR,
|
||
MOTOR_RR
|
||
} Motor_ID_t;
|
||
|
||
void Motor_Init(void);
|
||
void Set_Motor_Output(Motor_ID_t id, int16_t control_out);
|
||
void Motor_Brake_All(void);
|
||
|
||
/* 外部仍按 5ms 调用;内部会按滚动窗口更新速度估计 */
|
||
void Motor_Update_RPM(float dt_s);
|
||
float Get_Motor_RPM(Motor_ID_t id);
|
||
void Motor_Get_And_Clear_Delta_Ticks(int16_t* d_fl, int16_t* d_rl, int16_t* d_fr, int16_t* d_rr);
|
||
|
||
#endif /* __MOTOR_H */
|