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。
4. 工程配置
霍尔的配置
PWM配置
MCU为72M时钟,PWM使用20k,1分频时钟,则PWM的周期寄存器配置为
72000000/20000 – 1= 3599.
CAN通信的配置为250kbps
在基础工程做完后,就需要根据应用添加其他模块和算法,
其中主要难点是PID参数的整定和转速调节,以及速度的获取,转速信息可以通过读取霍尔值,用于转速计算,而转速的计算算法可以从数据手册获取,如下图所示
电机电流的获取通过DMA,减少CPU的负担,主要模块添加完后,添加一些保护门限值。本系统通过CAN通信控制各个电机,系统多达10台电机,所有驱动板采用一拖二通用设计。软件也采用模块化设计。
5. 测试
给定1200RPM(0x04B0) 转速测试
如果想转速在精确一些,可以在调整PID参数,并且闭电流环。如果精度在要求高,可以采用FOC控制,FOC算法复杂一些。这里不在赘述。