原创

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

正文到此结束