ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

119、电机控制算法的C语言实现

119、电机控制算法的C语言实现 119、电机控制算法的C语言实现从一次炸管事故说起去年调试一个无刷直流电机驱动器,客户反馈说电机在低速运行时偶尔会“咔咔”响,然后MOS管就冒烟了。我盯着逻辑分析仪抓到的波形看了三天,最后发现是电流环PI控制器在饱和退出时,积分项没有做抗饱和处理。那个瞬间积分项已经累积到天上去,一旦退出饱和,输出直接跳变到最大占空比,电流瞬间过冲炸管。从那以后,我写电机控制代码,第一件事就是给所有积分器加上“防呆”机制。核心控制框架:别把代码写成教科书电机控制算法在C语言里落地,最忌讳的就是把数学公式原封不动搬过来。实际工程中,你需要考虑的是:采样周期抖动怎么处理?定点数还是浮点数?中断优先级怎么分配?我见过太多人把PID写成教科书上的连续形式,然后抱怨“算法没问题,硬件有问题”。先看一个实际可用的电流环PI控制器实现。这里我用的是Q15定点数格式,因为很多低成本MCU没有FPU,浮点运算会吃掉大量时间。注意看积分限幅和抗饱和的处理:typedefstruct{int16_tKp;
返回列表