其中,使用CAN2连接C620电调CAN接口,CAN1跟主控通信
控制周期:速度环:1ms,位置环:1ms
- 克隆仓库
- 编译程序
- 将程序下载到对应的硬件环境中
for(int i = 0; i < 8; i++)
{
Driver[i].status = ENABLE;//使能电机
Driver[i].encoder.period = 8192; //RM3508霍尔返回的脉冲以8192为1圈,具体请参考RM3508手册
if(Motor[i].type == RM_3508)
{
// Driver[i].unitMode = HOMING_MODE;
Driver[i].unitMode = POSITION_CONTROL_MODE;//位置环程序
// Driver[i].unitMode = SPEED_CONTROL_MODE;//速度环程序,请打开位置环和速度环中的任意一条
Driver[i].velCtrl.kp = VEL_KP_3508;//请到ctrl.h中修改相应的速度环pid参数,以获得理想的运行效果
Driver[i].velCtrl.ki = VEL_KI_3508;
Driver[i].velCtrl.maxOutput = CURRENT_MAX_3508;
Driver[i].velCtrl.desiredVel[MAX_V] = VEL_MAX_3508;
Driver[i].posCtrl.kd = POS_KD_3508;//请到ctrl.h中修改相应的位置环pid参数,以获得理想的运行效果
Driver[i].posCtrl.kp = POS_KP_3508;
Driver[i].homingMode.current = 0.8f;
Driver[i].velCtrl.acc = 1000.0f;//速度上升环斜坡陡度(加速度)
Driver[i].velCtrl.dec = 1000.0f;//速度下降斜坡陡度(减速度)
Driver[i].velCtrl.desiredVel[CMD] = 1000.0f;//如果跑速度环,其初始速度为 1000 / 8.192 = 122rps(转子速度)
Driver[i].posCtrl.acc = Driver[i].velCtrl.dec;
Driver[i].posCtrl.posVel = 50.0f;
Driver[i].homingMode.vel = -160.0f;
}
else
{
break;
}
}
相应的电子元器件,可以直接查看该板子的原理图和PCB图
请参考在Action_User文件夹下的elmo.h文件,这里面包含了你们可能使用到的一些命令
懒人模式:不想看elmo.h,或者不愿意自己重写通信协议的,在确保CAN1和CAN2连接正常的情况下,让主控包含elmo.h和elmo.c文件,并调用测发送VelCtrl(CANx,8192*10),这样3508应当以10rps的速度旋转。
参考链接: RM3508/C620 官方手册与demo