历史
大家还记得业余火箭专用的姿态测量设备KC316a吗?
XXXXXXXXXXXXXXXXXXXXXXXX/t/57745
XXXXXXXXXXXXXXXXXXXXXXXX/t/62698
在2014年1月的火箭活动中,有一位朋友的火箭没了航电。为了帮助他及时发射,航天局赶制了第一代kc316x样机。
x表示eXtended(功能扩展)。kc316a仅有姿态记录功能,这对于探空火箭是不够的。那时候,我们利用手中的材料,制作了第一套kc316x样机:它是个75mm的圆柱体塑料罐子,内部有一只316a和辅助电路。添加了气压计,GPS,远距离测控(距离20km以上),点火和开伞控制器(通过kc301实现)。
图中是KC316X的第一代样机。为了在冬季进行发射(当地温度0 ~ -10°),正在对传感器进行低温校准。
我们完全重写了内部的程序代码,以支持这些额外扩充的传感器和通信设备。配套的KCSA任务控制中心软件用于显示、存储和分析这些数据。
功能规划
现在,我们开始设计kc316x正式版产品,为业余火箭提供集成一体化的电子系统方案,包括:制导导航与控制(GNC)、飞行数据记录(FDR)、遥测和遥控(TTC)、火工品驱动器(DRV)
KC316X主要功能
- GNC: 板载三轴陀螺仪,三轴加速度计,三轴磁罗盘,气压计,外置GPS接口。可实现完整的惯性导航功能。
- TTC: 外置数传接口。可连接数传电台实现测控功能
- DRV: 2路点火驱动输出,4路舵机驱动输出。方便驱动各种执行器
- FDR: 内置16M存储器,可记录飞行全程数据
- 极小的尺寸,允许安装在直径25mm的火箭之内
- 配套软件: KCSA任务控制中心
功能规划和接口规划
- 使用GY-86模块实现陀螺仪,加速度计,磁罗盘和气压计功能。通过i2c总线,可以获得各传感器的读数。
- GPS和数传电台通过串口连接到KC316X,电源由主板提供。
- 点火驱动输出使用与kc316a相同的设计,两个MOS管下拉驱动点火头。
- 舵机驱动采用标准的2.54间距3针接口,增加一个额外的3针接口用于输入舵机电源。配套一只外置BEC模块用于解决供电问题。
- 飞行数据记录部分与kc316a相同,记录芯片改用16MB容量的W25Q128
- 预留z轴高量程加速度传感器接口,预留空速管接口。
- PCB尺寸固定为50*25mm,提供用于固定数传模块和GPS的塑料安装支架。
- 添加usb接口。可以直接通过usb配置工作参数,下载FDR数据,或者更新固件。
- 1路PPM输入,用于接收遥控器信号。
- 1路FSEL接口(1个IO口引出),2路外部模拟量接口
- 1路额外的串口引出,1路额外的SPI引出。
- 预留出厂bootldr烧录接口,2.54间距3x2pin插针
芯片选型
从上面来开,功能较kc316a增加了很多,几乎已经到了塞不下的程度。kc316a使用的是mega328,使用arduino编程环境。kc316x测试版本的程序也是针对328开发的。
- 如果需要增加usb接口,为了达到使用方便的目的(最好能免去驱动程序),需要使用usbhid通信方式。这就必须使用带usb控制器的单片机,kc314b采用的usb转串口方式不适用于316x。
- 大量已有的代码采用arduino环境编写,移植到avr之外的单片机很困难,费事费力。现在工程师极为昂贵,好的软件工程师要15k-20k/mo,节约软件开发的工时是很有意义的。
- 增加的其他接口太多,mega328同系列的atmega32u4(arduino micro 主控)不能胜任。事实上任何一款megaAVR都不能解决316x的需求(3串口,1usb)
所以,我们决定使用AVR xMega来制作kc316x
因为xMega兼容AVR的代码,arduino开发环境打补丁之后可以使用xMega。xMega有USB接口,同时有很多串口,SPI,I2C……可以完全满足kc316x的需求
待续
我现在出门钓鱼(狭义的),晚上回来继续写
200字以内,仅用于支线交流,主线讨论请采用回复功能。