四轴飞行器、无人机(STM32、NRF24L01)

一、简介

此电路由STM32为主控芯片,NRF24L01、MPU6050为辅,当接受到信号时,处理对应的指令。

二、实物图

三、部分代码

void FlightPidControl(float dt)

{

volatile static uint8_t status=WAITING_1;

switch(status)

{

case WAITING_1: //等待解锁

if(ALL_flag.unlock) {

status = READY_11;

}

break;

case READY_11: //准备进入控制

pidRest(pPidObject,6); //批量复位 PID 数据,防止上次遗留的数据影响本次控制

Angle.yaw = pidYaw.desired = pidYaw.measured = 0; //锁定偏航角

status = PROCESS_31;

break;

case PROCESS_31: //正式进入控制

//倾斜检测,大角度判定为意外情况,则紧急上锁

if(Angle.pitch<-50||Angle.pitch>50||Angle.roll<-50||Angle.roll>50)

if(Remote.thr>1200)//当油门的很低时不做倾斜检测

ALL_flag.unlock = EMERGENT;//打入紧急情况

pidRateX.measured = MPU6050.gyroX * Gyro_G; //内环测量值 角度/秒

pidRateY.measured = MPU6050.gyroY * Gyro_G;

pidRateZ.measured = MPU6050.gyroZ * Gyro_G;

//俯仰控制

pidPitch.measured = Angle.pitch;

}

相关推荐
Neil今天也要学习22 分钟前
永磁同步电机控制算法--基于数据驱动的超局部无模型预测电流控制MFPC及改进
单片机·嵌入式硬件·算法
在岸上走的鱼1 小时前
ISE 14.7安装到80%(82%或者83%)卡主
嵌入式硬件·硬件工程
爱编码的小八嘎2 小时前
第2章 认识CPU-2.4 【实例】:在DOS实模式下读取4GB内存(1)
c语言
Electron-er2 小时前
深入解析C语言memcmp函数:内存比较的利器与陷阱(附实战案例)
c语言·开发语言
m0_531237172 小时前
C语言-操作符
c语言·开发语言
Python小老六2 小时前
STM32(ARM32)烧录方式详解:串口、JTAG、SWD
stm32·单片机·嵌入式硬件
CHENG-JustDoIt2 小时前
嵌入式开发 | ARM Cortex-M 系列中M3、M4、M23 和 M33四款处理器的深度对比分析
arm开发·单片机·嵌入式硬件·arm
国科安芯3 小时前
多相交错并联系统的时钟同步精度与输入纹波抵消效应研究
网络·单片机·嵌入式硬件·fpga开发·性能优化
m0_531237173 小时前
C语言-指针,结构体
c语言·数据结构·算法
『往事』&白驹过隙;3 小时前
系统编程的内存零拷贝(Zero-Copy)技术
linux·c语言·网络·c++·物联网·iot