智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 955|回复: 0
打印 上一主题 下一主题

新人第一次做直立,调到前进了,有些问题还请各位大大帮忙。

[复制链接]

32

主题

275

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3177
威望
1636
贡献
845
兑换币
967
注册时间
2012-7-24
在线时间
348 小时
毕业学校
布鲁斯特大学蒂格尔学院
跳转到指定楼层
1#
发表于 2014-2-27 19:20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在的状况是可以直立,但是需要调整角度零偏移值,也就是说它打开后是直立着往某一个方向加速前进,直立只用了PD调节,但是当零偏移角度调整的不错时加上积分后不像各位大大们说的那样推出去会立刻回到原地。

程序贴出来:
void Get_Ang()          //1ms 计算并更新电机状态一次
{     
        u16 ADresult;
        //保存ADC转换结
          /****** 读取一次 ******/
        ADresult    =   ad_once(ADC1, SE4a, ADC_16bit);         //读取 ADC1_SE4a ,16位精度
        A_X=ADresult;
        ADresult    =   ad_once(ADC1, SE5a, ADC_16bit);         //读取 ADC1_SE5a ,16位精度
        A_Z=ADresult;
        ADresult    =   ad_mid(ADC1, SE6a, ADC_16bit);         //读取 ADC1_SE6a ,16位精度
        GYRO_X=ADresult-44268;
        ADresult    =   ad_mid(ADC1, SE7a, ADC_16bit);         //读取 ADC1_SE7a ,16位精度
        GYRO_Y=ADresult-44268;

        Ang_Acc=-57.3*atan2(A_X-32000,A_Z-32000)-Ang_Set;//角度

        Ang_IGyro=Ang_IGyro+GYRO_Y*0.000016;//积分得到的角度

        GYRO_Y_LI=0.00016*GYRO_Y;

        //互补滤波
        Ang_Error=Ang_Acc-Ang_IGyro;
        Ang_IGyro=Ang_IGyro+Ang_Error*0.001;

        Ang=Ang_IGyro;

        IAng=IAng+0.1*Ang;

        Speed_1 = Ang*117 + GYRO_Y*0.06+IAng*0.00;//PID


        Go(Speed_1,Speed_1);

}


这个发出来求个喷,想弄的完美点毕竟是基础部分很重要的

现在碰到最大的难题是:我们用的编码器是单线输出,无法判断车轮的正转和反转,不知道如何解决,请各位大神帮忙指点了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-20 12:32 , Processed in 0.053039 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表