制作一个遥控氦气球
在气球中充满氦气,由于氦气密度小于空气平均密度,气球排开了一定体积的空气,受到升力大于其自身重力,气球就可以向上飞了。
当我们给气球加上适当的负载之后,此时升力等于重力,那么气球就可以悬浮在空中了,如果我们再给气球安装上推进电机,并且仍然保证气球所获得升力等于重力,气球就可以在空中受控制的航行了。
这次我们就来开发一个可以飞的气球,我称之为“飞行气球“,下面是飞行气球的结构:
其中需要几大比较重要的部件:
控制板(飞行控制板,负责接受信号以及驱动推进器)推进器(推进电机,带动螺旋桨叶推动气球航行)载具(气球,负载提供给升力)
控制板
制作一个好的控制板是非常重要的,其负责接受控制信号并且控制各个推进器的动力输出(转速)。所以使用一款兼具无线功能的MCU是最优选择,那么蓝牙SOC就当之无愧的入选了,蓝牙可以方便的和手机进行链接,并且功耗也较低。
SOC全称为System on chip,也就是片上系统的意思。对于一块蓝牙SOC来说,就是将蓝牙射频电路,单片机(MCU)功能集成到了一个芯片上。使用它不仅可以降低成本,并且芯片所占面积大大减少。生产蓝牙SOC的厂家有很多,这次用的是比较流行的Nordic公司的NRF52832。
由上图可见,在NRF52832中集成了一个性能较好的Cortex M4F内核,主频为64MHZ,这对于我们的应用无疑是给出了很大的拓展空间,带有FPU(float process unit)浮点运算单元使得进行浮点运算更加快速。确定好了SOC之后,控制板还需要驱动我们的推进电机工作,那么我们就需要设计一个电机驱动电路了。由于气球的载重量有限,需要在各个环节都要减少重量,过于复杂的电路一概不予考虑,只需要最最简单的就可以了。
电机驱动芯片占地面积小,使用起来简单,驱动以及保护功能齐全,并且稳定性十分有保障。所以我选择了一款超级迷你的电机驱动芯片DRV8837,并且绘制好了电路的原理图
除了电机驱动芯片以及SOC芯片的电路之外,我还给板子上添加了一个姿态传感器MPU6050以及一个气压传感器BM280,用来获取姿态以及高度数据。
接下来将原理图文件转换成PCB文件并且进行简单的布局,布线等等操作。完成之后的样子可以初步的看出板子的样子。
这一次制作的板子为4层板,因为板子面积过于狭小,所以两层板布线困难巨大,故给板子添加了两个电源层,所有信号线则从板子表面通过。
切换成3D模式下,观察板子表面布局看看是否有问题
将板子的模型文件导出,导入到渲染软件中得到板子大概的效果图
板子拿到手之后,对于这种元件比较小、密度比较大的板子,按照常规来说应该开钢网才比较好焊接。而我这次图便宜没有开钢网,在焊接上栽了不少跟头,不是虚焊就是引脚连锡,反正出现各种问题。最后费了好大劲才焊接成功,这次长记性了,下回一定开钢网。
控制板到这里就算制作好了,给它编程之后就可以使用了。我在Nordic给的SDK(software development kit)软件开发包中修改了一下蓝牙串口的例程,在蓝牙串口接受服务的回调函数中,处理来自手机的数据包并且保存下来,方便后面控制电机使用。
电机转速采用PWM(Pulse width modulation)控制,所以我需要初始化一下NRF52832的pwm外设。
到这里我们就把代码写好了,控制板可以正常使用了,接下来我们看推进器的选择
推进器
推进器主要起着控制气球的姿态、以及前进后退的角色。在气球上使用的推进电机肯定不宜太重,那么空心杯电机肯定是不二之选,轻便的重量使得他可以很好的挂载在气球上。买来的电机以及螺旋桨。
拆了一个电机,用里面的铜丝来制作导线,铜丝不要太粗否则影响重量
所有的电子设备此时全部就准备好了,为了重量考虑,电池尽量使用最小的,这里使用的是一块100mah 3.7V锂电池,重量约3g
为了安装这四个电机,切割了一些泡沫塑料板,用来做支架,并且使用UHU模型胶粘接到电机上
将电机的另外一头焊接到刚刚做好的控制板上,这样控制板就可以控制电机的运转了
载具
关于载具我使用的是铝箔气球,因为铝箔气球有着很好看的外观以及各种造型,我在网上购买了一只形状是鲨鱼的气球。内充的气体一般是选择氦气,氦气属于惰性气体,安全性较高,氦气在花店可以加注,如果找不到花店的话也可以上网购买。
充好气的鲨鱼气球,由于很容易就飘到天花板上,只能用手按住拍照
将控制板使用透明胶带粘接到鲨鱼底部
接着依次使用UHU模型胶水粘贴四个电机至鲨鱼气球上,完成后的样子,四个电机就可以完成鲨鱼气球的前进,左右转弯,上浮下沉等等动作
从背后看看鲨鱼气球的样子
我顺便开发了一个微信小程序用来遥控气球,如图所示,油门使用中间的滑块控制,而左右转弯以及上浮下沉则是通过手机的重力感应。最上方处则是水平姿态线,用于指示手机此时的姿态。
当然之前设计控制板时候设计的姿态传感器也可以用上,我移植了MPU6050的DMP库,这样可以免去很多复杂的数学计算就可以轻易的获得欧拉角。对于闭环算法,我就简单的使用了一个比例项来控制,因为考虑到在室内气球的姿态比较稳定,所以就没有使用过多的算法。
最后来几张在飞行的图片