基于STM32开发板的永磁同步电机开环控制:使用Simulink代码生成工具

本文介绍使用Simulink代码生成功能在STM32开发板平台上运行永磁同步电机。

硬件基础:

Nucleo-G431RB开发板

X-NUCLEO-IHM07M1驱动扩展板

57BLDC-24V-210W时代超群直流电机

软件基础:

MATLAB 2022b 安装

  • Motor Control Blockset
  • Embedded Coder Support Package for STMicroelectronics STM32 Processors
  • STM32CubeMX 6.4

    控制方法介绍:

    本案例使用开环控制方法(也称为V/f控制)来运行永磁同步电机,这种方法通过改变钉子的电压和频率来控制转子速度,在这过程中不需要采用来自电机的任何反馈。该案例可以用来检查硬件是否连接完备。固定频率的供电电源保证电机速度恒定,改变电源频率可以调节转子运行速度。为了确保定子磁通量恒定,应该保证电源电压幅值正比于它的频率。该开环控制没有考虑影响电机速度的外部条件,因此它没办法自动校正输入速度与实际速度之间的偏差。

    软件配置:

    STM32CubeMX软件

    核心芯片选择STM32G431RBTx,芯片引脚定义如下图所示,PA-P10为三相PWM信号,PA0、PC1为两相电流ADC输入信号。

    PWM配置

    TIM1被配置为生成更新事件,保证ADC与PWM同步,这种同步对于实时读取电流反馈信号非常重要。

    ADC配置

    ADC1对IN1、IN7选择Single-ended,两路信号使能Injected Coversions。

    项目生成配置

    所有外设设备基于底层驱动LL(取消HAL),函数初始化取消Do Not Generate Function Call和Visibility(Static)。

    保存芯片配置文件xxx.ioc。

    MATLAB软件

    安装好Embedded Coder Support Package for STMicroelectronics STM32 Processors硬件支持包后本地会继承STM32平台的案例库。

    在命令行输入:open_system('mcb_pmsm_foc_sensorless_nucleo_g474re.slx');

    打开Simulink模板,然后Ctrl+E操作弹出硬件配置窗口,在STM32CubeMx项目文件选取上一步保存的.ioc文件。

    配置模数转化器参数

    本案例中的算法采用异步调度,脉宽调制(PWM)触发ADC转换,转换结束时,ADC发出一个中断,触发开环算法执行。

    配置PWM输出

    选择计数器启用后设置重复计数器参数,以在计时器的计数器溢出时更新事件。

    操作步骤:

    1. 将Nucleo-G431RB开发板与X-NUCLEO-IHM07M1板连接,Nucleo-G431RB开发板通过USB连接到PC端,X-NUCLEO-IHM07M1板上连好电机三相电线、24V直流电源;

    2. 打开供电电源,在MATLAB的“Hardware”选项卡中,点机“Monitor&Tune”。在底部诊断查看器中可以看到正在生成模型代码,主机加载生成的可执行文件后,电路启动工作,可以看到开发板上呼吸灯闪烁;

    3. 单机开发板上的蓝色按钮启动电机;注意:此示例可能不允许电机满负荷运行。开始低速运行电机。此外,建议分小步更改参考转速(例如,对于基本转速为 3000 rpm 的电机,以 500 rpm 的速度开始运行电机,然后以 200 rpm 的倍数增加或减少速度)。

    如果电机不运行,按蓝色按钮停止电机,并更改模型中的转速常数。然后按蓝色按钮启动电机并再次运行。

    附录 ADC偏移校准:

    本案例可以为永磁同步电机矢量控制提供准备工作,在电机空转时,通过Simulink数据查看器观察ADC信号数据,该数据就是ADC的偏移量,可以在矢量控制中校准电流值。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 基于STM32开发板的永磁同步电机开环控制:使用Simulink代码生成工具

    发表评论