gdupc 发表于 2013-4-14 00:34:50

大家帮帮忙,看看我的X240的小四轴怎么回事?多谢了,有...

本帖最后由 gdupc 于 2013-4-14 01:52 编辑

我关注阿莫很久了,但是刚注册没多久,在阿莫潜水很久学到了很多东西,我现在正在做一个240mm的小四轴,飞控板是自己画的,DSP+MPU6000+LSM303DLHC,好盈10A电调,XXD1510小电机,11.1V,1000mah锂电池。目前进展如下:
1、目前四元数解算实现了姿态解算,试了一下应该没问题,还没有进行加速度计数据融合。我现在只用陀螺解算的姿态角进行飞行控制,用于地面四轴调试应该没问题吧?陀螺解算1分钟内漂移量在1°左右。
2、飞控算法调试只控制俯仰和滚转,偏航控制量我给置零;
3、 进行四轴调试时,两个电机安装桨,另外两个电机架起来,加大油门,安装桨叶的两个轴来回摇摆,根本不能稳定,大家请看视频,帮忙分析一下是怎么回事?
   我的飞控算法程序如下:(先是浮点运算,最后整型数转换)


        //横滚通道
        Roll_ERROR=Roll_CMD-Roll_Angle;       
        Kp_R=40.0;
        Ki_R=0.0;
        Kd_R=0.0;

        Sum_Roll=Sum_Roll+Roll_ERROR;
        if(Sum_Roll>4000)Sum_Roll=4000;
        if(Sum_Roll<-4000)Sum_Roll=-4000;
               
        Roll_CTR=Kp_R*Roll_ERROR+Ki_R*Sum_Roll+Kd_R*(Roll_ERROR-LastRoll_ERROR);       

        //俯仰通道
        Pitch_ERROR=Pitch_CMD-Pitch_Angle;
        Kp_P=40.0;
        Ki_P=0.0;
        Kd_P=0.0;

        Sum_Pitch=Sum_Pitch+Pitch_ERROR;
        if(Sum_Pitch>4000)Sum_Pitch=4000;
        if(Sum_Pitch<-4000)Sum_Pitch=-4000;

        Pitch_CTR=Kp_P*Pitch_ERROR+Ki_P*Sum_Pitch+Kd_P*(Pitch_ERROR-LastPitch_ERROR);                       

        //偏航计算
        Yaw_ERROR=Yaw_CMD-Yaw_Angle;

        Sum_Yaw=Sum_Yaw+Yaw_ERROR;
        if(Sum_Yaw>1000)Sum_Yaw=1000;
        if(Sum_Yaw<-1000)Sum_Yaw=-1000;

        Yaw_CTR=Kp_Y*Yaw_ERROR+Ki_Y*Sum_Yaw+Kd_Y*(Yaw_ERROR-LastYaw_ERROR);       
        Yaw_CTR=0.0;

        //计算电机输出量
        Motor1_CTR=(int)(BASE_CTR+Yaw_CTR-Pitch_CTR);
        Motor3_CTR=(int)(BASE_CTR+Yaw_CTR+Pitch_CTR);
        Motor2_CTR=(int)(BASE_CTR-Yaw_CTR-Roll_CTR);
        Motor4_CTR=(int)(BASE_CTR-Yaw_CTR+Roll_CTR);

        if(Motor1_CTR<Min_CTR)Motor1_CTR=Min_CTR;
        if(Motor1_CTR>Max_CTR)Motor1_CTR=Max_CTR;

        if(Motor2_CTR<Min_CTR)Motor2_CTR=Min_CTR;
        if(Motor2_CTR>Max_CTR)Motor2_CTR=Max_CTR;

        if(Motor3_CTR<Min_CTR)Motor3_CTR=Min_CTR;
        if(Motor3_CTR>Max_CTR)Motor3_CTR=Max_CTR;

        if(Motor4_CTR<Min_CTR)Motor4_CTR=Min_CTR;
        if(Motor4_CTR>Max_CTR)Motor4_CTR=Max_CTR;

      //设置PWM占空比,400Hz
        EPwm1Regs.CMPA.half.CMPA=Motor2_CTR;
        EPwm1Regs.CMPB=Motor1_CTR;
        EPwm2Regs.CMPA.half.CMPA=Motor4_CTR;
        EPwm2Regs.CMPB=Motor3_CTR;

视频见附件

大家先看看我的飞控板有没有问题,陀螺仪芯片的位置有要求吗?边上的一个正方形芯片是MPU6000,一个长方形的芯片是LSM303DLHC。我现在用到的是MPU6000,LSM303DLHC还没有用:


期待大侠解惑啊,调试两个月了没有进展,正在郁闷中。。。。。。。。。。

zhngjinrui2013 发表于 2013-4-14 01:19:59

芯片封装很专业啊

gdupc 发表于 2013-4-14 01:21:38

我用的是DSP,工作中经常用的,比较熟悉了,就没用STM之类的片子

szblue 发表于 2013-4-14 17:53:38

{:smile:}mark.....

lynx19890808 发表于 2013-4-14 19:20:01

怎么在电机控制里面没有看到Roll通道的控制加进来(发帖收分中……)

gdupc 发表于 2013-4-14 21:56:14

有的,1、3电机控制pitch,2、4电机控制roll,程序里面有的
页: [1]
查看完整版本: 大家帮帮忙,看看我的X240的小四轴怎么回事?多谢了,有...