机器人,电机控制中排除bug的科学过程

昨天晚上进行四轮全向机器人的电机调试实验, 出现了电机疯转的情况, 在此总结一下排除电机问题的基本步骤.

我们可以从机械到硬件再到软件, 理清思路:

1.电机通过各种东西安在底盘上,

这个比较好检查, 可以最先检查, 很可能电机螺丝松懈了.

2.电机通过码盘线和电源线与电机控制盒相连,

3.电机控制盒与单片机通过TIM PWM波输出口相连, 也连有电源线

这个第二歩检查, 如果电机不动, 不抱死, 或失去控制, 很可能是线短了

4.底层控制方面, 电机控制自下而上有 电流环(电路相关),速度环(与赋的速度相关), 位置环(与电机码盘相关)

这几个人家写好之后, 不乱改是不会错的

5.稳定控制方面,有PID调节.

这个最后检查: PID 超调, 陀螺仪接触不良, 多个PID调用了同一组Errorpast

6.最上层则是路径规划, 或者手柄.

可能程序烧错了, 手柄接触不良, 目标点算错了

如果快速检查不行, 就要进行单元测试了.

Plus:上次程序明明能用,这次不行,往往是硬件或者烧错程序.

<p style="margin:0in;font-family:SimSun;font-size:11.0pt"><span lang="zh-CN">//这次是</span><span lang="en-US">PID</span><span lang="zh-CN">出问题了</span></p><p style="margin:0in;font-family:SimSun;font-size:11.0pt"><span lang="en-US">//PID </span><span lang="zh-CN">一定要使用独立的</span><span lang="en-US">ep</span></p>
double PID(double Error,struct PID pid)
{
	double A=0;
	double B=0;
	double C=0;
	double delta=0;
	
	A = (pid.p*(1+1/pid.i+pid.d));
	B = -pid.p*(1+2*pid.d);
	C = pid.p*pid.d;
	
	delta = A*Error + B*pid.ep1 + C*pid.ep2;
	pid.mend += delta;
/
	pid.ep2 = pid.ep1;
	pid.ep1 = Error;
/
	return pid.mend;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值