四轴飞行器、无人机(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;

}

相关推荐
松涛和鸣3 分钟前
59、 IMX6ULL按键驱动开发:轮询到中断的实现
linux·服务器·c语言·arm开发·数据库·驱动开发
jiang1532379424317 分钟前
MS51FB9AE 新唐 TSSOP-20
单片机·嵌入式硬件
开开心心就好20 分钟前
打印机驱动搜索下载工具,自动识别手动搜
java·linux·开发语言·网络·stm32·物联网·电脑
VekiSon40 分钟前
ARM架构——中断系统详解
c语言·arm开发·嵌入式硬件
爱吃生蚝的于勒41 分钟前
【Linux】零基础学习命名管道-共享内存
android·linux·运维·服务器·c语言·c++·学习
麒qiqi1 小时前
IMX6ULL 裸机开发进阶:按键驱动(轮询→中断)+ 中断控制器 GIC 实战
单片机·嵌入式硬件
Y1rong1 小时前
STM32之SysTick
stm32·单片机·嵌入式硬件
Y1rong1 小时前
STM32之定时器(一)
stm32·单片机·嵌入式硬件
小龙报1 小时前
【C语言进阶数据结构与算法】LeetCode27 && LeetCode88顺序表练习:1.移除元素 2.合并两个有序数组
c语言·开发语言·数据结构·c++·算法·链表·visual studio
无限进步_1 小时前
C语言实现贪吃蛇游戏完整教程【最终版】
c语言·开发语言·c++·git·游戏·github·visual studio