我们团队成员均是来自深圳大学402实验室的成员,各自负责结构,电路,程序等方向的分工。
本项目的特点看项目名字就十分明白了,就是一款具有压力反馈的数据手套。所谓数据手套就是通过传感器手段采集手部的运动信息的手套,这些运动信息经过处理之后可以后很多用途,比如说实现手势人机交互,输入控制,动作捕捉等等。我们的项目是想在这样一个手套上加上一个压力反馈的设计,具体就是通过安装在指尖的气囊,由气泵充放气实现对手指的挤压达到压力的反馈。有了这样的反馈,数据手套在以上提到的各个应用方向上都可以优化体验。
下图是本项目的系统框图。
上图中左半部分是硬件端,右半部分是上位机端,本项目系统中单片机一方面采集手套上的各个传感器的数据蓝牙串口模块将信息上发给上位机,另一方面单片机也接收上位机发送的指令实时控制气囊气压形成反馈,而上位机主要实现数据的呈现还有一些简单的应用。
本次项目里软件设计里,比较关键的就是单片机对气囊的气压控制和上位机的编写。 1.气囊控制算法,因为需要保持气囊一定的压力,在控制气囊时我们采用了气压计在单片机内部编写了一个闭环的算法,通过反馈及时调节气泵功率,让气囊一方面能快速响应指令,另一方面也能抵抗外界对气囊的挤压保持。同时,手套上的弯曲传感器以及姿态传感器分别传回了手指的弯曲程度信息以及手掌各关节的姿态信息。通过蓝牙将这些信息发送到上位机,从而能够在上位机上模拟出一个虚拟手。 2.上位机是基于Unity3D的游戏引擎设计的,本身提供了一些物理效果还有碰撞监测的功能非常适合这次项目。因为使用欧拉角表示旋转时会有万向锁的问题,所以我们花了一些时间去理解四元数的旋转表示,正好untiy本身是支持四元数表示旋转的,提供了合适的库。我们在上位机上主要的设计就是如何组合获得的各种数据,最后还原现实中数据手套的样子。首先我们建立了一个手的模型,设计好各个关节的连接关系,将手掌,拇指的mpu6050的四元数数据映射到相应的关节上,实现相关部分的旋转。其余手指的数据是由弯曲传感器采样的数据,将数据换算成弯曲角度,完成手指弯曲的展示。
1.气泵电源电路:采用两个MP1584开关电源降压芯片使12V降为气泵可使用的5V电源,由于使用的气泵,电磁阀数目较多,功率以及电流较大,因此电源的电流最大值需要较大才能保证电路的功能完善。一个MP1584芯片可以输出3A以下的电流,两个开关电源可以使电源输出电流增大,但是并不可以简单的将输出的5V并联,这样会导致电源芯片一个不工作或者烧坏,因此使用二极管SS54来防止电流倒灌。下图为气泵的电源选择及开关电源防倒灌的电路。 2. 芯片电源电路:**** 使用ME6219C33M5G来使5V降为3.3V供主控芯片使用。
3.气泵以及电磁阀驱动 使用LNSC2302 来驱动,气泵选择5V的直流气泵,电磁阀也为5V的三通电磁阀原本方案有两种,一为一个气泵对应一个气囊,通过控制气泵来控制气囊的气压。二为一个气泵对应几个气囊,通过控制气囊对应的电磁阀来控制气囊的气压。 起初买了3.3V和5V的直流气泵两种,经过实测和体验,买到的3.3V气泵在供直流电时震动就很剧烈,气流不稳定,导致气囊震动剧烈,体验感不佳。5V气流平稳,因此选择5V气泵。由于5V气泵的重量比较大,五个气泵的话重量有点太重了,而且也比较占体积,因此先试验方案二。经过试验,电磁阀来控制气囊气压效果不好,由于电磁阀是物理开关,直接泄气,气囊内气压变化剧烈,难以达到一个平稳的可控制的状态。最后采用了方案一,采用气泵一对一控制气囊。在上位机里手套碰触到“物体”时手指尖的气囊会膨胀,使手指感受到不同压力,不碰触物体时电磁阀泄气,气囊消气,手指上无压力。从而达到带有反馈的手套的效果。
4.主控芯片为STM32F407VET6: 第一版使用STM32F103C8T6时发现会导致上位机的帧数太少,刷新太慢,比较卡,因此这一次使用了STM32F4的芯片
5.六轴 分为手腕上的六轴和手背上的六轴,额外预留了手指上的六轴接口,使用不同地址可共IIC使用
6.弯曲传感器: 查询了网上的资料,有两种方案,可以直接使用芯片内部的ADC,然后分压读取弯曲传感器的电压值来得到弯曲度。第二种方案是增加外部的ADC电路。由于增加外部ADC电路的话电路板所占面积过于大(要画5个ADC模块因为有5根手指),因此选择的第一种。根据淘宝给的电路图画出一版PCB(下图) 实测时发现数据波动非常大,数据不能使用,使用软件滤波后数据虽然平缓了一些但是读取的频率又变低了,这会导致上位机的模型延迟< span class="size">< /span>后来加了个电容实现物理滤波,经过多次换电容试验,发现10uF的电容效果很好,解决了数据波动大的问题。改进后电路如下< span class="size">< /span> 7. 气压检测电路: 使用XGZP6847 0-40KPA模块,使用主控芯片的ADC引脚来测量其输出电压,从而得知气囊内部气压,与气泵驱动和电磁阀驱动一起控制气囊的气压来对手指进行反馈,使手指感受到压力。蓝牙为HC08模块:此模块可以收发数据,手套端一个蓝牙,电脑端一个蓝牙连接CH340把数据给电脑。电路板PCB 3D图
团队介绍:https://www.bilibili.com/video/BV1hC4y187ak 项目介绍:https://www.bilibili.com/video/BV1Hf4y1R7mi 项目演示:https://www.bilibili.com/video/BV1Hf4y1Q7kM?from=search&seid=153764277043774185
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持