2026/1/21 1:26:15
网站建设
项目流程
专门做实习计算机项目的网站平台,电销卡代理加盟,美工培训网课,如皋市网站建设线性自抗扰控制
包含#xff1a;线性跟踪微分器、线性扩张状态观测器、线性状态误差反馈控制律。
C代码、STM32F1代码、keil工程。
直流电机的速度控制、位置控制。
含在线文档#xff0c;含经典调参方法以及心得。
含简单的。
部署过四旋翼的姿态角速度环#xff0c;
以及直…线性自抗扰控制 包含线性跟踪微分器、线性扩张状态观测器、线性状态误差反馈控制律。 C代码、STM32F1代码、keil工程。 直流电机的速度控制、位置控制。 含在线文档含经典调参方法以及心得。 含简单的。 部署过四旋翼的姿态角速度环 以及直流电机的速度、位置环。线性自抗扰控制这玩意儿搞电机控制是真带劲尤其是面对那些建模困难还总被外界干扰蹂躏的场景。当年在实验室调四轴姿态环被噪声折腾得死去活来时这货让我看到了光——今天咱就掰开揉碎了聊聊怎么用STM32F103把它玩溜了。核心三板斧必须得说清楚跟踪微分器负责把目标信号磨皮柔化扩张观测器当透视眼看穿系统内部状态误差反馈做精准打击。举个直流电机速度控制的例子先上段微分器的C语言实现// 线性跟踪微分器参数 float v1 0, v2 0; float h 0.001; // 采样周期1ms float r 100; // 速度因子 void LTD(float target) { float fh h * r; float d fh * fh; float c fh 2 * sqrt(d); v1 h * v2; v2 h * (-r*(v1 - target) - c*v2); }这段代码在定时器中断里跑起来实测能把阶跃信号处理得跟德芙似的顺滑。调参时注意r别贪大超过300容易引发电机抖动像吃了跳跳糖似的。扩张观测器才是真正的黑科技它能看透系统五脏六腑。看这段电机转速观测的代码// 电机状态观测结构体 typedef struct { float z1, z2, z3; // 状态扰动观测 float b0; // 控制增益倒数 float beta1, beta2, beta3; // 观测器带宽 } LESO; void leso_update(LESO *eso, float u, float y) { float e y - eso-z1; eso-z1 h * (eso-z2 eso-beta1*e); eso-z2 h * (eso-z3 eso-beta2*e eso-b0*u); eso-z3 h * eso-beta3 * e; }这里beta参数组要遵循带宽法比如beta13w, beta23w², beta3w³w取20~50效果不错。调试时用JScope看z3的波形那曲线起伏就是系统受到的实时扰动比心电图还直观。状态反馈控制律就简单粗暴了但参数整定有讲究float lsef(float target, LESO *eso) { float u0 0.8*(target - eso-z1) 1.2*(0 - eso-z2); return (u0 - eso-z3) / eso-b0; // 扰动补偿 }这里的0.8和1.2可不是随便填的数对应PD参数。有个骚操作是先用Ziegler-Nichols法整定基础参数再根据抗扰需求加20%裕量。在四旋翼姿态环实战时发现角速度环的b0参数必须实测——拿电机空载和带桨情况分别阶跃响应取两者的中间值。有个坑是当控制周期超过2ms时观测器带宽得砍半否则数值会飘得亲妈都不认识。最后分享个调试神器用STM32的DAC输出观测变量接示波器同时看目标值和实际值。比在线调试效率高十倍亲眼见过有个老哥用这方法半小时调好了双闭环位置控制。完整工程里有个td_hanlder.c文件藏着宝藏——里面用状态机实现了参数在线整定运行时通过串口发送P1.2这种指令直接热更新调参不用重新烧录实测能省下60%的调试时间。这招在调八旋翼项目时直接让隔壁组研究生眼睛都绿了。