STM32使用SimpleFOC进行无刷电机驱动
温馨提示:
本文最后更新于 2025年11月21日,已超过 94 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
SimpleFOC教程比较多,这里参考的是 https://blog.csdn.net/loop222/article/details/120471390 。
一、项目简介
项目使用的芯片有STM32F103ZET6,电机驱动芯片使用的是drv8313,传感器芯片使用的AS5600,12V电源和转接板。
程序框架使用的是STM32的hal库,片上外设使用到的usart1,I2C2,GPIO PB9,TIM4 ch1,ch2,ch3。

二、实现功能
速度控制
让电机始终按照设定的速度运转,不因负载的变化而变化。
速度控制一般会采用内环电流环,外环速度环的方式,所以可以限制转动过程中的电流不超过设定值。
位置控制
精确控制电机转动到指定角度,
位置控制一般会采用内环电流环,外环速度环,最外环位置环的方式,所以可以限制转动过程中的最大速度,和最大电流。
三、hal库配置
大致配置了以下内容,这里我使用的是I2C2,I2C的通信速率是400K,100KB会有概率由于采样器延迟导致的出现电机抖动。

四、问题记录
由于I2C设置速率不对导致的抖动。

由于传感器焊接问题导致的I2C读取失败


最后的记录
代码我放到gitee上了 https://gitee.com/lijunze94/bldc-montor 。
正文到此结束
- 本文标签: 其他
- 本文链接: https://lijunze.me/article/2
- 版权声明: 本文由泽原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权