CAN通信控制一拖二直流无刷电机

1. 摘要

本篇笔记主要介绍,通过CAN通信控制两个直流无刷电机的快速开发和应用

2. 准备工作

   IAR 8.3.1

3. 工程建立

这次工程以STM32F103RC为例用CAN驱动控制两路直流无刷电机,带霍尔传感器,TIM1和TIM8用来输出PWM,TIM2和TIM4用来接霍尔,采用6步法控制算法实现电机的换向和控制,电机的转速由霍尔信号计算,每个电机的电流采用单电阻采样,使用DMA,减少CPU处理时间,使用CubeMX快速配置工程,管脚分布,生成初始工程,为了代码可读性,分配管脚时候,命名为代码中要使用的名字如霍尔三个管脚可命名为M1_HALL_H1, M1_HALL_H2, M1_HALL_H3。

CAN通信控制一拖二直流无刷电机

4. 工程配置

霍尔的配置

CAN通信控制一拖二直流无刷电机

PWM配置

CAN通信控制一拖二直流无刷电机

MCU为72M时钟,PWM使用20k,1分频时钟,则PWM的周期寄存器配置为

72000000/20000 – 1= 3599.

CAN通信的配置为250kbps

CAN通信控制一拖二直流无刷电机

CAN通信控制一拖二直流无刷电机

在基础工程做完后,就需要根据应用添加其他模块和算法,

CAN通信控制一拖二直流无刷电机

其中主要难点是PID参数的整定和转速调节,以及速度的获取,转速信息可以通过读取霍尔值,用于转速计算,而转速的计算算法可以从数据手册获取,如下图所示

CAN通信控制一拖二直流无刷电机

电机电流的获取通过DMA,减少CPU的负担,主要模块添加完后,添加一些保护门限值。本系统通过CAN通信控制各个电机,系统多达10台电机,所有驱动板采用一拖二通用设计。软件也采用模块化设计。

5. 测试

CAN通信控制一拖二直流无刷电机

给定1200RPM(0x04B0) 转速测试

CAN通信控制一拖二直流无刷电机

如果想转速在精确一些,可以在调整PID参数,并且闭电流环。如果精度在要求高,可以采用FOC控制,FOC算法复杂一些。这里不在赘述。