一,大体框架
整体可以分为两部分,一部分为主函数,作为指令层去控制电机执行的阶段,另一部分作为执行层,在中断里面重复的进行采样计算输出。
主函数:
首先进行我外设的初始化,然后是编码器的校准,接着是相电感,相电阻的检测,最后置标志位,电机进入正式运行模式
中断函数:
第一个标志位,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
经过这几步其实就可以进入闭环了,但是为了电流环的参数更好一些,可以测量一下相电阻和相电感,代码逻辑不是很清晰,有问题请指正。