MiniFly微型四轴开发学习日志(一)——MiniFly 微型四轴软件原理
文章目录
微型四轴技术参数
微型四轴技术参数
Minifly微型四轴采用双MCU,即STM32F411与NRF51822双核运行,其技术参数如下。
NRF51822 程序框架
如图为NRF51822的代码关系图 。其中button.c为按键驱动代码,uart.c为串口驱动代码,pm.c为电源管理驱动代码,systick.c为系统滴答定时器驱动。NRF51822的工作流程如下:
(1)遥控器通过radiolink.c传送数据包到main.c;
(2)main.c对数据包进行解析,判断该数据包的流向;
(3)如果该数据包是传送给NRF51822的,则直接传送;
(4)如果不是传送给NRF51822,即传送给STM32F411,于是通过uartlink.c传送给STM32F411;
(5)STM32F411接收到数据包之后会通过uartlink.c返回一个数据包到main.c;
(6) 最后main.c将返回的数据包通过radiolink.返回到遥控器当中。
以上六步形成了一个数据包传送的闭环,可以看出NRF51822在其中起到了通信桥梁的作用。
当四轴处于关机的时候,NRF51822处于待机状态,STM32F411处于断电状态。当按下按键,NRF51822被唤醒,它会判断按下按键的时间:
(1)如果是短按,则启动STM到固件模式;
(2)如果是长按,则NRF51822拉高UAR_RTS_PIN引脚,使能电源芯片给STM供电。(STM32F411会在上电后运行bootloader程序,会判断到该引脚是否为高电平,是即留在该程序中等待固件升级,否即跳转会(1),当NRF51822运行程序拉高引脚后,会以一定周期时间获取pm.c采集到的电池电压值并转发给STM)
如此,NRF51822起到了管理管理电源的作用。
STM32F411 程序框架
姿态解算和 PID 算法总体流程
(1)关于姿态解算,采用的是互补滤波算法。每隔T=0.2ms(500Hz),MCU通过IIC读取加速计数据以及读取陀螺仪数据,并对加速计数据进行IIR低通滤波,对陀螺仪数据进行偏置调整,结合之后得到了姿态数据roll/pitch/yaw,即角度测量值。
(2)角度环PID,同样T=0.2ms,其角度期望值来自WIFI或者遥控RC,测量值来自(1),将二者相减之后得到偏差角度,作为角度换PID控制器输入,进行PID校正之后得到期望角速度。
(3)角速度环PID,同样T=0.2ms,期望角速度来自(2),角速度测量值即(1)中陀螺仪数据偏置调整之后的数值。二者相减之后得到偏差角速度,作为角速度环PID控制器输入,校正后得输出姿态控制量。
(4)Z轴高度PID控制器,其T=0.4ms。首先,在minifly四轴当中由手动和定高两个模式,当处于手动模式下,设定油门值=实际油门值。而当处于定高模式,油门控制就会切换到Z轴速度模式。此时,将读取高精度气压计BMP280数据,并对其进行IIR滤波、限幅均值滤波;并从姿态测量值当中获取去除重力后的Z轴加速度。二者融合得到高度估计值。另一方面,高度期望值即油门转换为Z轴设定速度值的积分,二者相减之后得到高度偏差值,作为Z轴高度PID控制器输入,校正后得到油门控制的变化量,再加上油门基准值即实际油门值输出。
(5)输出的实际油门值以及姿态控制量结合进行算法运算之后得到四个参数,以此用于调节四轴电机的PWM,进行姿态矫正。
MiniFly微型四轴开发学习日志(一)——MiniFly 微型四轴软件原理相关推荐
- Unreal4引擎开发学习日志
Unreal4引擎开发学习笔记1 相关说明 本游戏引擎学习日志是笔者根据网上相关教学视频所写,是对视频内容的精炼与总结.如果您认为笔者所写不清晰明确,可以访问以下链接: Unreal入门第一季 - 虚 ...
- 后端开发学习日志(面向对象篇)
目录 一.初识面向对象 什么是面向对象 二.回顾方法的定义 1)方法的语法 2)break和return的区别 3)方法名 4)参数列表 5)异常抛出 三.回归方法的调用 四.类和对象的创建 如何创建 ...
- 后端开发学习日志(基础篇)
在正式学习前,我们需要像学习C.C++一样看一下Hello World的代码 public class Hello{ public static void main (string[] args) { ...
- 软件开发学习的5大技巧,你知道吗?
众所多周知,软件开发技术是IT技术的核心技术,也是从事IT职业的技术学习首选.软件工程专业更是多年荣登国内10大高薪专业排行榜,软件工程师更是前程无 忧.智联招聘和中华英才网等国内大型招聘网站发布招聘 ...
- 2021-11-03大数据学习日志——数据埋点+网络爬虫——后端开发入门
01_mini-web 本章节学习目标 能够知道Web开发流程 能够知道使用web应用程序处理客户端的动态资源请求操作 能够知道路由列表的实现 能够知道装饰器方式的添加路由 能够知道logging日志 ...
- 2021-10-19大数据学习日志——数据埋点+网络爬虫——前端开发入门
01_Web开发 学习目标: 简单了解应用程序开发的分类:桌面应用程序和 Web 应用程序 1.1 桌面应用程序开发 桌面应用程序开发,是一种比较基本的传统的软件开发方式,是基于 C/S 架构模式的软 ...
- 混合现实在医学领域的应用学习日志
混合现实在医学领域的应用学习日志 理论知识 混合现实 追踪系统 硬件 场景 可扩展性 应用 教育 培训 手术 远程手术 da Vinci Research Kit (dVRK) 理论知识 混合现实 保 ...
- 这可能是东半球最保姆级的后台服务器开发学习路线
作者 | 编程指北 来源 | 编程指北(id :cs_dev) 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其 ...
- 0122 - EOS 编程学习日志(1)
EOS 编程到底是什么呢.学什么呢? 抱歉,我现在也不无法回答.不过,我可以告诉你我做了哪些尝试.目前的理解,以及下一步还要做什么. 首先,EOS 开发最重要的文档自然是在 GitHub: githu ...
最新文章
- Xcode7中创建静态库
- 算术表达式求解背景_1.8 C++算术运算符与表达式
- C语言经典例73-反向输出一个链表
- C#最小化到托盘+双击托盘恢复+禁止运行多个该程序
- Cascade EF-GAN: Progressive Facial Expression Editing with Local Focuses 论文解读
- react+ant design Breadcrumb面包屑组件
- 对MySQL性能影响关系紧密的五大配置参数
- 鸿蒙os全面升级,华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然...
- 阿里云 ECS服务器 开放 8080 端口 -- 图解
- C语言—sort函数比较大小的快捷使用--algorithm头文件下
- 写出高质量的代码——“零星”总结(延续3)
- CCF201712-2 游戏
- 为什么要预留字段_PaperYY为什么会免费论文查重?
- 苹果Mac 桌面下方Dock 的App icon名称出现乱码怎么办?一个简单指令帮你解决
- 使用字符串格式化函数
- (TNNLS-2022)步态质量感知网络:面向轮廓步态识别的可解释性
- 使用 Anysort 排序库给网易云歌单排序
- 2016英语三级分数计算机,公共英语三级考试分数权重计算方法
- 国产FPGA芯片资源性能对照比较一览表
- mysql 两表拼接_数据库将两张表进行横向连接(拼接成一张表的形式显示)
热门文章
- 星星之火-19:手机如何与基站进行时钟同步、时隙同步?
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.6 类和继承...
- Redis分布式锁剖析和几种客户端的实现
- Git简单生成公钥和私钥的方法及git ssh key配置
- 习题6-5 UVA1600 巡逻机器人 Patrol Robot
- 高精度电流源如何设计出来
- 大学计算机应用基础知识点王爱平,北京师范大学心理学院硕导介绍:王爱平
- 云原生IDE:iVX免费的首个通用无代码开发平台
- java走棋_Java五子棋小游戏(控制台纯Ai算法)
- 如何将废旧显示器改造为家用电视机