1.STM32 CubeMX的配置
1.1.ADC的配置
【补充资料】:STM32Cubemx ADC配置详解 注意看这个博客下面的评论,主要解释了上面说的ADC的模式。
2.FOC原理部分的思考
2.1.编码器角度校准
2.1.1.角度校准原理
为什么永磁同步电机初始位置定位时,给-90度的电角度就能实现初始定位,这是怎么理解的?
? 校准的方法就是生成一个A轴(alpha轴)方向的磁场,此时转子的N极就会指向A轴,此时的电角度就是0度,记录此时编码器读取的机械角度,并且转化为电角度,就是编码器的偏移电角度。
? 对于dq轴模型来说,A轴是0度的电角度位置。为了生成A轴方向的磁场,可以给虚拟的电角度为-90度,q轴为一个定值,d轴为0,此时生成的磁场方向就是A轴方向。原因是qd轴模型是让生成的磁场方向超前当前转子方向(也就是q轴方向)90度,而如果人为给定这个电角度为-90度的话,那么就相当于虚拟了一个转子在A轴-90度的位置,这样按照dq轴模型生成的磁场就是超前这个虚拟转子90度的方向了,也就是在A轴方向了。
2.1.2.多个角度校准值
? 由于电机是多对极的,对于一个n极对数的电机来说,那么这些极对数的N极都将可以对其A轴的方向,但是编码器是360度输出唯一的角度的,所以这样就会读取出N个编码器角度的偏移值。实际上使用哪个偏移值都是可以的,比如现在第一个N极对齐A轴,读出来编码器偏移机械角度转为电角度是500度,此时直接读取编码器得到的原始电角度肯定也是500度。当转动电机到第二个N极对齐A轴的时候,电角度增加了360度,那么此时直接读取编码器得到的原始电角度就是500+360=860度,如果以此时的角度为偏移角度,那么偏移的电角度就是860度。也就是说,相邻的两个N极对齐A轴,得到的编码器电角度作为偏移值是相差360度的。如果以500度为偏移电角度,假设此时读到的编码器原始电角度值为500度,那么得到的有效电角度(原始值-偏移值)就是0度。如果以860度为偏移电角度,此时读取的编码器原始电角度还是500度,那么得到的有效电角度就是500-860=-360度。但是由于电角度最后用的地方都是sin和cos,是以360度为周期的,所以这里的-360度和0度实际上结果是一样的。因此对于不同N极对齐A轴得到的n个角度校准值,使用哪一个都是一样的。
3.工程实现部分的思考
3.1.定点数和浮点数
谈谈二进制
DSP上浮点数据定点化处理 Q格式(Q15)
- PWM和电流环和STM32的硬件底层联系很深,配置很麻烦,花费很多精力去看底层
- 没有浮点运算,很多地方有各种不同位数的int和uint的强转,造成很大的理解障碍
- 在park和反park变换的地方操作和推导公式不一致,说是由于坐标系定义不同,但是还是对不上
- 这份代码精简了原来的库,只保留了必要的数据类型定义,便于理解核心的FOC算法。但是从HAL库变成了标准库,对比原版电机库修改过大。
|