1.主动发光频闪摄影测量技术
当前论坛里面的探空火箭发射实验较多,但是测试数据往往很稀缺,造成了理论分析上的困境。尤其是火箭飞行过程中的速度、高度数据,测量往往很困难,当前的几种测量方案都不能得到可靠的数据:
(1)采用MENS测量加速度然后积分的方案。算法很复杂,在专业条件下尚且每秒钟偏差0.5 米(导航级惯导位置误差为每小时1海里),此外重力加速度的有效扣除也比较困难。因此,该方案在业余条件下不具备可行性。
(2)基于GPS的方案。由于数据帧率太低(每秒钟20帧以下),对于飞行时间短,速度快速变化的探空火箭也不能获得有效的飞行数据。
(3)基于气压计的方案。除非安装“空速管”,不然只靠气压计,得不到可用的飞行速度数据。
因此,在目前测量技术匮乏的情况下,我认为将主动发光频闪摄影测量技术(这个名字是我自己起的),应用于探空火箭的运动参数测量,应该是一种行之有效的办法。
这个方法的原理上类似于频闪摄影,但是还是有不少的区别。
频闪摄影:使用带有高速同步ttl功能的热靴闪光灯,外加一台单反相机,拍摄频闪照片。问题在于此类闪光灯价格太贵,另外受限于闪光灯功率,不能远距离工作。
主动发光技术的频闪摄影:被测量的物体自己发射闪光信号,相机只负责接受。理论上不受距离影响。不仅可以测量运动参数,而且可以传递数据。最远的测量案例曾应用在人造卫星上,卫星在轨道上运行,然后通过自身携带的LED灯发射闪光,向地面发射莫尔斯电码。地面用相机长曝光,可以观测到卫星的运动轨迹,读取到卫星下传的数据。
2.使用效果
每道闪光划过的距离正比于速度,废话不多说,上照片。
图1:主动频闪摄影技术-自由落体测试。
闪光频率50Hz,占空比50%,因此每道闪光的距离值(cm),就等于速度值(m/s)。根据照片可以直接得到速度、位置变化曲线。位置曲线就不用说了,下面是速度曲线。
图2:自由落体理论值与测量值的曲线
除了起始时间造成的常值误差,剩下的与理论值基本一致。
图3:主动频闪摄影技术-抛体测试。
3.基于STM32的解决方案
测试设备:一块最小系统板,一个LED,一节电池,20块钱搞定。
图4:频闪灯正面。
图4:频闪灯反面。
附录:频闪信号灯STM32代码
#include "main.h"
unsigned int mytime;
void SysTick_Handler(void)
{
mytime ++;
if(mytime>20)
{
mytime = 0;
}
if( (mytime > 0) && (mytime < 10) ) { gpio_setbits(gpiob,gpio_pin_7); } else if( (mytime > 10) && (mytime < 20) ) { gpio_resetbits(gpiob,gpio_pin_7); } } int main(void) { gpio_inittypedef gpio_a; rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable); gpio_a.gpio_mode =" GPIO_Mode_Out_PP;" gpio_a.gpio_pin =" GPIO_Pin_7;" gpio_a.gpio_speed =" GPIO_Speed_50MHz;" gpio_init(gpiob, &gpio_a); systick_clksourceconfig(systick_clksource_hclk); systick_config(72000000 1000); while(1){;}; }< pre></ 20) )></ 10) )>
说明:硬件采用STM32F103C8T6 小开发板,LED 灯接在3.3V 和GPIOB-7Pin上,小锂电池供电。程序采用定时器中断,控制LED 灯亮10ms,然后熄灭10ms,不断闪烁。只需将此代码粘贴到 “mian.c” 函数中,然后删除掉 “stm32f10x\_it.c” 文件中的滴答定时器中断服务函数 “void SysTick\_Handler(void)” ,并配置相应的库函数,进行编译即可使用。有关STM32 的教程可以参考网上资料。