DIY高大上 用STM32單片機搞定四旋翼無人機飛控

目前發現國內正兒八經機器人、無人機並且還能活躍地上網關注行業前沿動向、熱愛寫科普文章的研究人員原來越少。因此所有的研究回答裏都沒有人真正説明白無人機到底是什麼,而理解無人機到底是什麼才是回答這個問題的先決條件。

什麼是無人機

首先,無人機就是不載人的飛行器,而説到飛行器,通常我們又可以把飛行器分為三類。

1、固定翼(fixed wing)。平時坐的波音747空客A380.還有F-16殲-15之類的都是固定翼飛機。顧名思義就是翅膀形狀固定,靠流過機翼的風提供升力。動力系統包括槳和助推發動機。固定翼根據機翼尺寸的不同還有很多小的分類,在此不細説。固定翼飛行器的優點是在三類飛行器裏續航時間最長、飛行效率最高、載荷最大,缺點是起飛的時候必須要助跑,降落的時候必須要滑行。

2、直升機(helicopter)。特點是靠一個或者兩個主旋翼提供升力。如果只有一個主旋翼的話,還必須要有一個小的尾翼抵消主旋翼產生的自旋力。為了能往前後左右飛,主旋翼有極其複雜的機械結構,通過控制旋翼槳面的變化來調整升力的方向。動力系統包括髮動機、整套複雜的槳調節系統、槳。直升機的優點是可以垂直起降,續航時間比較中庸,載荷也比較中庸。缺點是極其複雜的機械結構導致了比較高的維護成本。

3、多旋翼(multi-rotor)。四個或者更多個旋翼的直升機,也能垂直起降,但是通常只有直升機叫直升機,多旋翼就叫多旋翼,而不叫多旋翼直升機。四旋翼特別叫做quadrotor。多旋翼機械結構非常簡單,動力系統只需要電機直接連槳就行。下圖是直升機的動力系統結構,再下圖是多旋翼的動力系統結構。不懂機械的人也能看出多旋翼簡單得多。多旋翼的優點是機械簡單,能垂直起降,缺點是續航時間最短,載荷也最小。

今天來給大家介紹下四旋翼無人機,看看怎麼是真正的技術,吼吼吼......

DIY高大上 用STM32單片機搞定四旋翼無人機飛控
1.i2c通信方式;

因為我不是學電類專業,最開始對i2c這些是沒有一點概念,最後通過Google瞭解了一些原理,然後發現STM32的開發庫是帶有i2c通信的相關函數的,但是我最後還是沒有用這些函數。

我通過GPIO模擬i2c,這樣也能獲得mpu6050的數據,雖然代碼多了一些,但是比較好的理解i2c的原理。

STM32庫實現的模擬i2c代碼(註釋好像因為編碼問題跪了):

DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
DIY高大上 用STM32單片機搞定四旋翼無人機飛控
2.PID控制算法;

由於簡單的線性控制不可能滿足四軸飛行器這個靈敏的系統,引入PID控制器來更好的糾正系統。

簡介:PID實指“比例proportional”、“積分integral”、“微分derivative”,這三項構成PID基本要素。每一項完成不同任務,對系統功能產生不同的影響。

DIY高大上 用STM32單片機搞定四旋翼無人機飛控
以Pitch為例:

error為期望角減去實時角度得到的誤差;

iState為積分i參數對應累積過去時間裏的誤差總和;

if語句限定iState範圍,繁殖修正過度;

微分d參數為當前姿態減去上次姿態,估算當前速度(瞬間速度);

總調整量為p,i,d三者之和;

這樣,P代表控制系統的響應速度,越大,響應越快。

I,用來累積過去時間內的誤差,修正P無法達到的期望姿態值(靜差);

D,加強對機體變化的快速響應,對P有抑制作用。

PID各參數的整定需要綜合考慮控制系統的各個方面,才能達到最佳效果。

輸出PWM信號:

PID計算完成之後,便可以通過STM32自帶的定時資源很容易的調製出四路pwm信號,採用的電調pwm格式為50Hz,高電平持續時間0.5ms-2.5ms;

我以1.0ms-2.0ms為每個電機的油門行程,這樣,1ms的寬度均勻的對應電調的從最低到最高轉速。

至此,一個用stm32和mpu6050搭建的飛控系統就算實現了。

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 1492 字。

轉載請註明: DIY高大上 用STM32單片機搞定四旋翼無人機飛控 - 楠木軒