本人刚刚接触RM,主要以官方C型开发板历程为指引进行工程配置,目前在学习M2006电机的控制.
我遇到的问题是在我自己使用PID后无法使电机转动,不知道问题在哪里。
以下是 main函数的相关代码:
由于目前在学习M2006,所以只使用了ID0x201一个ID的电机。
#define PID1_KP 1600.0f //kp of motor control PID
#define PID1_KI 0.2f //ki of motor control PID
#define PID1_KD 0.0f //kd of motor control PID
pid_type_def *pid1;
const fp32 motor_PID[3] = {PID1_KP, PID1_KI, PID1_KD};
const motor_measure_t *motor_data[4];
can_filter_init();
PID_init(pid1, 0, &motor_PID[3], 10000, 5000);
motor_data[0] = get_chassis_motor_measure_point(0);
motor_data[1] = get_chassis_motor_measure_point(1);
motor_data[2] = get_chassis_motor_measure_point(2);
motor_data[3] = get_chassis_motor_measure_point(3);
while (1)
{
//pid1->set = 6000;
PID_calc(pid1, motor_data[0]->speed_rpm, 6000);
CAN_cmd_chassis(pid1->out,0,0,0);
HAL_Delay(10);
//CAN_cmd_gimbal(10000,0,0,0);
//HAL_Delay(2);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
我想问一下,我这样用PID对吗,我的M2006电机不转。