Foc讲解,电机控制,odrive源码分析移植速成系列(HAL库,CUBEMXSTM32)- 代码编写与框架搭建

一,大体框架

整体可以分为两部分,一部分为主函数,作为指令层去控制电机执行的阶段,另一部分作为执行层,在中断里面重复的进行采样计算输出。

主函数:

首先进行我外设的初始化,然后是编码器的校准,接着是相电感,相电阻的检测,最后置标志位,电机进入正式运行模式

中断函数:

第一个标志位,Motor_Control.is_aready_calibration是进行编码器校准                                            第二个标志位,Motor_Control.is_measureing_R是进行电阻检测                                                  第三个标志位,Motor_Control.is_mrasureing_I是进行电感检测                                                        第四个标志位,Motor_Control.is_get_RI获取了电阻电感之后进行闭环模式                                      在这些校准期间,foc_Calculate_Output_Current_()中的svpwm也是在一直计算,并且赋值CCR的,图形化显示也是在一直更新的。

二,drv8301的初始化配置

因为国内驱动器odrive和vesc在一直使用,所以简单介绍一下,具体原理就不具体说明了。在使用前最好要进行初始化一下的

直接调用Start函数即可,记得将第一行的EN_GATE引脚置高,然后我这个配置是20倍电流放大,16位数据结构,6路pwm输出 ,具体可以查看数据手册自行了解。

三,编码器校准

首先是要进行强拖

接着在这2秒内,进行补偿值记录或者编码器计数值清0

经过这几步其实就可以进入闭环了,但是为了电流环的参数更好一些,可以测量一下相电阻和相电感,代码逻辑不是很清晰,有问题请指正。

作者:_running__li

物联沃分享整理
物联沃-IOTWORD物联网 » Foc讲解,电机控制,odrive源码分析移植速成系列(HAL库,CUBEMXSTM32)- 代码编写与框架搭建

发表评论