1、简介
-
针对机器人在室内移动环境,需要对底盘进行麦克纳姆轮全向移动设计,本次设计采用RobMaster系统,主控采用ROBOMASTER 开发板 C 型,电机采用RM2006电机,并且通过DR16遥控器进行移动端控制,还通过TOF系列激光测距传感器进行避障设计。
2、电机驱动
大疆的电机都有专门的电调,RM2006电机与之配套的是C610电调。RM2006驱动示意图如下所示。
需要注意的是RM2006仅支持CAN协议进行驱动,因此在使用前需要进行电机ID设置,电压上限为24V。
3、单个RM2006电机转动
3.1 cubmax操作过程
1、RCC配置
2、SYS配置
3、时钟树配置
直接输入红框内最大主频,回车确定,时钟树会自动进行最优分配。
4、CAN总线配置,
比特率=总线频率/分频系数/(同步段+BS1+BS2+1),总线频率如下图所示。
通过对RMC610说明书查阅得知,CAN总线比特率为1Mbps。通过对分频系数、同步段、BS1、BS2参数配置,得到1Mbps如下图所示。
接着将Basic Parameters中Automatic Bus-Off Management进行使能,作用是当Can总线长时间接受不到信号会自动进入低功耗模式,检测到信号自动唤醒。
接着将NVIC接收中断使能,如下图所示。
最好生成文件,如下图所示。
3.2 Keil 5操作过程
通过查阅官方发布的RM2006的Demo程序中stm32f4xx_hal_can.c文件与生成的文件进行比对,编写程序如下所示。
/* USER CODE BEGIN 2 */
HAL_CAN_Start(&hcan1);
uint8_t TxData[8] = {0};
int16_t speed = 10000;
CAN_TxHeaderTypeDef CAN1_TxHeader;
CAN1_TxHeader.IDE = CAN_ID_STD;
CAN1_TxHeader.RTR = CAN_RTR_DATA;
CAN1_TxHeader.DLC = 0x08;
CAN1_TxHeader.StdId = 0x200;
TxData[0] = speed >>8;
TxData[1] = speed;
TxData[2] = 0;
TxData[3] = 0;
TxData[4] = 0;
TxData[5] = 0;
TxData[6] = 0;
TxData[7] = 0;
//HAL_CAN_AddTxMessage(&hcan1, &CAN1_TxHeader, TxData,0);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_CAN_AddTxMessage(&hcan1, &CAN1_TxHeader, TxData,0);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
程序烧录后发现电机并没有转动,通过翻阅C板原理图得知,Can1引脚为D1、D2。如下图所示。
因此在Cubmax上对D0、D1引脚进行复用设置,如下图所示。
重新生成文件,烧录电机正常转动。
该设计介绍了如何使用RobMaster系统,通过ROBOMASTERC型开发板和RM2006电机实现室内移动机器人的全向移动。电机驱动采用CAN协议,需进行电机ID设置,并通过Cubmax配置CAN总线参数。在Keil5环境下编写程序控制电机,遇到问题后通过检查原理图和修改引脚复用解决,最终成功使电机转动。
2万+

被折叠的 条评论
为什么被折叠?



