大家帮帮忙,看看我的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还没有用:
期待大侠解惑啊,调试两个月了没有进展,正在郁闷中。。。。。。。。。。 芯片封装很专业啊 我用的是DSP,工作中经常用的,比较熟悉了,就没用STM之类的片子 {:smile:}mark..... 怎么在电机控制里面没有看到Roll通道的控制加进来(发帖收分中……) 有的,1、3电机控制pitch,2、4电机控制roll,程序里面有的
页:
[1]