一,MOS的栅极驱动配置
mos驱动一般都是利用定时器的互补pwm通道, 使得上下mos管不会同时导通,需要根据自己的驱动电路的AH BH CH AL BL CL来选择对应的定时器引脚
通道四的选取是用来触发ADC采样的,只有固定的时候,mos的下管才是全部打开的,这样对于低端采样,才可以正确的采集到电流,记得打开比较中断和更新中断。然后关于PWM的模式选择,就不在细说了,可以自行查阅。同时要注意自己的栅极驱动芯片有没有要求,比如说drv8301就需要spi配置一下,并且使能EN_GATE引脚,而FD8266就不需要初始化和使能引脚,具体需要看自己使用的电驱硬件。
二,ADC电流采样的配置
关于ADC采样,我喜欢用注入采样,因为我师父就是用的注入采样组,其他模式也是可以的,比如可以采样DMA,这样还可以非常方便的滤掉一些电流尖峰。
关于用几个定时器,在我看来还是多几个比较好,双电阻采样可以用两个ADC分别采样一个,据说这样比较快, 三电阻就可以开三个ADC,然后将我们采集的电压模拟值转换为实际电压值,再计算出实际的电流值,用于pid计算中,采样时间可以根据硬件情况适当调整,一般3cycle都是没问题的
三,编码器的配置
获取角度的方式,现在常用的有两种,spi通信获取,或者abz读取脉冲数
spi获取:
注意spi的配置要根据编码器来配置,比如我用的就是as5047p ,根据数据手册,他的通讯速率最大为10M,但是我实际使用10.5M也没事,所以我就使用了,然后一般都是高位在前,16位。而mt6816最大速率可以达到18M,具体的要根据自己的数据手册,毕竟越快越好。
abz获取:
现在用HAL库非常方便,只需要调用定时器编码器模式即可,比如我这个配置,就是电机转一圈定时器的CNT会有4000个数,选择的是上升下降都计数,abz不像spi那样,数据包,地址都有很大区别,更加方便。对了我当时用mt6816的时候没注意spi和abz的切换是需要拉高拉低电平的,所以一定要细心地注意看看数据手册。
四,虚拟串口的配置
然后最好要配置一下usb虚拟串口,因为普通串口发送是在是太慢了,发送太多,foc计算频率要求又很高,所以还是很有必要的
直接在connectivity里面勾选usb
然后在下面勾选usb设备
里面选择虚拟串口模式即可。
5,DSP库的配置
配置dsp库可以调用arm_math的函数,可以加快数学运算速率,毕竟对于程序来说,速率越快越好
首先要在softwa packs里面勾选dsp、
然后在里面勾选即可。注意先开启,要不勾选不上,配置完成之后还要引用链接一下库,我用的clion,不同的有不同的方式,网上搜索一下即可
刚刚跑完,有错误请指正,持续更新。
FOC讲解电机控制速成教程,三环嵌套,可拓展力矩环(基于CUBEMX,STM32HAL库,包含odrive代码分析讲解)一,简单概述,分析电流环-CSDN博客
Foc讲解,电机控制,odrive源码分析移植速成系列(HAL库,CUBEMXSTM32) 三,(1)代码编写(大体框架。drv8301配置,编码器校准)-CSDN博客