STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验

目录

前言

 基本原理

仿真实现

代码生成及开发板验证


前言

之前做了脉振高频注入的仿真到代码生成开发板运行的实验,电机可以通过高频注入计算出角度,但是在初始位置检测的时候,尝试了不少方法但是效果一般,很容易反转,由于时间关系没有花太多时间和精力,最近又尝试了一种方法,效果还是比较明显在这里记录一下,所有算法层的代码都是自动生成的。STM32 Simulink 自动代码生成电机控制——脉振高频注入_高频注入代码_卡洛斯伊的博客-CSDN博客

 基本原理

在做高频注入的时候都会发现,注入高频信号进行角度估算后会收敛到某一个角度,如果不加磁极判断的话,收敛的角度可能会差\pi,就会造成反向收敛,也就是电机会反转。所以在启动的时候需要判断初始的位置角对不对。实现的方式是Q轴电流给0,D轴注入高频信号,这时候转子是不动的,通过高频注入可以提取出转子位置信息。再根据一个高频周期内D轴电流的最大值和最小值进行判断是否要加\pi

STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第1张图片

 

仿真实现

如下是反馈回来的Id, 提取出Id的最大值和最小值

STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第2张图片

 再配合状态机进行判断

STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第3张图片

 

代码生成及开发板验证

完整的启动过程如下,启动的时候高频注入收敛到了某一个角度,进行NS判断后得到的初始位置角基本已经和编码器的角度重合在一起了,紫色是编码器的角度。小电机自带霍尔,如果想要带编码器可以参考:记录为小电机安装一个5012编码器(多摩川协议)的过程_电机编码器的软件配置过程_卡洛斯伊的博客-CSDN博客

STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第4张图片

 如下,角度收敛后判断出不需要加\pi,不过角度和编码器的角度误差有大约十几度STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第5张图片

 尝试其他位置,初始位置也能收敛到编码器的初始位置STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第6张图片

 STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第7张图片

 STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验_第8张图片

 可以看看启动的演示视频

初始位置检测演示

总结

从实验波形来看,初始位置角的检测已经实现,连续几次也能正常启动,没有发生反转,不过还有不少优化空间,先记录一下。

你可能感兴趣的:(Simulink,调试技巧,单片机,嵌入式硬件)