前言
上一节给大讲演示了如何用ST MotorControl Workbench创建基本STM32F103C8T6芯片的FOC工程并根据实际电路成功创建了工程,但是实际电路使用的是绝对式磁编码器作为电机位置及速度检测传感器,而ST MotorControl Workbench工程中并没有对应的选项可选,因此上一节所创建的工程是无位置传感方式的FOC工程,本节将基于上一节的工程,给大家讲解如何手动将工程修改成绝对式位置传感器方案FOC,本节操作过程及原理可参看《STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法》,或《如何在 MCSDK 5.x 中增加绝对位置编码器https://mp.weixin.qq.com/s/9uqYjkZMgRmzcfkU2j59hQ》。
下面直接进入正题,上一节已经介绍过原理图所用的磁编码芯片是TLE5012B,关于芯片的使用和说明大家可以自行去英飞凌官网下载相应资料。
针对TLE5012B芯片事件写好其驱动,本示例示事先准好几个文件:
abs_encoder_pos_fdbk.h
spi_pwm_encoder.h
mc_position.h
tle5012b.h
abs_encoder_pos_fdbk.c
spi_pwm_encoder.c
mc_position.c
tle5012b.c
其中tle5012b.c 和tle5012b.h是TLE5012b芯片驱动,spi_pwm_encoder.c 是基于tle5012b.c中接口完成电机电角度与机械角度的获取,abs_encoder_pos_fdbk.c则是基于spi_pwm_encoder.c进一步封装,完成电机转速计算等功能,mc_position.c是电机位置控制功能代码。将上面四个文件手动加入工程中(.c放在SRC文件夹下,.h放在INC文件夹下,并在Keill中手动加入四个C文件):
接下来按照《STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法》,或《如何在 MCSDK 5.x 中增加绝对位置编码器》内容,修改MC_tasck.c文件:
1,在MC_tasck.c文件头部加入对应头文件:
2,在MC_Boot函数中,将无感部分的初始化功能代码夫换成绝对多磁编码器的初妈化相关代码:
3.在TSK_MediumFrequencyTaskM1函数中:
3.在TSK_FOC_CalcCurrRef函数中做如下修改:
3.在TSK_HighFrequencyTask函数中做如下修改:
最后在MAIN.C中加入如下代码:
编译,成功,如果你运动好,电机接线参数等都没有问题的话,差不多就可以顺利转动起来了,如果还不行,也不要担心,下面的章节将一点点教大家怎么调试让电机转动起来:
到此,将其无感方式变成绝对式磁编码位置检测方式内容就完成了。也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!
文中源码及资料下载,关注十三公众号:
在公众号里给十三发送 “下载|STM32 电机教程 24” :