关于回收;目前暂时没有设计回收,后续可能在上面开发降落伞式回收
2000块的窜天猴么
W-1探空火箭设计(整体)
项目目标:对飞控进行测试,积累经验。
对矢量偏流发动机、固体火箭发动机、翼面控制进行测试
(注:此版申请为后续申请的准备)
简介:
尺寸:直径520(mm)长度约1.2m
导航与控制系统设计
姿态控制:通过单片机对各部件进行信息传达,对舵机控制来改变鸭翼方向、发动机喷口方向。
导航系统:通过惯性制导和GNSS进行定位,在自适应PID控制下结合卡尔曼滤波的方式按预先的计划飞行。
载荷设计 图传传感器 气压计
电源系统 输入供电12V
通信设计
2.4G和4G的信号
ESP8266模块2.4G通信(通过WIFI模块外接天线实现TCP连接)
CubeIDE C++实现
部分代码要修改,这部分不完整。
#include "stm32H7xx_hal.h"()
#include <stdio.h>
#include "cmsis_os.h"
// 定义串口接收缓冲区大小
#define ESP8266_RESPONSE_EVENT ((uint32_t)0x00000001) // 定义接收到响应的事件标志osEventFlagsId_t esp8266EventFlags; // 事件标志ID,在系统初始化时创建
#define RXBUFFER_SIZE 256
// 串口接收缓冲区
uint8_t RxBuffer[RXBUFFER_SIZE];
void SystemClock_Config(void) {
// 系统时钟配置代码
// 创建事件标志变量
osEventFlagsId_t esp8266EventFlags;
UART_HandleTypeDef huart1;
uint8_t RxBuffer[RXBUFFER_SIZE];
}
}
// 定义ESP8266连接的TX和RX引脚
#define ESP8266_TX_PIN GPIO_PIN_(空)// 使用GPIOA的(未选 TX引脚)作为TX
#define ESP8266_RX_PIN GPIO_PIN_6(空)// 使用GPIOA的(未选 RX引脚)作为RX
// 串口接收缓冲区大小
#define RXBUFFER_SIZE 256
UART_HandleTypeDef huart1;
uint8_t RxBuffer[RXBUFFER_SIZE];
// 函数声明
void SystemClock_Config(void);
void MX_USART1_UART_Init(void);
void ESP8266_Reset(UART_HandleTypeDef *huart);
void ESP8266_JoinAP(UART_HandleTypeDef *huart, const char *ssid, const char *password);
void ESP8266_CreateTCP(UART_HandleTypeDef *huart, const char *serverIP, uint16_t port);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_USART1_UART_Init();
// 初始化ESP8266
ESP8266_Reset(&huart1);
// 连接到Wi-Fi网络
const char *ssid = "yourSSID";
const char *password = "yourPASSWORD";
ESP8266_JoinAP(&huart1, ssid, password);
// 创建TCP连接 const char *serverIP = "192.168.0.100";
uint16_t port = 80; ESP8266_CreateTCP(&huart1, serverIP, port);
// 发送数据 char sendCommand[64];
snprintf(sendCommand, sizeof(sendCommand),
"AT+CIPSEND=%d\r\n", strlen("Hello from ESP8266"));
HAL_UART_Transmit(&huart1, (uint8_t *)sendCommand, strlen(sendCommand), HAL_MAX_DELAY);
// 发送实际数据 需改(Hello from ESP8266)
HAL_UART_Transmit(&huart1, (uint8_t *)"Hello from ESP8266", strlen("Hello from ESP8266"),
HAL_MAX_DELAY);
// 检查发送状态
osEventFlagsWait(esp8266EventFlags, 0x1, osFlagsWaitAny, 1000);
// 等待响应,超时时间根据需要调整
if (strstr((char *)RxBuffer, "SEND OK") != NULL) {
// 数据发送成功
} else {
// 发送失败处理
}
// 关闭TCP连接
HAL_UART_Transmit(&huart1, (uint8_t *)"AT+CIPCLOSE\r\n", strlen("AT+CIPCLOSE\r\n"),HAL_MAX_DELAY);
while (1) {
// 其他任务...
}
}
// 串口接收中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) {
if (huart->Instance == USART1) {
// 检查是否接收到足够的数据
if (Size > 0) {
// 检查接收到的数据中是否包含特定的响应字符串
if (strstr((char *)pData, "SEND OK") != NULL) {
// 如果接收到SEND OK响应,设置事件标志
osEventFlagsSet(esp8266EventFlags, 0x1);
}
// 可以添加更多的检查,例如WIFI GOT IP或CONNECT状态
}
}
}
//端口和密码未设置
安全设计
这个探空小型火箭上没有对应的这个设计
发射的系统设计
关于回收;目前暂时没有设计回收,后续正在开发。
关于W-1上部分的制造
飞控系统设计和制造详细内容
系统功能
-飞行目标:确定火箭的飞行高度、速度和任务目标。
-环境条件:分析火箭将面临的环境条件,如温度、风速等。
2. 主控制器(STM32H750VBT6)
-核心配置:高速时钟,确保系统稳定运行。
-内存分配:根据算法和数据处理需求分配RAM和Flash。
-外设配置:配置GPIO、ADC、SPI、I2C、UART等接口。
传感器集成
- GNSS模块:选择高精度、低功耗的GNSS模块,LC29HEA移动站(GNSS)
-惯性导航系统:集成加速度计、陀螺仪和磁力计,DETA10-N。
- 数据融合:GNSS和INS数据融合,提供精确的导航信息。
卡尔曼滤波是一个有效的设计,它通过线性系统和噪声的统计特性来估计系统状态。在探空火箭的飞控系统中,卡尔曼滤波通常用于融合GNSS定位和惯性导航系统(INS)的数据,以提供更准的位置、速度和姿态估计。
卡尔曼融合导航设计步骤
1. 定义系统模型
- 状态向量:定义系统的状态向量 \( \mathbf{x}_k \),通常包括位置、速度、姿态角等。
- 系统动态方程:根据物理定律建立状态转移方程 \( \mathbf{x}_{k} = \mathbf{F} \mathbf{x}_{k-1} + \mathbf{w}_{k-1} \),其中 \( \mathbf{F} \) 是状态转移矩阵,\( \mathbf{w}_{k-1} \) 是过程噪声。
2. 定义观测模型
- 观测向量:定义观测向量 \( \mathbf{z}_k \),通常包括GNSS位置和INS的直接测量。
- 观测方程:建立观测方程 \( \mathbf{z}_k = \mathbf{H} \mathbf{x}_k + \mathbf{v}_k \),其中 \( \mathbf{H} \) 是观测矩阵,\( \mathbf{v}_k \) 是观测噪声。
3. 初始化滤波器
- 初始状态估计:设定初始状态估计 \( \mathbf{\hat{x}}_{0|0} \)。
- 初始误差协方差:设定初始误差协方差矩阵 \( \mathbf{P}_{0|0} \)。
4. 预测步骤
- 估计:根据系统动态方程预测下一状态 \( \mathbf{\hat{x}}_{k|k-1} = \mathbf{F} \mathbf{\hat{x}}_{k-1|k-1} \)。
- 先验协方差:预测误差协方差 \( \mathbf{P}_{k|k-1} = \mathbf{F} \mathbf{P}_{k-1|k-1} \mathbf{F}^T + \mathbf{Q} \),其中 \( \mathbf{Q} \) 是过程噪声协方差矩阵。
5. 更新步骤
- 卡尔曼增益:计算卡尔曼增益 \( \mathbf{K}_k = \mathbf{P}_{k|k-1} \mathbf{H}^T (\mathbf{H} \mathbf{P}_{k|k-1} \mathbf{H}^T + \mathbf{R})^{-1} \),其中 \( \mathbf{R} \) 观测噪声协方差矩阵。
- 状态更新:更新状态估计
\( \mathbf{\hat{x}}_{k|k} = \mathbf{\hat{x}}_{k|k-1} + \mathbf{K}_k (\mathbf{z}_k - \mathbf{H} \mathbf{\hat{x}}_{k|k-1}) \)。
-误差协方差更新:更新误差协方差 \( \mathbf{P}_{k|k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}) \mathbf{P}_{k|k-1} \)。 6. 循环迭代
- 迭代:重复预测和更新步骤,直到完成所有测量数据的处理。
飞控算法设计
- 姿态控制算法:设计PID控制,实现姿态稳定。
- 导航算法:设计导航算法,根据飞行目标和环境条件调整飞行路径。
硬件
- 电源设计:由12V的电源转换电路,提供稳定的电源给飞控系统。
- 信号调理:为传感器信号设计适当的放大、滤波和模数转换电路。
- 通信接口:通过SPI I2C的通信接口,包括无线通信模块,用于与地面站通信。
测试与验证计划
- 单元测试:对每个单元进行详细的单元测试,验证功能正确性。
- 集成测试:进行系统集成测试,确保各模块协同工作。
- 环境测试:在模拟的环境条件下测试系统性能。
- 飞行测试:进行实际的飞行测试,验证系统在真实条件下的性能。
8. 制造与装配步骤
- PCB设计:设计飞控系统的PCB,并进行制造。
- 组件采购:根据设计图纸采购所需的电子元件和传感器。
- 装配:按照装配图纸和工艺要求,用SMT服务帮助贴片。
- 调试:对装配完成的飞控系统进行调试,测试各部分工作。
结构(部分固定螺纹未画)
鸭翼舱底座
舵机控制室底座
载荷室底座(鸭翼控制舵机室)
鸭翼室受力结构
载荷室2外壳(电路室外壳)
电池仓底座
舵机室外壳
供电舱部件
载荷仓外壳(电池)
供电仓部件
控制中心外壳
分层区部件
整流罩底座
整流罩
(该部分电脑出问题,图片无法上传,需重启,文件先上传)
电路板(电路板为整机设计)
以STM32H750VBT6的最小系统电路的核心展开
外围电路包括为整个系统的供电的电路,驱动电路,运用TIM引脚通用定时器对舵机进行PWM信号控制,发动机点火控制电路,对外无线电2.4G、4G通信电路,IMU惯导模块N100WP惯导模块 CAN 数据通信电路及通过SDMMC引脚进行数据的存储电路等等。实现图传、舵机控制、点火、无线电通讯和惯导交联功能。
设计中
本次实验目的;对设计结构,矢量发动机、舵机在实际使用上进行测试,提升各方面经验。
用途 | 规格型号 | 单价(元) | 数量 | 单位 | 合计(元) |
---|---|---|---|---|---|
PCB制造 | 包括冗余 | 25 | 10 | 250 | |
LC29HEA移动站模块板及双频天线(GNSS) | 305 | 1 | 305 | ||
SMT服务及其他元器件采购 | 100 | 3 | 300 | ||
INS惯导 | DETA10-N | 545 | 1 | 545 | |
紧固件和拉杆等包括转动结构 | 螺丝和6061铝合金棒等大约价格 | 150 | 1 | 150 | |
电池仓(底座) | 尼龙(320PA-F)三维猴预估 | 150 | 1 | 150 | |
舵机控制底座 | 尼龙(3201PA-F)三维猴预估 | 105 | 1 | 105 | |
载荷舱底座 | 尼龙(3201PA-F)三维猴预估 | 146 | 1 | 146 | |
鸭翼室受力结构 | 尼龙(3201PA-F)三维猴预估 | 90 | 1 | 90 | |
鸭翼舱底座 | 尼龙(3201PA-F)三维猴预估 | 173 | 1 | 173 | |
鸭翼舱固定外壳 | 尼龙(PA12-CF)三维猴预估 | 23 | 4 | 92 | |
载荷2外壳 | 工程塑料 PLA三维猴预估 | 93 | 1 | 93 | |
舵机 | 南古舵机12kg碳刷电机90度 | 150 | 4 | 600 | |
电池预算不足 | 1 | 1 | 1 |
[修改于 6个月0天前 - 2024/05/25 18:18:08]
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。