foc闭环调试
1、ADC电流采样上次添加了编码器获取电角度的程序,将之前开环控制的角度进行了替换,这次再将电流采样添加进来,之后就可以利用这样一个有反馈的系统进行电流环PI控制器参数调试。
之前写过ADC+DMA电流采样的stm32库函数程序,现在来看还是有很大缺陷的:首先当电机没有转动时,ADC采样已经有了一个数值,即是一个偏置,需要后面将其减去,这块采回来的电流理论上是一个正弦波数值。另外需要将ADC采样值转换为对应单位的电流,公式是(ADC原始值-偏置)*3.3V参考电压/4096/R欧姆/放大倍数,这个还需要进一步验证。
2、一阶低通滤波算法
FirstOrder_LPF_Calc 通常用于计算一阶低通滤波器(LPF)的输出,滤波器用于平滑输入信号,消除噪声,尤其是在控制系统中处理传感器信号时。一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。
一阶低通滤波的算法公式为:
Y(n)=αX(n) + (1-α)Y(n-1)
α 越大,滤波器的响应越快,能更快跟踪输入变化,但噪声抑制效果较差。
α越小,响应越慢,能更好地滤除噪声,但可能会导致信号滞后。
应用:
FirstOrder_LPF_Calc 可广泛应用于传感器信号滤波、电流环和速度环的噪声抑制等场景。在FOC(磁场定向控制)中,滤波器用于平滑电流和速度反馈信号,避免过大的噪声干扰控制系统的稳定性。
总结:
通过调节 α,可以灵活控制滤波器的响应速度和噪声抑制效果。
滤波器能有效减小信号中的高频噪声,同时保持低频成分的完整性。
一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:当数据快速变化时,滤波结果能及时跟进(灵敏度优先);当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。
3、 pid参数数据结构
typedef struct
{
floatRef; // Input: Reference input
floatFdb; // Input: Feedback input
floatErr; // Variable: Error
floatKp; // Parameter: Proportional gain
floatUp; // Variable: Proportional output
floatUi; // Variable: Integral output
floatUd; // Variable: Derivative output
floatOutPreSat; // Variable: Pre-saturated output
floatOutMax; // Parameter: Maximum output
floatOutMin; // Parameter: Minimum output
floatOut; // Output: PID output
floatSatErr; // Variable: Saturated difference
floatKi; // Parameter: Integral gain
floatKc; // Parameter: Integral correction gain
floatKd; // Parameter: Derivative gain
floatUp1; // History: Previous proportional output
floatUi_1;
floatOutF;
} PIDREG_T;
准备学习一下电机控制 幸福小强 发表于 2025-5-25 20:12
准备学习一下电机控制
凌鸥有凌鸥学园电机控制入门课程 MYWX 发表于 2025-5-26 11:12
凌鸥有凌鸥学园电机控制入门课程
请提供链接 LKS32MC08的有感FOC开发包在哪里下载 lanmanck 发表于 2025-5-26 12:02
请提供链接
https://bbs.21ic.com/icview-3402362-1-1.html 楼主能分享一下完整的程序吗?谢谢。
页:
[1]