PID算法程序 基于四軸飛行器 CPU: STM32F103CB2.4G: NRF24L01電子羅盤:HMC5883陀螺儀+加速度計:MPU-6050 固定的傳感器通訊格式為:0X88+0XA1+0X1D+ACC XYZ+GYRO XYZ +MAG XYZ +ANGLE ROLL PITCH YAW + cyc_time +0x00 + 0x00 +0x00 注意,所有數據位int16格式,angle飛控端為float,發送時乘以100,上位機以int16格式接收,顯示時再除以100 自定義
單片機源程序如下:
- /* Includes ------------------------------------------------------------------*/
- #include "config.h"
- uint8_t SYS_INIT_OK; //系統初始化完成標志
- uint32_t While1_Lasttime=0;//存儲while循環的時間
- ////////////////////////////////////////////////////////////////////////////////
- void SYS_INIT(void);
- void LOOP(void);
- ////////////////////////////////////////////////////////////////////////////////
- int main(void)
- {
- SYS_INIT_OK=0;
- SYS_INIT();
- SYS_INIT_OK=1;
-
- IMU_CYCTIME = GET_NOWTIME(&While1_Lasttime);//更新兩次讀取時間間隔
- while (1)
- {
- LOOP();
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
- void LOOP(void)
- {
- }
- ////////////////////////////////////////////////////////////////////////////////
- void SYS_INIT(void)
- {
- MOTO_INIT(); //馬達初始化
- NVIC_INIT(); //中斷初始化
- TIM3_INIT(); //延時函數初始化
- TIM2_INIT(); //用于監測系統
- LED_INIT(); //IO初始化
- LED4_OFF;
- // EXTI1_INIT(); //外部中斷初始化,接nrf24l01 irq
- USART1_INIT(); //串口初始化
- i2cInit();
- SPI1_INIT();
- NRF24L01_INIT();
- SetRX_Mode();
- // EXTI_GenerateSWInterrupt(EXTI_Line1);//手動進入nrf24L01中斷,防止開始時irq管腳就為低電平,無法進入下降沿中斷
- MPU6050_INIT();
- MPU6050_INIT();
- SYSTICK_INIT();
- PID_INIT();
- }
復制代碼
所有資料51hei提供下載:
四軸飛控源碼FLY_CONTROL.7z
(417.34 KB, 下載次數: 27)
2019-5-10 18:46 上傳
點擊文件名下載附件
非常值得研究 下載積分: 黑幣 -5
|