4. PH47代码框架固件功能概述

4.1. 概述

目前版本的PH47框架提供三种版本控制框架代码,分别为针对固定翼飞行器的BBP_Fixwing、针对多轴飞行器的BBP_Copter,以及针对一般控制对象的基础二次开发平台BBDB。

目前版本的PH47代码框架已经在BBP飞控板上实现了固定翼飞控的主要功能。并且在Cross固定翼平台上经过了近百次的实际试飞。截至目前,除支撑飞控运行的各中基础功能之外,飞行模式当中Stablize模式,全自主弹射起飞功能均以经过充分测试。FBW,Waypoints 模式已经完成代码实现,但还需进一步进行测试。

此节主要对PH47框架在BBP飞控板上已具备的飞行控制特性进行描述。急于了解PH47框架基本使用方法的用户可粗略了解本章节内容或直接略过。
在这里插入图片描述

4.2. 固定翼飞行控制功能

4.2.1. 飞行模式

 Stablize增稳飞行模式(姿态角稳定控制飞行模式),操作者通过RC遥控器或指令方式给出当前目标姿态角度(俯仰角、滚转角),飞控即控制飞机跟随上述目标角度飞行。
 FBW飞行模式(TECS+定高定速飞行模式),功能开发已完成,待进一步测试。操作者通过RC遥控器或指令方式给出目标空速及目标爬升率,飞机按照目标量进行飞行。
 Waypoint航线飞行模式,功能开发已完成,待进一步测试

4.2.2. 起飞降落模式

 全自主弹射起飞,在设定当前飞处于预备起飞状态后,操作者只需将飞机挂上弹射绳并向后拉紧弹射绳到适当位置后,释放飞机飞控即可执行全自主弹射起飞控制。
 滑行降落。

4.2.3. Failure Safe保护机制

 Tele,GPS,RC,飞行高度、飞行距离、Watchdog共6种两级故障处理保护机制。
 紧急状态控制。

4.2.4. 多飞控板协作

 普通单飞控板工作模式。
 主飞控板+扩展板外设扩展模式。
 双飞控冗余热备模式,主飞控失效情况下副飞控自动接管控制,也可人工控制接管。
 集群编队控制模式。

4.2.5. 控制方式

 RC遥控器控制。
 飞行指令控制模式(独立使用,或RC控制失效后自动接管控制)。

4.2.6. 飞行数据记录

 GCS遥测数据记录,对所有下行数据帧数据进行记录,可通过CSS进行数据分析及飞行过程回放,最高数据记录频率25hz。
 飞行数据机载flash记录,对86个关键飞行及状态数据进行记录,最高记录频率250hz,可在飞控端数据回放半实物仿真,可通过CSS下载后进行数据分析,或导入matlab进行深入分析。
 机载飞行数据开始、停止记录,以及查看记录信息

4.2.7. 传感器校准

 加速度计校准
 磁强计校准
 空速计校准

4.2.8. 参数设定与航点设定

 单个或批量飞行控制参数上传、批量飞行数据下载,支持飞行过程中在线修改。
 单个或批量航点数据上传、批量航点数据下载,支持飞行过程中在线修改。GCS地面站位置自动确定或人工设定。

4.2.9. 遥测通讯

 通讯质量不佳情况下通讯速率自动降级
 各下行数据帧通讯速率用户可调整设定
 支持双飞控板模式下双通道遥测通讯

4.2.10. FailureSafe 机制及紧急状况处理

 GPS Failure
 RC Failure
 Tele Failure
 Alt Failure
 Range Failure
 WatchDog Failure
 紧急关机操作
 紧急开伞操作

4.3. 多轴飞行控制

多轴飞行控制之前在Single Pilot飞控板上实现了增稳、悬停、航线、自动起飞、自动降落等功能,目前已完成部分向PH47框架移植,以及全新开发工作。相关测试工作正在进行中,敬请期待!

4.4. BBDB基础开发平台

BBDB(BBP 基础开发平台)实际上是在目前功能完成度最高的BBP_Fixwing基础上裁剪完善而来版本。BBDB的开发初衷是为开发面向但不局限于飞控的各类应用提供第一个基础的开发平台。BBDB对BBP_Fixwing当中涉及固定翼飞行控制的各模块进行了裁剪,同时保留了所有传感器以及运行框架全部基础支撑功能。

实际上,我们的BBP_Copter多轴飞行固件就是在BBDB的基础上,加入了多轴的飞行控制代码后开发而来的。

相关资源:https://gitee.com/ss15/ph47
感兴趣的朋友可以联系(VX:SG_Uav)加入群聊了解更多关于PH47代码框架内容

### 智能农业温室控制系统中的LCD显示电路 #### LCD显示电路的功能 在智能农业温室控制系统中,LCD显示电路的主要作用是向用户提供实时监测数据以及系统状态信息。这些数据显示通常包括环境参数(如温度、湿度)、土壤条件(如水分含量、pH值),以及其他传感器采集的数据[^1]。通过清晰直观的方式呈现给操作人员,便于及时调整控制策略。 此外,部分高级设计还允许配置菜单选项或者报警阈值设定等功能展示于屏幕上,从而增强用户体验并简化管理流程[^2]。 #### 实现方法概述 为了构建一个完整的LCD显示模块,在硬件层面需考虑以下几个方面: 1. **选择合适的显示屏** 常见的选择有字符型液晶屏(如HD44780控制器驱动的16×2或20×4型号),图形点阵式TFT彩屏等。对于简单的数值与文字输出需求来说,前者成本较低且易于编程;而后者则更适合复杂界面绘制场景下的应用开发[^3]。 2. **接口连接方式** 显示器可以通过多种通信协议接入主控单元(MCU/单片机或其他处理器平台)。常用的串行总线标准包括I²C(SDA/SCL两根信号线即可完成双向传输), SPI (同步外设接口, 需要更多IO资源但速度更快),UART/TTL电平逻辑直连等方式来传递指令和像素坐标位置等相关信息至目标设备上进行渲染处理[^4]。 3. **软件驱动程序编写** 不同类型的显示器可能对应不同的初始化序列要求及其后续命令集定义规则。因此需要依据所选用的具体产品手册文档说明来进行相应的固件编码工作。例如设置光标移动方向、清屏操作、写入字符串等等基础动作都需要调用底层API函数实现[^5]。 以下是基于Arduino平台利用LiquidCrystal库操控一款典型四线制SPI模式下工作的128x64分辨率OLED屏幕的一个简单示例代码片段: ```cpp #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT); void setup() { if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while(true); } } void loop() { display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.print("Temperature:"); display.setCursor(0,10); display.print("Humidity:"); display.display(); } ``` 上述脚本展示了如何创建基本框架用于更新两个关键指标——室温读数及相对空气湿润程度百分比的表现形式[^6]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值