此代碼支持STM32所有系列,實現的功能有:OLED顯示、PID算法、姿態解算、卡爾曼濾波算法對數據整合、MPU6050、HMC磁力計、MS5611氣壓計、NRF24L01、GPS定位、超聲波定高,親測可以用,喜歡研究無人機的朋友可以參考一下此代碼
使用keli5編程
本代碼純屬作者周寒宇個人編寫,雖然有參考開源的代碼,但是移植也很辛苦
希望參考學習的同學能夠學到內容和代碼風格
本代碼支持STM32所有系列
參考來源:匿名科創、智能車部分代碼、正點原子以及一些其他的開源代碼
功能:OLED顯示、PID算法、姿態解算、卡爾曼濾波算法對數據整合、MPU6050、HMC磁力計、MS5611氣壓計、
NRF24L01、GPS定位、超聲波定高
后期更新部分:光流傳感器視覺定位(加強室內無外部信號情況下的懸停功能)、攝像頭圖像采集。
有同學優化了代碼的請發我一份
單片機源程序如下:
- /**************************
- @作者:周寒宇
- @大學:中南大學
- @目的:自制飛控板飛控代碼
- @效果:穩定
- ************************/
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "mpu6050.h"
- #include "hmc5883l.h"
- #include "timer.h"
- #include "led.h"
- #include "i2c.h"
- #include "Moto.h"
- #include "Control.h"
- #include "PWM_Capture.h"
- #include "ms5611.h"
- #include "nrf24l01.h"
- #include "hcsr04.h"
- #include "beep.h"
- #include "GPS.h"
- #include "oled.h"
- extern uint32_t time3_cnt;
- extern u8 FlyMode;
- extern uint8_t Attitude;
- int main(void)
- {
-
- u8 i;
- delay_init(); //延時函數初始化
- NVIC_Configuration(); //設置NVIC中斷分組3:3位搶占優先級,3位響應優先級
- Control_Init();
- IIC_Init();
- LED_Init();
- PWM_Capture_Init(0xFFFF,71); //1MHZ計數
- delay_ms(100); //上電延時
- MPU6050_Init();
- HMC5883L_Init();
- HCSR04_Init();
- // GPS_Init();
- //UART3_Init(9600);
- //OLED_Init();
- TIM2_PWM_Init(1999,71); //周期2MS頻率500HZ 計數頻率1MHZ 計數到20000為20MS
- TIM5_Int_Init(499,71);//1Mhz的計數頻率,計數到500為0.5ms
- TIM7_Int_Init(0xFFFF,71);//1Mhz的計數頻率,1us時間度量
- TIM3_Int_Init(499,71);
- for(i=0;i<6;i++) delay_ms(1000); //等待姿態穩定
- Moto_Init();
- delay_ms(1000);
- delay_ms(1000);
- delay_ms(1000);
- delay_ms(1000);
- delay_ms(1000);
- while(1)
- {
- if(time3_cnt<=2000)//10sec
- { HCSR04_Run(); //更新頻率30HZ
- Get_Attitude(); //姿態計算
- FlyMode=1;
- Fly_Control();//阻尼爬升
-
- }
- if(2000<time3_cnt&&time3_cnt<=6000)//10sec-30sec
- { HCSR04_Run(); //更新頻率30HZ
- Get_Attitude(); //姿態計算
- FlyMode=2;//飛行
- Fly_Control();
- }
- if(6000<time3_cnt&&time3_cnt<=8000)//30sec-40sec
- { HCSR04_Run(); //更新頻率30HZ
- Get_Attitude(); //姿態計算
- FlyMode=3;//飛行
- Fly_Control();
- }
- break;
-
- }
- }
復制代碼
所有資料51hei提供下載:
四軸飛控代碼(周寒宇).rar
(438.35 KB, 下載次數: 1322)
2018-5-12 04:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|