使用STM32实现PMSM电机的正弦驱动

Microchip 的应用笔记 AN1017 讲述了一种使用空间矢量调制(Space Vector Modulation,SVM)方法产生用于驱动 PMSM 电机各相的正弦电流,以此驱动具有霍尔位置传感器的永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)的控制算法,其配套的开源算法采用 dsPIC® 数字信号控制器实现,此前在淘宝购入了一块基于 STM32 的无刷直流电机开发板,于是试着将该开源代码移植至手上这块开发板上。开发板如下图所示:

  • 中断服务程序一览表
    中断何时调用执行操作
    TIM120kHz根据当前位置使用 SVM 产生正弦波
    TIM21kHz电机堵转保护,执行 PID 控制
    TIM3霍尔信号跳变计算转子位置,确定转子机械方向,实现正弦波指针与转子位置的同步
    DMA154.9kHz读取来自电位器的新转速给定值

其中定时器3被配置为“接口定时器”,捕获/比较通道1对每一次霍尔信号的跳变进行捕获,捕获值为电机转过60°电角度的时间,以此计算转速;捕获/比较通道2被配置为对其中一路霍尔反馈信号的下降沿进行捕获,即电机每转过180°电角度(经评论区lanmanck指正,应为360°)判定一次运转方向,避免在霍尔信号跳变的临界区域对运转方向判定带来干扰。

  • PID 算法
    速度环 PID 算法采用 CMSIS DSP Software Library 中提供的 Q15 格式 PID 算法,查阅其资料可知该算法同 AN1017 所述,从常规 PID 形式改进至类滤波器 PID 实现形式,算法如下:

Algorithm:
y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
A0 = Kp + Ki + Kd
A1 = (-Kp ) - (2 * Kd )
A2 = Kd

在此,对该算法进行推导,由 PID 算法的定义有:
y[n] = Kp * x[n] + Ki * (x[n] + x[n-1] + … ) + Kd * (x[n] - x[n-1])

y[n-1] = Kp * x[n-1] + Ki * (x[n-1] + x[n-2] + … ) + Kd * (x[n-1] - x[n-2])

两式相减:
y[n] - y[n-1] = Kp * (x[n] - x[n-1]) + Ki * x[n] + Kd * (x[n] - x[n-1] - x[n-1] + x[n-2]

则原式得证:
y[n] = y[n-1] + (Kp + Ki + Kd) * x[n] + (-Kp - 2 * Kd) * x[n-1] + Kd * x[n-2]

  • 按键操作说明
    FUN 键作为运行与停止的控制,UP 键作为转速给定方向的切换。

  • 实测波形
    正弦电流的产生依赖于对转子位置的估测,现将程序中变量 Phase 通过 DA 输出,用示波器测量电机运转在1000 RPM 时的波形如下:
    这里写图片描述
    通过霍尔传感器对电机线电流进行观测,电机运转在1000 RPM 时的电流波形如下:
    这里写图片描述
    电机运转在4000 RPM 时的电流波形如下:
    这里写图片描述

相关链接

移植代码下载

  • 7
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值