板子分为两个部分,一个是F302核心板,另一块是电机驱动板,通过插座连接,便于更换。核心板上部为板载ST-LINK,同时引出串口。核心板F302通过ST-LINK引出的MCO作为时钟源,板载按键连接至PC13,作为电机启停按键。驱动板自带电位器可用于电机调速连接至PB1即为ADC1的12通道,通过改变跳线,可以选择单电阻或三电阻的电流取样方式。还引出DAC接口。
我在官网下载了X-CUBE-MCSDK-FUL5.0.3的全开源版本(需要申请),并安装。其他必备的软件包括STM32CubeMX、KEIL MDK 5、STMStudio等。
1.首先连接核心板和驱动板
将电机和电源按照正确的方式接入驱动板,使用usb线连接板载ST-LINK(需要安装好相关驱动),V2.1版本的ST-LINK自带串口(VCP),连接至F302的串口2(PA2、PA3),这样可以省略USB-TTL模块,同时板子也将串口2引出。
2.获取电机参数
电机参数是调试电机成功与否的基础,所以必须要保证得到正确的电机参数,通常情况下电机厂商会将参数公布,但是大部分电机的参数不会很容易的获取到,如果是以前的话我会通过直流电桥测量电机线圈电阻,然后通过恒流电压源和示波器测量相电感然后计算反电动势常数(太麻烦了。。。)。现在不需要这么做了。
因为F4和F3系列是支持通过板子自动计算电机参数的(真的很方便),这时就要使用MotorProfiler这个软件了,将板子与电脑连接好后,启动软件,选择板子型号。
填入电机极对数,板子附带的电机极对数为7,1700kv,电源为12V,所以估算出电机最大转速2W/RPM,类型选择表贴式(SM-PMSM)。按Start Profile然后会按照3个步骤对电机进行分析,测量参数(过程中可能会因为转速过高而发生过流,软件会自动进行调整)。等测量好后,保存这个电机参数即可(按SAVE命名并保存,稍后会用到)。
软件部分
3.下载CUBE所用的F3的 HAL库,修改CUBE库F3的.h源文件
通常先把常用的命令进行重定义(以前标准库的习惯)
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
下载好HAL库文件后进入CUBE的Repository文件夹(通过CUBE设置),修改stm32f3xx.h,根据需要添加。(\Repository\STM32Cube_FW_F3_V1.9.0\Drivers\CMSIS\Device\ST\STM32F3xx\Include\stm32f3xx.h)
4. MotorControl Workbench
电机参数检测好后即可使用Workbench生成程序并调试电机了,软件界面如下
下半部分是官方提供的例程,可供参考,本次板子对应P-NUCLEO-IHM001-BullRunning。首先新建工程,选择对应的控制板和电源板,电机可以选择我们之前生成的电机文件(如果使用自己的电机那就必须要选择这个了)或者选择BR2804-1700KV这个电机。
Workbench主界面包括电机参数配置、电源及桥电路、驱动、控制IO几个部分。
电机参数部分可以修改电机参数、传感器参数等。电源及桥电路部分可以修改电源电压,电流取样方式及其放大倍数等。驱动部分可以修改传感器模式、PWM频率、死区时间、电流环速度环频率、和辅助功能如电流前馈和弱磁控制等。控制IO部分可以修改PWM输出引脚,电压电流取样引脚,串口调试引脚等。
以前使用过FOC4.3的电机库,新版本界面没有太大改动。官方已经将相关引脚配置好,所以大部分内容是不需要修改的,需要关注到的是这次使用的PWM频率为30K,使用3电阻取样,板载的3个取样电阻为0.33欧姆,取样放大倍数为1.53,T-rise为700ns(过滤噪声)。桥电路方面没有使用单独的MOS管(之前使用12管方案),而是使用集成款L6230 DMOS,不需要下桥臂信号,同时带有3相过流保护与使能信号。
传感器使用无传感器加观察法的方式(Sensor-less(Obs+PLL))(还可以选择高频注入法)同时可配置辅助传感器(当主传感器失效超过一定次数时进入辅助传感器),可选择的有(Obs+Cordic)或者霍尔传感器。
本次电流环截止频率为6000rad/s,1个PWM周期执行一次,速度环1ms执行一次,这些参数可根据实际情况进行更改。更改电机最大转速为18000RPM后进行编译
5.利用Workbench通过Cube编译
编译完成后进入所在文件夹,更改其安全属性,赋予文件夹内的文件的全部用户权限(win10下MDK添加文件夹的时候会导致程序假死,可能是个例,根据情况修改。)
6.IOC文件修改(STM32 CUBE)
进入工程所在文件夹找到IOC文件,这次是基于官方例程进行修改,所以大部分引脚均已经配置好了,我们只需要添加电位器所在引脚PB1,即为ADC1通道12。同时修改按键触发方式为外部中断下降沿触发,使能外部中断,然后进行编译。
编译完成后即可打开工程文件进行编辑了。
7.添加常用的.h配置文件(KEILMDK 5.25)
建立文件夹Inc,将根目录下Inc中常用的配置文件加入MDK文件列表中,方便调试。
drive_parameters.h最足要的配置文件,大部分配置参数在这个文件中,包括电流环Id Iq、速度环PID、PWM频率、死区等参数。
pmsm_motor_parameters.h 电机参数。
power_stage_parameters.h电源,电流取样等参数。
6.在主函数中添加外部中断回调函数,添加自定义按键
(在/* USER CODE BEGIN 4*/的用户程序部分添加,以防止后期再编译丢失)
/* USER CODE BEGIN 4 */
voidHAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin ==Start_Stop_Pin)
{
if(Start_Stop_Mode==0)
{
MC_AcknowledgeFaultMotor1();
Start_Stop_Mode=1;
MC_StartMotor1();
}
else
{
Start_Stop_Mode=0;
MC_StopMotor1();
}
}
}
/* USER CODE END 4 */
编译完成后即可烧录到板子上进行调试,可通过按键进行启停。
这样测评准备工作完成。下一部分进行电机测评的几个任务。
此内容由EEWORLD论坛网友gyp1原创,如需转载或用于商业用途需征得作者同意并注明出处