15年7个月前IP:未同步
297129
10楼
matlab模拟的PID算法:
kp=-50;%比例常数
td=0.2;%微分时间常数
ti=-1/300;%积分时间常数

propertion=( gyro(i) - 0 ) * kp;%角速度就是PID中的偏移量e。gyro(i)指的是当前角速度。

speed=( gyro(i) - gyro(i-1) )/0.001;%这里的speed指的是角速度变化的速度即角加速度,控制速度是每一毫秒控制一次所以要除以0.001求得角加速度。
diff=td*speed;%微分项。微分项主要是为了消除比例控制中由于延迟造成的自激振荡,就像弹簧挂着重物上下晃动,弹力就是比例项,空气阻力就是微分项,晃动是自激振荡,而空气阻力会将晃动消减掉。

integra=0;
int_num=0;
    for j=1:integra_num%循环integra_num次。因为我是要稳定频率高于2Hz的抖动,所以只用积分最近一段时间内的数据。
        if ( gyro(i-j) / gyro(i-j) == gyro(i) / gyro(i) )%判断抖动方向是否跟当前一样。实验发现这句要不要影响都不大。
          integra=integra+gyro(i-j);
        end
    end
integra=integra/ti;%求得积分项

angle_acc(i) = propertion + diff + integra;%装置要产生的角角速度等于三项的和。
    if angle_acc(i)>40  %电机输出力矩也是有限制的,所以限制电机产生的角加速度值
       angle_acc(i)=40;
    end
    if angle_acc(i)<-40
       angle_acc(i)=-40;
    end


就是这些。感觉PID控制的鲁棒性不太好可能不适合干这样的工作。
参考:
PID控制器:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
鲁棒:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

曾想过用皮带,但我认为皮带的弹性会造成力矩滞后和抖动所以没有采用;另外小皮带轮不好做。
另外推荐xv3500和xv3700这两个陀螺,温漂真的很低。
评论
文号 / 297129

千古风流
名片发私信
学术分 8
总主题 98 帖总回复 1131 楼拥有证书:学者 机友 笔友
注册于 2006/08/24 17:44:16最后登录 2025/12/02 14:12:59
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的