2026年电赛FPGA控制题,用国产安路开发板做多路PWM电机调速,为什么空载正常带载就抖?

开放3 回答 34 浏览

备赛电赛控制类题目,用安路EG4S20输出四路PWM驱动直流电机,空载时波形很稳,一接上电机转速就抖,示波器看PWM占空比在跳。队友说可能是电源纹波、地弹或者死区没设,也有人说是编码器反馈采样没做同步。有没有电赛带过电机题的学长,从硬件供电和FPGA逻辑两侧讲下排查顺序?

分享:

3 个回答

  • Verilog练习生

    这个问题我倾向从一条主线看:带载抖动本质是『反馈环里混进了不该有的扰动』。空载时电机电流小,扰动源弱,环路还能压住;一挂负载,电流上去,电源纹波、地弹、编码器抖动全被放大,PID又把它们当真实速度误差去调,占空比就开始跳。所以别孤立地看PWM,要看整个闭环。硬件上先确认共地和去耦,电机供电和FPGA供电最好是同一参考地,但走线分开,电机那侧加大电容吸收换向尖峰。死区要按你的驱动芯片和MOS开关时间算,太小会直通,太大会畸变,一般几百纳秒量级,具体看器件手册。逻辑侧的关键是采样同步:编码器是异步信号,直接进FPGA组合逻辑或者直接喂PID,边沿附近容易亚稳态,计数值随机跳一两个数,速度环就抖。常见做法是两级触发器同步,再在系统时钟域里做四倍频或方向解码,PID的采样周期固定,别用异步事件直接触发计算。调试时可以先把速度环改成开环,给固定占空比带载看抖不抖,如果不抖,问题在反馈;如果还抖,问题在电源或驱动。这个二分法能省很多时间。另外提醒一句,电赛现场电源往往很脏,留够余量比调参数更实在。你现在速度环周期大概多少,编码器是几线的?

  • 新手程序员

    先别急着改代码,拿万用表量一下电机供电和板子是不是真的共地。很多人空载正常带载抖,根本原因是电机一启动,母线电压被拉下去,FPGA的IO Bank参考地跟着跳,你示波器看到占空比在跳,其实是测量地本身在抖。排查顺序我一般这么走:先单独给电机供电,和FPGA电源共地但不共用一条细线,电机线尽量短、粗,板子电源入口并一个大电解加几个0.1uF;然后空载再看波形,如果还跳,问题在逻辑侧。逻辑侧最常见的是编码器信号没同步,直接进PID,边沿附近采到亚稳态,速度环输出就抖,占空比自然跳。做法是把编码器A/B打两拍同步,或者用正交解码模块在系统时钟域里处理。还有死区,如果你用的是互补PWM驱动H桥,死区没设或者设反,上下管直通,电流一冲,电源就塌,表现也是带载抖。个人建议先抓PWM输出脚和电机电流同屏看,能很快分清是电源问题还是逻辑问题。你板子上的PWM是走普通IO还是专用管脚,这个也会影响。

  • 单片机新手小王

    先说个容易被忽略的点:带载抖未必是PWM本身的问题,而是你的『速度环在带载后增益失配』。空载时电机惯量小、电流小,PID那套参数显得很稳;一挂载,机械时间常数变了,同样一组Kp/Ki就会出现过冲甚至等幅振荡,占空比自然跟着跳。所以排查顺序我建议先硬件后逻辑再参数:第一步量母线电压和FPGA的IO Bank地,电机启动瞬间母线塌多少、地弹多大,用示波器双通道看PWM脚和电机电流同屏,能立刻分清是电源扰动还是逻辑侧抖动。第二步查死区,安路EG4S20的PWM一般用IP核或自己写计数器生成,互补输出时死区太小会直通、太大会让低速段畸变,按你驱动芯片手册的开关时间留裕量,常见几百纳秒到1微秒。第三步才是编码器同步,A/B直接进组合逻辑或者异步触发PID,边沿附近采到亚稳态,计数值随机±1,速度环就当真实误差去调,这是带载才明显的一个隐蔽原因,打两拍同步再正交解码。第四步调PID,先只上P,看带载能不能稳,再加I。风险提醒一句:别为了压抖把死区调得过小,直通烧管比抖动更贵。另外国产板子要注意IO电平和驱动芯片是否匹配,3.3V直驱某些光耦或栅极驱动可能边沿不够陡,带载后干扰更容易耦合进来。你这边电机是H桥还是集成驱动模块?这个决定了死区要不要自己管。

登录后可在本页底部提交回答

提问者

嵌入式入门生查看主页
浏览「其他」

描述场景与已尝试方案,更容易获得有效解答

相关问题

同分类

提问建议

  • 标题写清核心疑问,避免「求助」「请问」等空泛用语
  • 正文补充环境、版本、报错信息或截图
  • 先搜索本站是否已有相近问题,减少重复提问
  • 若与课程相关,请标明课时或章节便于讲师定位