色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項目 > 基于wifi通信控制的四旋翼控制系統

基于wifi通信控制的四旋翼控制系統

采用STM32F401RE做為四旋翼的控制器,EMW3080Wi-Fi模塊作為四旋翼與外面設備的通信裝置,執行器采用無刷電機,姿態傳感器采用MPU6050模塊,無線控制裝置可用手機或電腦。控制算法暫定采用串級PID控制,外環控制角度,內環控制角速度。后期可做優化,濾波采用互補濾波。

h1654155952.9197 h1654155952.9197

分享
0 喜歡這個項目
團隊介紹

h1654155952.9197 h1654155952.9197

團隊成員

施超宇 總體設計

分享
項目簡介
采用STM32F401RE做為四旋翼的控制器,EMW3080Wi-Fi模塊作為四旋翼與外面設備的通信裝置,執行器采用無刷電機,姿態傳感器采用MPU6050模塊,無線控制裝置可用手機或電腦。控制算法暫定采用串級PID控制,外環控制角度,內環控制角速度。后期可做優化,濾波采用互補濾波。
硬件說明

硬件結構主要由5個部分組成,主控制器STM32f401-Nucleo是四旋翼飛行器的大腦控制整個系統,借助WiFiEMW3080模塊進行通信,MPU6050作為獲取四旋翼飛行器姿態信息的傳感器,四個無刷電機作為四旋翼飛行器的執行器,四旋翼機架采用450機架,其結構圖如下圖所示:

結構圖.png

1STM32F401RET6微控制器,基于ARM Cortex-M4處理器,帶DSP,最高支持84MHz主頻

2支持Arduino UNO R3 Shield擴展板,微控制器所有IO口引腳通過排針座引出ST-LINK/V2-1調試器,支持對外部微控制器調試3LED一個USB通訊LED、一個電源LED、一個用戶LED;兩個機械按鍵:復位、用戶USB接口的3個不同功能:虛擬串口、容量存儲、調試接口

33種不同供電方式:mini USB接口供電、IO引腳用電、通過Arduino UNO R3 Shield接口供電

4支持KeilIARembed在線IDE的設計工具

5STM32F401 Nucleo開發板包含了STM32F系列板卡慣有的機械按鍵、LED指示燈、mini USB調試接口,眾多IO口外設通過排針座引出等功能,除此之外,也有與眾不同之處,如兼容Arduino Shield接口,并且可以通過Arduino Shield擴展接口給板卡供電,板卡搭載了STM32F401RET6核心微控制器,基于32位的高性能ARM Cortex-M4處理器,帶FPU單元,最高能支持84MHz主頻,見下圖。

 

stm32f401.png 

 

 

電調采用大唐宏運30A

電調.jpg 

 

無刷電機采用2212/920KV

 無刷電機.jpg

 

無線模塊采用EMW3080

1EMW3080是單3.3V供電的、集成Wi-FiCortex-M4F MCU的嵌入式Wi-Fi模塊,最高支持133M主頻和256K RAM,強大的浮點運算EMW3080(B):無內部加密芯片,Memory、外設接口資源豐富,能滿足大部分應用需求和多云的要求

無線.jpg 


軟件說明


四旋翼飛行器控制系統是一個對耦合度要求高、欠驅動、需要較高的控制準確性與實時性的控制系統,四旋翼飛行器控制系統在姿態方面主要由橫滾角(Roll)、俯仰角(Pitch)、偏航角(Yaw)、三軸角速度與油門(thrust)這幾個控制量體現,四旋翼飛行器的整個控制系統采用串級PID控制系統,,如圖所示,內環控制角速度,用于對飛行器的三個軸的角速度控制,外環控制角度,用于對飛行器的姿態控制。利用四旋翼四個電機各姿態角分量疊加關系得出PWM波輸出值來控制每個電機轉動速度。

 

下圖為利用simulink對四旋翼飛行器做的仿真框圖,采用的是串級PID控制。

simulink仿真.png 

利用MatlabGUI界面設計做的一個可視化仿真調試界面進行相應的仿真調試,如圖所示,其中Ch1Ch2Ch3Ch4通道分別對應四旋翼rollpitchthrustyaw的設定。當設定四旋翼向右翻滾時,四旋翼繞x軸旋轉的方向增大,如下圖Gryroscope窗口下的藍色曲線。加速度由突然增大到趨于平穩來進行自平穩校準,如Accelerometer窗口下的紅色曲線和綠色曲線。

GUI.png

仿真曲線.png

 

Nucleo模塊程序采用Mbed開發,數據采集計算以及PWM賦值主要在定時器中斷中執行,main函數代碼如下:

int main(void)

{

  SystemInit();        //系統初始化

delay_ms(50);

InitMPU6050();   //MPU6050初始化

delay_ms(50);

Get_offsets();  //機體坐標矯正

   for(pre_cnt=0;pre_cnt<FILTER_NUM;pre_cnt++)

   {

     Prepare_Data();

   }

while(1)

{

  

}  

 }

姿態傳感器進行的濾波處理算法采用互補濾波,代碼如下:

void imuUpdate(Axis3f acc, Axis3f gyro, state_t *state , float dt) /*數據融合 互補濾波*/

{

float normalise;

float ex, ey, ez;

float q0s, q1s, q2s, q3s; /*四元數的平方*/

static float R11,R21;  /*矩陣(1,1),(2,1)*/

static float vecxZ, vecyZ, veczZ; /*機體坐標系下的Z方向向量*/

float halfT =0.5f * dt;

Axis3f tempacc =acc;

 

gyro.x = gyro.x * DEG2RAD; /* 度轉弧度 */

gyro.y = gyro.y * DEG2RAD;

gyro.z = gyro.z * DEG2RAD;

 

/* 某一個方向加速度不為0 */

if((acc.x != 0.0f) || (acc.y != 0.0f) || (acc.z != 0.0f))

{

/*單位化加速計測量值*/

normalise = invSqrt(acc.x * acc.x + acc.y * acc.y + acc.z * acc.z);

acc.x *= normalise;

acc.y *= normalise;

acc.z *= normalise;

 

/*加速計讀取的方向與重力加速計方向的差值,用向量叉乘計算*/

ex = (acc.y * veczZ - acc.z * vecyZ);

ey = (acc.z * vecxZ - acc.x * veczZ);

ez = (acc.x * vecyZ - acc.y * vecxZ);


/*誤差累計,與積分常數相乘*/

exInt += Ki * ex * dt ;  

eyInt += Ki * ey * dt ;

ezInt += Ki * ez * dt ;


/*用叉積誤差來做PI修正陀螺零偏,即抵消陀螺讀數中的偏移量*/

gyro.x += Kp * ex + exInt;

gyro.y += Kp * ey + eyInt;

gyro.z += Kp * ez + ezInt;

}

/* 一階近似算法,四元數運動學方程的離散化形式和積分 */

q0 += (-q1 * gyro.x - q2 * gyro.y - q3 * gyro.z) * halfT;

q1 += (q0 * gyro.x + q2 * gyro.z - q3 * gyro.y) * halfT;

q2 += (q0 * gyro.y - q1 * gyro.z + q3 * gyro.x) * halfT;

q3 += (q0 * gyro.z + q1 * gyro.y - q2 * gyro.x) * halfT;


/*單位化四元數*/

normalise = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);

q0 *= normalise;

q1 *= normalise;

q2 *= normalise;

q3 *= normalise;

/*四元數的平方*/

q0s = q0 * q0;

q1s = q1 * q1;

q2s = q2 * q2;

q3s = q3 * q3;


R11 = q0s + q1s - q2s - q3s; /*矩陣(1,1)*/

R21 = 2 * (q1 * q2 + q0 * q3); /*矩陣(2,1)*/

 

/*機體坐標系下的Z方向向量*/

vecxZ = 2 * (q1 * q3 - q0 * q2);/*矩陣(3,1)*/

vecyZ = 2 * (q0 * q1 + q2 * q3);/*矩陣(3,2)*/

veczZ = q0s - q1s - q2s + q3s; /*矩陣(3,3)*/


if (vecxZ>1) vecxZ=1;

if (vecxZ<-1) vecxZ=-1;


/*計算roll pitch yaw 歐拉角*/

state->attitude.pitch = -asinf(vecxZ) * RAD2DEG;

state->attitude.roll = atan2f(vecyZ, veczZ) * RAD2DEG;

state->attitude.yaw = atan2f(R21, R11) * RAD2DEG;


if (!isCalibrated) /*校準*/

{

baseZacc = tempacc.x* vecxZ + tempacc.y * vecyZ + tempacc.z * veczZ;

isCalibrated = true;

}

state->acc.z= tempacc.x* vecxZ + tempacc.y * vecyZ + tempacc.z * veczZ - baseZacc; /*Z軸加速度(去除重力加速度)*/

}

Andorid控制界面:

搖桿.png

 

 


演示效果


評論區(0 )
主站蜘蛛池模板: 一个色夫导航| 亚洲国产AV无码综合在线| 欧美区一区二| 一边亲着一面膜下奶韩剧免费 | 青青草原亚洲| 97免费在线视频| 魅男mangay| 97夜夜澡人人爽人人模人人喊| 久久综合色超碰人人| 诱人的秘书BD在线观看| 久久精品在现线观看免费15| 亚洲视频免费| 久久人妻AV一区二区软件| 在线看片成人免费视频| 色老头色老太aaabbb| a视频在线观看| 日本xxx片免费高清在线| 超碰在线视频公开| 少妇的肉体AA片免费观看| 国产精品久久人妻拍拍水牛影视| 肉奴隷 赤坂丽在线播放| 豆奶视频在线高清观看| 天天射天天干天天插| 国产在线aaa片一区二区99| 亚洲精品视频在线免费| 久久99re7在线视频精品| 中文在线观看| 秋葵app秋葵官网18在线观看| 成人在线视频播放| 羞羞漫画免费漫画页面在线看漫画秋蝉| 国产成人在线视频免费观看| 亚洲不卡一卡2卡三卡4卡5卡| 久久99精品AV99果冻| 99精品在线观看| 帅哥男男GV在线1080P| 国语自产二区高清国语自产拍| 夜月视频直播免费观看| 狼好色有你好看| 俄罗斯大肥BBXX| 亚洲精品久久久一区| 龙岩综合频道|