对位置反馈设备的改进的制作方法

文档序号:12504469阅读:405来源:国知局
对位置反馈设备的改进的制作方法与工艺

存在对感测人和动物的身体部分的位置和/或方向的持续需求。例如,关于感测姿势,相比于在人们身体上的急剧的力,使自己在延长的时间期间置于不良姿势中的人会引起更大的物理损伤。这是因为与作为短冲击施加的具有类似幅度的力相比,在一段时间期间的不良姿势随着时间的过去施加更多的力。可导致长期姿势相关损伤的姿势的种类也包括在使用计算机时的姿势、举重的物体或在进行重复的身体任务(例如在难操纵的位置上敲钉子)时的背劳损。

目前,存在试图抑制这样的姿势问题的很多方法。例如,存在传送关于如何在使用计算机时在工作场所和家中保持良好姿势的消息的直接消息广告活动。还存在被给予常常必须携带重物品(特别是有日常任务例如对高架子补充库存)的雇员的培训。

生物纠正物理治疗师使用姿势带子来在不良姿势发生之后修复不良姿势。这常常需要趋访物理治疗师,这占用他们的能够被更好地花费在不太可预防的损伤上的时间,并对社会增加健康护理的总费用。

在医疗领域中,已经存在用于为了研究目的而获得例如身体的确切角度的昂贵的设备(常常是光纤)。这很重要,但因为它用于研究且是庞大的和笨重的,它不适合于随着时间的过去的背部损伤的普遍防止。

还存在简单的程序,其以特定的间隔推荐某些牵伸运动以在再次使用计算机之前减轻肌肉劳损。此外,存在例如LUMOBack的设备,其基于附着到背部下方的单个方向传感器来测量你多长时间坐下或跑步或进行其它活动一次。它们常常通过将良好的活动如跑步转变成实质上游戏化的分数来鼓励更健康的生活方式,并提供对做得更好和更健康的激励。

当前的方法中没有一个能足够地鼓励用户纠正他们的行为,或被定价到用于一般使用的程度(且这因此限制该方法对保守的解决方案的有效性,与预防性解决方案相反)。

以类似的方式,存在对有成本效益的、通常可得到的位置和/或方向检测设备的持续需求,以有助于开发基于运动技能或其他移动或姿势的活动。

在这个说明书中对任何现有技术的提及不且不应被理解为对该现有技术形成公知常识的部分的承认或任何形式的建议。



技术实现要素:

根据本发明的一个方面,提供了装置,其包括用于检测受验对象的身体部分的位置和/或方向的至少一个传感器和可选的用于传输传感器数据的发射机,传感器与计算设备通信以处理传感器数据。

在另一方面中,本发明提供用于检测受验对象的身体部分的位置和/或方向的系统,其包括传感器和与传感器通信的计算设备,计算设备能够将所感测的数据优选地处理成适合于提供反馈的形式。

本发明还提供身体部分位置和/或方向检测装置,其包括:配置成附着到用户的传感器设备,传感器设备包括:柔性传感器和配置成接收并处理来自传感器的关于身体部分的运动的数据的微处理器。

在另一方面中,本发明提供用于检测身体部分的位置和/或方向的方法,其包括:从与身体部分接触的柔性传感器条接收多个电阻值并处理电阻值以确定身体部分位置和/或方向,其中处理步骤可选地包括比较一个或多个电阻值以便得出身体部分的相对位置和/或方向。

本发明还提供了提供身体部分的位置和/或方向数据的方法,其包括:由微处理器从柔性传感器接收数据,该方法包括由微处理器基于所接收的传感器数据来确定身体部分的位置和/或方向描述,其中基于所感测的数据确定位置和/或方向描述包括:处理传感器输入数据并可选地基于身体部分的位置和/或方向描述来触发反馈,以及其中处理步骤可选地包括比较一个或多个电阻值以便得出身体部分的相对位置和/或方向。

在另一方面中,本发明提供在计算机可读介质上的计算机程序,其当由计算机执行时被布置成:从与身体部分接触的柔性传感器条接收多个电阻值并处理电阻值以确定身体部分位置和/或方向,其中处理步骤可选地包括比较一个或多个电阻值以便得出身体部分的相对位置和/或方向。

在另一方面中,本发明提供非暂时计算机可读介质,其具有存储在其上的计算指令,计算指令包括:由微处理器从身体部分传感器接收数据的代码段;处理所接收的传感器数据的代码段;由微处理器基于所接收的传感器数据来确定用户的位置和/或方向描述的代码段;以及可选的由微处理器基于身体部分的位置和/或方向来触发反馈的代码段,其中处理步骤可选地包括比较一个或多个电阻值以便得出身体部分的相对位置和/或方向。

在本发明的另一方面中,提供了包括用于检测受验对象的身体部分的位置和/或方向的至少一个传感器和可选的用于在传感器和计算设备和/或一个或多个计算设备之间传输传感器数据的发射机的装置,传感器与计算设备通信以处理传感器数据。

可关于任何适当的身体部分来感测例如与位置、方向、姿势和物理位置有关的信息。例如,它可以是关节或一系列关节,例如脊椎、肩膀、肘、腰、数字关节、臀部、膝盖、踝,或它可以是特定的位置,例如特定的骨突或其它解剖学标志。本发明对健康和医疗使用例如修复姿势或重复性劳损是有用的。它可同样用于其它应用,例如在运动或其它人类运动领域中。在一些实施方式中,本发明用于例如监控并改变特定的人类运动,例如高尔夫球挥杆、网球挥杆、踢足球动作等。

在没有可选的发射机的一些实施方式中,计算设备与传感器物理通信。在一些实施方式中,计算设备不物理地在传感器附近,使得通信必须经由无线或通过另一手段。传感器数据可例如在传输之前由传感器的部件处理,或它可被传递到计算设备并接着被处理。

在一些优选实施方式中,传感器包括可被改变到所需的长度的一次性条,且该条可选地包括一个或多个预定位置,长度可在预定位置处减小。作为例子,条可包括在一个或多个预定位置处的一个或多个穿孔,使得它可在某个长度处被撕裂或切割以适合特定的受验对象的身体部分(例如,脊柱、臂等)的长度。在这样的例子中,条的一端可例如直接插入设备例如数据处理机、计算设备和/或发射机内,而另一端包括一个或多个这样的位置,长度可在所述位置处改变。

可通过任何适当的手段来得到根据本发明的条的尺寸和/或形状的改变。在一些实施方式中,条是套叠的,使得条可向下滑到适当的尺寸。在其它实施方式中,条包括一系列单独的较小的条,其可彼此啮合以产生特定的尺寸和/或形状。

在本发明的一些实施方式中,传感器包括电阻油墨和导电油墨。这些油墨中的每个可具有任何适当的类型。

在一些实施方式中,传感器包括粘合部分以在工作距离内附着到受验对象的身体部分,其中到身体的附着可选地包括下列项中的一个或多个:到紧身衣的附着和到受验对象的皮肤(和/或头发)的附着。附着部分可包括任何适当的粘合剂。在一些实施方式中,它是适合于与皮肤直接接触的医学级粘合剂。

在一些实施方式中,传感器包括穿孔部分以附着到受验对象的身体,其中到身体的附着可选地包括到紧身衣的一个或多个穿孔和到受验对象的皮肤(和/或头发)的附着。穿孔部分可包括任何适当的穿孔。在一些实施方式中,它是适合于与皮肤直接接触的制造穿孔。

在一些实施方式中,传感器包括褶痕或制造划痕部分以附着到受验对象的身体,其中到身体的附着可选地包括对紧身衣的一个或多个划痕和到受验对象的皮肤(和/或头发)的附着。折叠的部分可包括任何适当的褶皱。在一些实施方式中,它是适合于与皮肤直接接触的所制造的划痕或褶皱。

本发明的一些实施方式包括用于低成本更换的一个或多个一次性部件,其可选地包括传感器条。在这些实施方式的一些中,传感器条本身是一次性的。

本发明的一些实施方式还包括数据处理机,以从传感器接收传感器数据,并可选地存储和/或管理所述数据到计算设备的传递。在传感器和数据处理机之间的通信可以是通过任何适当的手段,例如物理连接、无线通信、蓝牙、zigby、蜂窝网络、计算机网络、卫星等。

在一些实施方式中,传感器与计算设备直接通信。这样的通信可以通过任何适当的手段,包括物理连接、无线通信、蓝牙、zigby、蜂窝网络、计算机网络、卫星等。

根据本发明的另一方面,提供了用于检测受验对象的身体部分的位置和/或方向的系统,其包括传感器和与传感器通信的计算设备,计算设备能够将所感测的数据优选地处理成适合于提供反馈的形式。本发明的一些实施方式提供一种系统,其包括移动计算设备以用反馈通知受验对象,并可选地存储和/或处理所感测的姿势数据。

在一些重要的实施方式中,本发明的装置和/或系统使用3个关键部分。首先,它使用穿戴式粘合带传感器,其可准确地测量整个脊椎,校准到用户的自然的和最好达到的脊椎位置。其重要方面是粘到身体并极大地减小测量误差的传感器的附着和折叠方面。在这些实施方式中,带传感器连接到单独的处理和传输设备,因为传感器意欲仅仅用于单个到几个用途(它们是一次性的)。在一些实施方式中,传输设备通过蓝牙连接到智能移动电话,并允许游戏化激励,用户的姿势历史的记录。使用对传输设备和移动设备的软件升级,一次性粘合条允许到身体的不同部分例如肩膀的未来贴附,其从姿势纠正方面来说也是重要的。

在本发明的一些实现中,提供一种装置或系统,其包括:柔性传感器;加速度计;可选的陀螺仪;数据收集单元;通信设备(其可选地是蓝牙);智能电话;以及能够处理电阻测量以确定身体部分的位置和/或方向的智能电话应用(app)。

在本发明的一些实施方式中,传感器系统包括垂直级联样式的多对传感器。

本发明的装置或系统的一些实施方式包括调度器以最小化在例程等待下一回合来再次运行时停止其它功能。

在一些实施方式中,提供感测身体部分的位置和/或方向的方法,其包括:使传感器附着到或极接近身体部分,其中传感器包括电阻和导电油墨和粘合条;产生在传感器和微处理器传输设备之间的通信使能连接;使用蓝牙将传输设备连接到移动电话;对于条上的每个传感器,将来自传输设备的原始数据实时地发送到移动电话;在移动电话上运行应用,其首先在人的自然的身体部分位置处被校准;在移动电话上核对实时电阻数据;提供所述数据的视觉表示;警告用户位置和/或方向是否满足或未能满足预设标准;以及在移动电话上记录数据以及因而由条经由传输设备提供的数据的历史。

在整个这个说明书(包括所附的任何权利要求)中,除非上下文另有要求,词“包括(comprise)”和变形例如“包括(comprises)”和“包括(comprising)”将被理解为暗示包括所陈述的整体或步骤或整体或步骤的组,但不排除任何其它整体或步骤或整体或步骤的组。

附图说明

图1描绘根据本发明的一个实施方式的示例PCB设计。

图2示出根据本发明的示例系统的各种子系统的分解。

图3示出基于光纤的传感器的测量。-90在左边,+90在右边。

图4示出典型的箔应变规设计。

图5示出用于衣服的交织松紧带的例子。

图6示出裸导电油漆弹性传感器的电阻与从40mm伸长的关系曲线。

图7示出来自一批裸导电浸泡的弹性光纤的电阻与从40mm伸长的关系曲线。

图8示出浸渍的传感器拉伸测试的变化。

图9示出当传感器弯曲时,微细裂缝出现且电阻增加。

图10示出两个单独的SpectraSymbol 2.2”FS柔性传感器的电阻与弯曲角分布图。两个数据系列都通过减去内在电阻而被标准化。第4阶多项式趋势线被包括。

图11示出SpectraSymbol 2”FS柔性传感器。传感器的电阻元件是黑带,导电元件放置在上面以减小电阻。两个传感器布置在相反的方向上,形成惠斯通桥的一半。

图12示出SS柔性传感器对的标准化电压。向左(+)90和向右(-)90扫描导致磁滞。

图13示出使用BC油漆、柔性PET卡和铝箔的手工制造的电阻传感器。

图14示出使用裸导电油漆、在柔性PET卡上的铝箔的手工制造的基于电阻油墨的柔性传感器的电阻与弯曲角分布图。两个数据系列都通过减去内在电阻而被标准化。

图15示出打印行程1—碳(蓝绿色)。行程2和3—碳和银(黑色)。

图16示出在敞开空气中的单程和双程电阻固化。

图17是在喷墨添加剂过程中使用的锡粒子的显微视图。

图18示出在Methode PET上的6个单独的Methode油墨柔性传感器的原始电阻与弯曲分布图。当传感器在-90到+90之间弯曲时方差是一致的。

图19示出在在一批中的Methode油墨/PET上的传感器的方差。第三阶多项式趋势线被包括。

图20示出示例脊椎感测带的计算机产生的模型。

图21示出Methode油墨柔性传感器对的标准化的电压与弯曲角分布关系,第三阶多项式趋势线针对每个传感器的原始数据被添加。

图22是示例处理单元的各种子系统的分解。

图23是具有加亮区的示例PCB设计。复用器在PCB的下侧上。(在图1处的原始图像)

图24示出LTC4080一般应用示意图。

图25示出被配置为电阻到电压转换器的opAmp。对于正输出需要负Verf。

图26示出半桥惠斯通和仪表放大器的示意图。

图27描绘从离散opAmp创建仪表放大器。

图28示出AD8236 Breakout。

图29示出MCP42XX Digipot引脚分配。

图30示出分压器TLE2426的示意图。

图31示出TLE2426引脚分配和Vi/Vo曲线(Vi:Vin)(Vo:Vout)。

图32示出ADXL345 Breakout。

图33是根据一个示例实施方式的固件代码结构的高级表示。

图34是调度器和基于延迟的系统的流程图,其中调度器用在SpineSensorV2A FirmwareV0 8 1.ino中。

图35是readSensor()的函数流程图。

图36描绘关于身体总曲率如何被得到以及身体的方向被忽略的视觉解释。

图37示出从以一致的方式得到角度θ方面来说分量矢量a.b如何与c有关。

图38是calibrateSensor()的函数流程图。

图39描绘Atmega32U4 SRAM的总映射。

图40示出堆栈和大堆阵如何在AVR微控制器内增长。

图41示出在我们的最终PCB中的安装在底部上的microusb SMD端口的前侧和后侧。

图42示出在异步模式中的串联USART的示例连接布置。

图43示出根据RN42数据表的引脚分配以及板的平板扫描底侧尺寸。

图44示出SPI如何由具有时钟和芯片选择的移位寄存器的环组成。

图45描绘对具有多个CS#线的各个SPI设备寻址。

图46描绘使具有环拓扑的多个SPI设备级联。所有设备共用相同的CS#线。

图47描绘在CS#的上升沿上执行命令和值之前被传送的命令和字节的典型SPI通信。

图48描绘命令字节分解图。

图49描绘如何在视觉上解释SPI模式。第一模式被加亮。

图50示出I2C设备的一般配线。注意,存在对SCL和SDL的上拉电阻器的强制需要。

图51描绘ADXL345寄存器图。

图52描绘ADXL345 POWER CTL寄存器。

图53描绘ADXL345 DATA FORMAT寄存器。

图54示出被用作复用器通道选择的S0到S3。

图55示出PhoneGap应用的用户界面的线框草稿图。左:前-后弯曲。又:左到右弯曲。

图56示出示例PhoneGap架构。

图57示出.html和.class函数的流行jQuery语法兼容库的基准。

图58描绘画布元素。测量单位是像素。原点(0,0)在左上角上。画布是500x375个像素。右下角位置是(500,375)。

图59描绘javascript画布库的比较。

图60示出Javascript和PaperScript作用域。

图61示出JavaScript、PaperScope和窗口全局变量(数据存储器)。

图62描绘对与用户保存的最佳姿势位置的偏差的示例计算。

图63描绘移动应用的示例3D表示。对每个曲线有单独的画布。

图64描绘示例电话应用过程。

图65描绘jsperf.com基准,很多循环实现是可用的。循环性能基准。

图66描绘示例渲染:左:无子像素渲染(混叠的),右:抗混叠用于使子画面平滑,因为原点不是设定的整数。

图67首先描绘测试柔性条的自动装备。其次是测试光折柔性传感器的自动装备。

图68示出哪个前传感器表示哪个subshot。

图69描绘示例复用器。

图70描绘示例微控制器。

图71描绘示例电源系统。

图72描绘RN42无线电模块。

图73描绘Zif插座。

图74描绘示例放大器和调谐系统。

图75描绘示例振动电机驱动器。

图76描绘示例振动电机驱动器。

图77描绘示例复用器。

图78描绘根据本发明的示例条。

图79描绘示出水平移位的根据本发明的示例条。

图80描绘示出对角移位的根据本发明的示例条。

图81描绘示出垂直移位的根据本发明的示例条。

图82-84示出示例实施方式,其中对不同的身体部分利用本发明的条。

图85描绘包括在条和发射机之间的直接连接的本发明的一个实现的使用。

具体实施方式

在本文中结合与感测姿势有关的特别优选的实施方式且特别是通过参考脊椎位置描述本发明是方便的。然而,本发明可应用于各种环境和情况,且应认识到,其它结构和布置也被考虑为落在本发明的范围内。对本文所述的结构和布置的各种修改、变更、变化和/或添加也应被考虑为落在本发明的领域和范围内。这样的修改的例子包括感测在空间中的位置和其它关节例如肩膀、膝盖、肘、腰等的运动。

示例实现—EWo3

这个例子提供人类脊椎纠正设备,其包括可附着到人的背部的柔性带并对用户校准并将无线信号发送到智能电话以用于记录和复查。在有或没有医疗辅助的情况下都可以容易地应用该设备以帮助自我纠正脊椎和姿势问题。

本发明的这个特定实施方式目的在于提供监控姿势的廉价的、容易使用的和精确的备选方案。信号从设备被发送并例如使用应用(App)显示在手持设备(例如移动电话)的屏幕上。

各种传感器可以如在本文详述的那样被使用或互换,但在一个实施方式中设备使用具有线性度和在低成本下的性能的定制传感器设计。

Ewo3例子是消费和医疗设备,其帮助减小与生活方式和工作习惯有关的脊椎损伤的发生。这包括扩展的运动和静止姿势,其将随着时间的过去导致一系列肌肉劳损和损伤。

根据本发明的设备的益处包括:

1.准确度——向用户通知足够的信息以纠正他们的姿势的能力。

2.成本——足够便宜,类似于对医师的单次拜访。

3.动机——如果用户不遵循指令,准确度没有任何意义,所以设备使用激励来鼓励用户纠正他们的行动。

4.可靠性——用户可信任结果、准确度并改进他们的姿势。

5.互用性——设备配合空间中的其它解决方案,例如医师。

设备目的在于消费者市场而不是医疗市场。这意味着对最小化成本的增加的强调。这个特定的例子更多地聚焦于防止上背损伤,优先于下背,因为上损伤更常见。这个特定的低成本例子优先考虑前后测量,优先于左到右姿势,因为大部分人知道如何自然地维持左到右姿势。

生物反馈用于刺激和反馈(经由通过移动电话应用的长期图形、中期视觉反馈,以经由触觉反馈警报来立即反馈)。用户也可给他们的理疗医师或脊椎指压治疗师发送例如与他们的进步有关的消息。

图2示出这个例子的各种子系统的分解。它示出总系统可如何分解成包括下列项:

●背部的弯曲

●柔性传感器

●加速度计/陀螺仪

●数据收集单元

●蓝牙通信

●具有蓝牙的智能电话

●具有校准的智能电话应用

●将数据远程地发送到保健专业人员,例如理疗医师。

传感器

总体系统设计围绕脊椎感测带。每个感测带的配置由多个传感器组成,使得它可提供检测人从前到后和从左到右弯曲多少(或以不正确的姿势弯腰)的解决方案。尺寸外形是细长的,所以容易在不侵入的情况下应用。带被设计为低成本的并符合现有的制造工艺。

有三种类型的传感器特征:单向、双向和双极。单向传感器只有在两个相反的方向中的一个方向上弯曲时才改变属性。双向传感器当在两个相反的方向上弯曲时改变属性,仅测量运动的幅度。双极传感器在两个相反方向上改变属性,每个方向产生不同的测量。

可使用很多不同的感测技术。优选地,感测带包括用于前后运动的基于阻抗的柔性阵列和(可选的)用于增强的功能和准确度的加速度计。

光纤布拉格光栅传感器

光纤布拉格(FBG)传感器由特别制造的光纤构成,感测区域被处理以选择性地充当对某个波长的光的反射镜。使光纤应变会产生在光栅的间隔中的移位,这可被检测为在从输入光源反射的光中的变化,或在光纤的另一端上的光强度的相应降低)。这通过定期地改变核心光纤的感测区域的折射率来实现。它具有非常高的准确度的优点。

通过选择性磨损或破裂的纤维光学器件传感器

也可在一些应用中使用柔性传感器的破裂类型。这涉及在覆盖有热收缩的光纤中切割的0.5-1mm间隙。在一端上的白色LED和在另一端上的光依赖电阻器,自动装备在图3中报告这些结果。这显示光学柔性传感器和LDR组合不是线性的,但具有在至少3个连续试验上的高重复性。数据表明这个传感器是双向的,但不能用于检测向前或向后运动,仅仅运动的幅度。

微机电系统(MEMS)

MEMS是映射机械变化的IC,例如加速度计或陀螺仪。MEMS相对于它们的成本是极其准确的。它们常常用在涉及人体的生物医学应用中。图3示出基于光纤的传感器的测量。-90是左边,+90是右边。试验的平均值被包括在图表中。

基于电阻的传感器

裸导电油漆是无毒的基于水的油漆,其用碳聚合物灌输。它具有适合于丝网印刷或涂覆的55欧姆/Sq/微米的电阻。

常规应变规是依赖于在绝缘柔性基底(例如聚酰亚胺)上的导电箔的细丝之间的电阻的无源设备。因为传感器是细长的,当细丝彼此移动时,横截面面积改变。长平行细丝布局将方向限制到一个维度。

应变规传感器能够检测弯曲和延伸,其使它们适合于这个示例实施方式。通过集成嵌在带上的两列应变传感器,可能检测到前向和侧向运动。

注意:欧姆/sq(/微米)是导电油墨的工业标准测量。Sq被定义为电阻部分的长度/宽度之比,实际测量的电阻受到由于涂敷方法而引起的变化(特别是/微米(z方向,涂敷厚度))。

通过使用由裸导电油漆涂敷的弹性光纤来复制常规应变传感器的特征。(见图5:用于衣服的交错松紧带。)当弹性光纤的长度增加时,在导电碳粒子之间的距离在交叉编织结构内增加。当端对端测量时,弹性光纤的伸长增加电阻。用于弹性的编织技术方便地限制只在一个维度(纵向)上的拉伸,这类似于基于箔的量规。可从图7中看到电阻分布,通过集成预先拉伸的应变传感器,可实现双极感测。

可使用不同的涂敷方法:直接涂覆和浸渍/浸泡。首先,直接油漆涂敷到弹性光纤的表面上在长度的短变化之后产生电阻的明显增加。通过用以水稀释的裸导电油漆浸渍传感器,更多的碳粒子被引入并可用于导电性。从图8中,有在批次之间的明显变化。

基于电阻油墨的传感器

这些柔性传感器一般由条组成,该条由更像应变传感器的在绝缘材料上的电阻条组成,但不需要相同程度的制造精度。电阻油墨是易碎的,但能够形成与基础材料的强结合。当传感器弯曲时,在弯曲的局部化区域内的绝缘基底展示拉伸,其将导电粒子拉开并引入永久的微裂缝。这是所利用的特性;进一步的弯曲将打开和关闭这些间隙,由于弯曲而导致电阻的变化。当在静止时,柔性传感器返回到它的内在电阻(取决于电阻条的形状)。

柔性传感器的电阻根据在弯曲位置处的半径而改变。较尖锐的弯曲部分的越小的半径,电阻就越大,因为与具有大半径的弯曲部分比较,微裂缝更疏开一些,但它也可引起永久损坏。此外,因为柔性传感器一般在长度上是2”到5”,沿着一个传感器的多个弯曲部分将给出没有代表性的电阻和弯曲角。因此,每个传感器必须将弯曲暴露限制到一个特定的点,同时为了最好的准确度也维持一致的弯曲半径。

Flexpoint、SpectraSymbol和Infusion系统是商业极柔性传感器和在市场上的类似大部分柔性传感器的制造商,它们都是单向传感器。Flexpoint声称没有与它们的传感器相关的磁滞。值得注意的是,Flexpoint传感器的弯曲分布的电阻是非线性的。

图6示出裸导电涂覆弹性传感器的电阻与从40mm伸长的关系曲线。为了比较,添加使用浸泡方法的传感器。两个数据系列都具有第三阶多项式趋势线。

图7示出来自一批裸导电浸泡弹性物的电阻与从40mm伸长的关系曲线。第三阶多项式趋势线插入每个传感器内。

图8示出浸渍的传感器拉伸测试的变化。可注意到,变化在整个同一生产批次中明显增加。

图9示出当传感器弯曲时,微细裂缝出现且电阻增加。在弯曲的局部化区域处,在所引起的微裂缝之间的距离增加,增加了传感器的电阻。

电阻油墨柔性传感器发展

SpectraSymbol FS柔性传感器

在一个例子中使用SpectraSymbol的商业柔性传感器。传感器由以导电条分层的电阻元件组成,图11。主要元件是由于弯曲而改变的电阻部件。导电白条可用于降低传感器端到端的内在电阻的目的。从图10中,可注意到,它在操作区0-+90(远离被印刷的一侧)内是非线性的。当弯曲到操作区内时,基础材料的长度增加,从而增加每个微裂缝的距离。朝着被印刷的一侧(-90)弯曲不减小电阻。这是由于电阻碎块的高密度;距离不能进一步减小,从而电阻只改变了最小量。

因为SS柔性传感器是单向的,仅仅一个传感器不足以测量运动的前向和后向方向。通过背对背相反地放置两个并用粘合剂固定(图11,两个传感器中的至少一个将在操作的活动区中)。传感器对作为半惠斯通桥被连接,用于使用角弯曲的变化来测量电压差。

图10示出两个单独的SpectraSymbol 2.2”FS柔性传感器的电阻与弯曲角分布图。两个数据系列都通过减去内在电阻而被标准化。第4阶多项式趋势线被包括。

图11示出SpectraSymbol 2”FS柔性传感器。传感器的电阻元件是黑带,导电元件放置在顶部上以减小电阻。两个传感器布置在相反的方向上,形成惠斯通桥的一半。

图12示出SS柔性传感器对的标准化电压。向左(+)90和向右(-)90扫描导致磁滞。

手工制造的电阻柔性传感器

图13示出使用BC油漆、柔性PET卡和铝箔的示例手工制造的电阻传感器。在另一例子中,电阻柔性传感器使用BC油漆、柔性PET卡和用于导电条的铝用手创建。电阻的行为与SS柔性传感器类似。由于制造不一致性,内在和操作行为在同一批内由于不均匀的BC油漆涂敷(在z方向上)而存在一些变化。虽然电阻的范围广泛地改变,当受到弯曲时,7/10的所创建的传感器展示类似的变化。

喷墨打印电阻柔性传感器

存在很多用于柔性PCB的商业制造的方法。连同常规半添加剂处理;在这个例子中给出丝网和喷墨打印方法。图14示出使用裸导电油漆、在柔性PET卡上的铝箔的手工制造的基于电阻油墨的柔性传感器的电阻与弯曲角分布图。两个数据系列都通过减去内在电阻而被标准化。

为示例设备开发的方法

半添加剂方法是制造PCB的常见方法。DuPont的柔性的基于聚酰亚胺的Pyralux用作纤维玻璃背衬的简易替代品。固体油墨打印机用于创建相减掩模。这将只解决导电裂缝的问题,而非电阻油墨的涂敷。

丝网打印是用于大格式海报打印的添加剂方法。在导电和电阻油墨的引入的情况下,它们现在被广泛地用在涉及定制形状的电路的工业中。Flexpoint和SpectraSymbol传感器都使用这种技术被打印。建立每个模板掩模的成本是$200-300,然而在进行中的制造成本是最小的。

喷墨打印也是使用具有特殊油墨的喷墨打印技术的添加剂方法,其中粒子尺寸在纳米规模上。由于所需数量的处理,油墨的成本非常高,但不涉及额外的建立过程,因此与丝网打印比较,不同设计的数量不被成本限制。因为设备涉及很多测试和原型设计,喷墨打印是对这个示例实施方式的最适合的选择。

大部分喷墨油墨是基于水的,它们包含其它添加剂例如纤维素树脂和保湿剂以使油墨稳定,用于存储并通过将粘度控制到适当的水平(<20cP)来打印,使得它可悬浮在打印喷嘴内而没有泄漏。最重要地,彩色颜料或导电粒子必须在纳米规模上,以便不阻塞打印头。这意味着稀释的裸导电油漆(或来自其它制造商例如Conductive Compounds)由于大粒子尺寸而不能用在喷墨打印机中。需要通过超声波浴的超声处理以在它适合于使用之前减小尺寸。

Methode Electronics导电油墨

在市场中有喷墨兼容油墨的很多提供商,例如InkTec、Methode Electronics和Plextronics。InkTec和Methode提供基于银和碳的油墨,而Plextronics也产生用于光伏和OLED电路的基于有机聚合物的油墨。在这个示例实施方式中,使用Methode油墨。

为Methode Electronics及其油墨特别设计Methode PET。这两者都被处理以促进油墨干燥和附着。两个PET版本都是半透明的。

打印技术

使用3行程过程来打印传感器。首先,涂敷碳层,之后是在顶部上的银+碳的另外两个层。图15示出打印行程1—碳,行程2和3—碳和银。因为打印机在任一时间只可以打印一种类型的导电/电阻油墨,需要多行程技术来防止在银和碳部分之间的任何微观间隙,以维持油墨整体性。使用分层技术,将有至少一个端到端连续路径(通过底部碳层)。每当新层(1微米z)被涂敷时,导电性线性地减小,图16。

可选的柔性传感器结构

传感器被设计和打印在Methode PET和Epson聚酯上。单独的传感器在180度范围内被测试,从图18中,有在-90到+90范围内的非常显著的线性度。数据还没有被标准化以展示使用喷墨打印实现的小变化。在图19中绘出方差与弯曲角的关系曲线;量非常小且在整个180度操作范围当中是一致的。图16示出在敞开空气中的单程和双程电阻固化。图17是在类似的喷墨添加剂过程中使用的锡粒子的显微视图。

尽管有与商业柔性传感器比较的类似的布局,与非线性单向特征比较,我们能够创建双极线性传感器。这是由于由打印头涂敷的电阻粒子的低密度。来自图17的类似喷墨涂敷过程的显微扫描显示在每个滴之间的间隙。虽然这些间隙被减小并通过多个行程被覆盖,这引入在z方向上的间距,产生在微碎块之间的微观距离。这给出额外的空间用于当材料基底在任一方向上弯曲时使粒子“行进”。当朝着被印刷的一侧弯曲时,材料基底在长度上减小并在距离上减小,导致电阻减小。

图18示出在Methode PET上的6个单独的Methode油墨柔性传感器的原始电阻与弯曲分布图。线性趋势线被包括。当传感器在-90到+90之间弯曲时,方差是一致的。图19示出在在一批中的Methode油墨/PET上的传感器的方差。第三阶多项式趋势线被包括。

尽管已经创建在操作范围内是双极的和线性的传感器,但我们决定对这个例子继续使用类似于商业柔性传感器的对配置(形成惠斯通的一半),而没有对关于感测带和处理单元的现有电路设计的明显变化。由于打印机本身的约束的A4尺寸,唯一的成本是与用手连接段相关的时间量。

每对传感器以垂直级联格式布置以增加分辨率并减小弯曲部分的漏掉的捕获(与端到端布局比较)。感测带由12对传感器组成,每对检测运动的前向和后向方向。

图20示出示例脊椎感测带的计算机产生的模型。图21示出Methode油墨柔性传感器对的标准化电压与弯曲角分布图,第三阶多项式趋势线对每个传感器的原始数据被添加。

主VCC和接地线给感测带传感器供电。由于纳米粒子的尺寸,银#9101导电油墨具有相当大的电阻。为了覆盖长距离(y方向),通过加宽VCC和接地线(x方向)的横截面面积并打印多个行程(z方向)来最小化电阻。此外,由于VCC和地沿着侧面被布置的缺陷,通过在各种点处的交叉连接使用导电Kemo L100银油漆来减小电感。使用类似于PCB通孔的CircuitWorks银导电环氧树脂来连接传感器对。传感器使用该通孔作为锚定点。没有将这些对保持在一起的额外粘合剂,以减小由对商业传感器观察到的缺乏柔性引起的任何磁滞。

由于空间约束,银信号轨道具有在200欧姆的范围内的电阻,然而,这是不重要的,因为柔性传感器的内在电阻在千欧姆和惠斯通配置的范围内。由于无源传感器设计,存在最小噪声。

额外的膨胀能力对暴露的I2C和横贯到带的顶部的电源接触点是可能的,其中加速度计夹子可被附着。使用连接到处理单元上的ZIF的打印机将直接打印20pin 1mm宽ZIF板。

PCB和硬件设计

图22示出示例处理单元的各种子系统的分解。图23是具有加亮区的最终PCB设计。复用器在PCB的下侧上。(在图1处的原始图像)

1.分幅器(输出一半供电电压)

2.AD8236微功耗仪表放大器

3.MCP42100 100k欧姆256步SPI digipot

4.用于电池感测的分压器

5.触觉电动机NMOS驱动器

6.具有USB支持的Atmega32U4AVR微处理器

7.RN42蓝牙串行模块

8.锂离子电池充电器

9.ZIF插座

10.下侧(未示出)CD74HC4067 16通道模拟复用器

图24示出LTC4080一般应用示意图。

电源系统

设备的电源系统围绕LTC4080IC开发。它是具有300mA同步降压转换器的500mA独立锂离子电池充电器。它被决定采用一般应用示意图(图24),但被修改以适合这个例子的要求。

反馈电阻的比被改变。在图24中的R2减小到315.78千欧姆。每当在反馈引脚处的电压下降到0.8V之下时,触发降压电路。通过放置在反馈引脚和Vout之间的分压器,该比将允许在输出处的3.3V被看作针对反馈引脚的大约0.8V。

Vout=3.33V被四舍五入到两个小数位

对于电源系统的示意图,参考图71。

回退LDO和电池充电器的板放置在PCB上。最后,LTC4080不与电池一起工作,直到额外的二极管被包括为止。由于在PCB设计中的疏忽,二极管是需要的,其中EN BUCK被布线到USB电源而不是锂离子电池。这意味着降压转换器只在连接到USB电源时才起作用,这使合并它与电池的目的受挫。通过二极管,在Vin处的EN BUCK仍可从电池被供电,但来自USB的电流被保护免于直接给锂离子电池充电(防止潜在的火灾危险)。来自最终板的整个系统功率消耗的测量。系统电流是:

LTC4080还具有突发模式,如果系统使用小于10mA,该突发模式是有用的,以增加的波纹为代价。(降压效率与负载电流的关系图)。虽然突发模式的相应PCB轨道被布线,系统从不下降到10mA之下,所以这个特征不被实现。

目前为来自SparkFun的1000mAh Li-Po设计处理单元。假设可计算连续蓝牙传输电池寿命。

deciceRuntime(h)=batteryCapacity(mA/h)/consumptuion(mA)

使用降压转换器:最大值:最小值:

使用LDO:最大值:最小值:

运行时间是估计。在降压转换器和LDO之间的运行时间差异近似是1小时。由于成本和尺寸,LDO是有利的。在当前使用中要改进的领域是数据传输速率的问题。这是在蓝牙传输频率和功率消耗之间的关联。因为用户不需要真实数据,直到直接观看显示器时为止,可通过将柔性传感器读取减慢到一分钟一次来提高电池寿命。在一些实施方式中,提供了睡眠模式以最小化功率的现行浪费。图25示出被配置为电阻到电压转换器的opAmp。对于正输出需要负Verf。

根据本发明的单元的电池或能量源可放置在任何适当的位置上。在一些优选实施方式中,它与发射机安置在一起。在一些优选实施方式中,电池位于与发射机相同的壳体或与它有共同空间的壳体内或相邻于与发射机相同的壳体或与它有共同空间的壳体。

低电池感测

通过放置两个分压电阻器的板来制造低电池感测的框架以将锂离子电池的电压(在2.7到4.5V之下之间的电压)减小到ADC可感测到的范围内。因为准确度对这个特定的实施方式不重要,两个1M欧姆电阻器用作感测分压器比。这将锂离子电池的电压减小到一半,其在4.5/2=2.35V和2.7/2=1.35V之间。

信号处理和放大

因为在所打印的柔性传感器中的可观察到的变化是非常小的信号,它们在数据可被获取之前需要放大。这包括图25所示的设计,例如对电阻放大器的电阻。此外,在最终设计中的Atmega32U4中的ADC信号输入被配置为从地到VCC的单侧ADC输入。

从单侧移动到微分放大器设计,惠斯通(半桥)电路设计被采用。惠斯通桥经由仪表放大器来测量在电压中的差异。在半桥设计中,桥的一半是一对柔性传感器,而桥的另一半是提供静止电压参考的分压器。静止电压参考是当拉直的时由柔性传感器看到的电压。

图26示出半桥惠斯通和仪表放大器的示意图。

测试电路被构建以评估该概念。实验电路板被布线到图26中的设计,其中静止参考电压由手可调节电位计表示。

仪表放大器选择

最初,NA126被选择为第一仪表放大器,从数据表中有从上轨和下轨的0.9V电压降。这意味着ADC在3.3V系统中将看到的摇摆的范围是仅仅1.50002V=3.3V-0.9V*2。

利用ADC的全范围且不失去在感测范围中的1.8V是合乎需要的。存在对从LM324N构建仪表放大器的可行性的研究。LM324N由具有上电源轨电压的0V到1.5V的输出摆动的4个opAmp组成。它被配线为如图27所示的仪表放大器。作为关于上轨电压下降的问题的变通方案,被供应到LM324N的电压比被供应到分轨器(在章节3.2.3中详述)和半惠斯通桥的电压高至少2V。5V被供应到LM324N,以及3.3V被供应到传感器以及ADC AREF(ADC电压参考)。

虽然LM324N可被配置为仪表放大器和更高的电源电压,它最终下降,有利于图27所示的模拟设备的AD8236。这是因为使用LM324N将需要供应两个单独的电压,一个用于LM324,以及另一电压给柔性传感器供电。AD8236具有轨到轨电压摆动。其次,SOIC芯片小于LM324N。因为AD8236是集成仪表放大器,与LM324N配置相反,需要较少的离散部件。导致较小的PCB。

所有试验用的放大器设计使用单个电阻器来设置设备的增益。AD8286在性质上是类似的,在图28中的分解示出各种电阻和可被得到的近似增益。为了找到得到特定的增益值所需的确切值,其中RG是增益电阻,且G是期望增益值。注意,存在200的最大增益。图29示出MCP42XX Digipot引脚分配。

数字电位计

在这个设计中的数字电位计的主要角色是设置电压参考以及AD8236仪表放大器的增益。为这个工作选择MCP42100,其是具有两个内部单独可控制的电位计的100千欧姆数字电位计。MCP42100为每个电位计存储在0-255之间的值。这意味着这个电位计的理论分辨率是:

选择100千欧姆数字电位计的原因是因为所需的增益的范围在10到200的增益之间。这是因为我们测试的大部分柔性传感器具有在大约0.1到0.3V的一般摆动。这分别需要33和11的增益,设置增益的100千欧姆数字电位计将能够容易从10的增益摆动到200。这给了我们许多余地来最终移动到未来的传感器,例如对电路有最小修改的真实应变规。

例如在国家仪器白皮书“Measuring Strain with Strain Gages”中,提到应变规一般输出小于10mV/V(每激发电压)。这意味着对于3.3V,可预期看到大约3.3V*0.01=0.033V。为了放大来自这些应变规(对于3.3V系统)的这样的信号,增益应被设置为:

100=3.3/0.033。

这应相应于4.42K的增益电阻。且给出具有0.39千欧姆的步进分辨率的digipot,可通过将digipot电阻寄存器设置到11=4.42/0.39来达到4.42K的增益电阻。

数字电位计的另一目的是充当在静止时柔性传感器的电压参考用于使仪表放大器与其比较。

作为分压器,digipot可将3.3V分成256步长,每步长0.01288V的步进分辨率。因为在digipot数据表中,“V+=3V”的一般“全标度误差”和“零标度误差”一般在LSB的0.35处,LSB代表LSB=V+/256,其中V+是被供应到分压器的电压。因此,LSB是以前计算的电压步进分辨率。因此对于3.3V,我们可预期大约下列值的误差范围:

电压误差

digipot被设置为0.0128V*128=1.6384V,真实值被预期在1.638437V和1.638437V之间。因为在这个例子的所印刷的柔性传感器中的电压变化一般不大于0.1V,这个误差完全低于误差裕度。这将是不同的问题,如果对付需要更大的准确度的应变传感器。

图30示出分压器TLE2426的示意图。

分轨器和虚拟地

如在图36中看到的,仪表放大器需要地电压参考。因为Atmega32U4 ADC仅可以在地到AVCC AREF之间获取,意味着它不能检测到如果我们将仪表放大器电压设置到0V则通常将看到的任何负电压。将仪表放大器设置到这个新虚拟地。允许负电压以及正电压的感测。

TLE2426提供一般在170uA处在5V输入的情况下操作的高精度虚拟地。这个设备精确地输出输入电压的一半。为了进一步的准确度,噪声抑制引脚经由1uF电容器连接到地。

分轨器充当分压器,其中Vout=Vin/2。因为分压器的准确度基于两个电阻之比,大部分分轨器被严格控制的电阻容限限制。可在图30中看到作为缓冲器的OpAmp。

虽然TLE2426被设计为在4V和40V之间(如在图31中看到的),它在被供应3.3V时仍然工作。这最可能是由于仪表放大器的无缓冲的地参考输入引脚的低电流消耗。

复用器

第一设计最初适用于74HC4051(8通道复用器,3个数据/控制线),但由于对更弯曲的传感器的需要而之后适用于来自德州仪器的CD74HC4067(16通道复用器,4个数据/控制线)。

外部通信

蓝牙

在这个例子中,由于对与ANT+比较的在当前智能电话用户群当中的标准蓝牙协议的普遍采用以及相对低的能量使用,优先于其它无线技术例如ANT+或WiFI而选择蓝牙。我们最初选择HC-05,但切换到RN42,都是蓝牙2.0模块。这两个模块都可由串行UART通过接口连接到MCU。

扩展(I2C)和额外的特征

加速度计

在一个实现中,使用MPU6050。为了更大的准确度,它具有运动处理单元以合并和结合来自两个传感器的所获取的数据。创建ADXL345的定制分解板(图32),其为必须使用热空气枪回流的LGA(连接盘网格阵列)封装的加速度计。一旦ADXL345被正确地装上,它就装接到I2C线。下面详述它到主处理单元的通信。

触觉反馈

触觉反馈由3V触觉电动机的NMOS开关实现,分压器用于限制电动机接收的最大电流,防止烧坏。此外,二极管放置成与电源相反,以在关闭NMOS门时保护电路不受振动电动机的电感反冲。对于驱动器的示意图,参考在图75的示意图。

固件设计

固件是从处理单元的微处理器的内部闪速指令存储器执行的代码。微处理器基于SparkFun Pro Micro 3.3V/8MHz——Arduino Pro Micro 16MHz的增强。Atmega32U4微控制器包含由Arduino IDE对经由USB的串行通信使用的内部USB控制器。在图33中表示固件Arduino草图的总体结构,图33显示所有主要部件和在设备内部运行的子系统。

调度器

代码的较老版本由执行传感器读取并接着使用Arduino delay()函数来提供在读数之间的间隔的无限“while”循环组成。无线地命令设备经由PWM调度器振动的能力的包括需要调度器循环的使用。这通过在某个预先设定数量的时间过去之后周期性地检查并接着运行特定的函数或例程来在某个程度上允许系统多任务。与原始delay()架构不同,这具有在例程等待下一回合来再次运行时防止停止其它函数的优点。

图34示出当与基于delay()的流程比较时调度器代码如何操作。在基于延迟的流程中,循环执行所花费的时间总是INTERVAL*2。使用调度器,延迟是最小的,只在需要时运行例程函数。调度器的包括提高了设备的响应度。

传感器读取和报告

当信号在来自仪表放大器的输出的ADC电压参考的一半时,来自柔性传感器的进入的电压信号被定义为处于静止。如在图22中看到的,传感器读取例程将需要连续地控制复用器和两个数字电位计,以便有效地读取附着到系统的所有柔性传感器。例子的固件通过如下所示的一组函数来执行在设备中的柔性传感器的读取和报告:

int readSensor(int selectSensor)

这个函数在设置digipot、复用器以及将偏差应用于ADC传感器读数之后输出选定传感器值。来自函数的结果可被预期为从-512到512,其中最大ADC步长尺寸是1024。如果ADC读取512,则readSensor的输出应为0,因为传感器被定义为当仪表放大器在ADC参考电压的中点时处于静止。

图35陈述根据这个实施方式在选择和记录柔性传感器时采取的步骤。

函数setMux()使用两个阵列来控制参数selectSensor到复用器的引脚通道的映射。该映射被级联为g_FlexConnectorMapping[g_FlexStripMapping[selectSensor]]并被使用,因为在PCB上的复用器引脚不以一对一方式相应于ZIF插座。此外在条本身上,ZIF迹线不在一对一基础上相应于在条上的传感器布置。对此的原因是由于避免在PCB和柔性条中的重叠迹线的需要。也通过保持映射作为两个单独级联的阵列,它允许在对源代码的最小修改的情况下的柔性传感器布局的未来修改。

void readAllSensors(int*sensorsBuff)

这个函数使用for()循环来连续地从第一柔性传感器[readSensor(0)]重复到最后一个传感器[readSensor(TOTAL_MUX_CHANNELS-1)]。从在函数参数sensorsBuff中给出的阵列指针中,来自每个readSensor()读数的结果被输入到在sensorsBuff[]阵列中的它的相应位置以作为结果返回。

void readSensorsDetails()

这个函数检查被启用或检测到的柔性传感器和加速度计的数量,并将它以JSON格式打印以便电话应用使用。它允许电话应用知道从设备预期什么并修改它的行为和显示以适合于进入的数据。

void readSensorsAsJSON()

这从readAllSensors()取回最近的值并将readSensor()的整数范围(-512to512)转换成度数的浮点表示。它也取回加速度计值,如果从在I2C线上的加速度计可得到的话。使用加速度计原始x、y、z值,它将这些值转换成总的左到右以及前到后弯曲的度数。这些值可经由蓝牙作为JSON串被发送到智能电话应用。

加速度计处理

读取加速度计值发生在readSensorAsJSON()中。

ADXL345输出三个原始值x、y、z。这些表示沿着x、y、z轴的加速度。因为重力总是朝着地恒定的,可假设在加速度计上的读数是指向下的分量矢量。

这个例子的感兴趣角度是不能单独地在柔性传感器上完成的背部的左到右弯曲。这个处理单元支持充当倾斜传感器的多达两个加速度计。使用两个加速度计,以便可在主体的任何方向处得到背部的实际总曲率。这是通过从来自顶部的加速度计读数获取角度,并从来自底部的加速度计读数减去(图36)。

在测试期间,ADXL345分解如预期地对左到右运动工作,然而数据对前后弯曲是不一致的。这是由于疏忽,当计算左到右度数时,原始计算只采用两个轴,当所有3个轴应被考虑时,例如x将不仅仅在左到右但只前后弯曲时降低。图35示出readSensor()的函数流程图。图37示出从以一致的方式得到角度θ方面来说分量矢量a.b如何与c有关。

//原始角度计算。由于2D思考而引起的错误。

pitch=atan2(z,x);

roll=atan2(y,x);

毕达哥拉斯定理(a2+b2=c2)应被使用以找到对于Z的X相对于Y或对于Y的X相对于Z的分量矢量。图37示出这个概念可如何在空间上被表示。

//修改的计算以将额外的维度考虑到浮点的xy、zy内;

xy=sqrt(x*x+y*y);zy=sqrt(x*x+z*z);

校准

在这个固件中的校准函数在源中宣布为void calibrateSensor(),本身主要涉及找到参考电压digipot的正确值;使得当柔性传感器弯曲到相同的角度时在仪表放大器的正输入和负输入之间的电压差是0V,它在该角度被校准(参考在图38处的流程图,用于查看这个函数如何工作)。

这个函数通过使用readSensor()作为参考朝着柔性传感器的中心点扫描参考电压digipot来工作。参考电压递增以匹配读取传感器。这个过程重复,直到都匹配多达3次或最大尝试数量被达到(不能校准)为止。方便的效应是这个系统不太可能能够锁定到浮点输出。因此我们在切割条时可使用浮点输出的效应以检测有效传感器的数量。可选地,在传感器条上的小下拉将允许默认的低电压。

在适当的参考digipot设置被找到之后,柔性传感器设置被测试3次且输出被取平均。那个特定的柔性传感器的3个硬件校准的柔性传感器值的平均值在readSensor()中用作条的软件偏差。对此的原因是为了弥补不能被参考digipot考虑的任何硬件稳态误差或偏差,这是因为digipot分辨率是仅仅0.01V(3.3V/255=0.01294)。来自ADC参考电压中点的柔性传感器输出变化可以常常小于0.01V,且放大器仍可放大这个差异。

平均花费大约10秒来锁定到感测带,但这根据条结构或在每次试验之间的延迟而改变。存在加速过程的策略。其中之一是使用比例控制系统,与校准的递增方法相反。这通过减小达到平衡所需的步骤的数量来加速过程,因为比例控制系统最初将产生大的增量,然后当它变得更接近中心点时逐渐减小它。简单的递增方法使用AVCC AREF的一半作为初始猜测。柔性传感器大部分时间将在ADC参考电压的中点周围,将digipot设置到中点在校准被实现之前减小了迭代的数量。

为了提高准确度,我们可将两个电阻器放置在数字电位计的上和下引脚上,这使参考digipot付出它的从0V到VCC的全范围,但在这两者之间在准确度方面增加。可选地,可考虑切换到更高分辨率的digipot或数模转换器(因为高分辨率数字电位计可达到高达10位,但高端DAC可达到高达24位)。图38示出calibrateSensor()的函数流程图。

Ram问题

图39示出Atmega32U4 SRAM的总映射。

Atmega32U4包含2.5KB的SRAM存储器。最初,代码尺寸不是问题,然而,当代码密度增加时,随机崩溃开始出现。在市场上有具有较高的价格范围的类似的处理器,其解决存储器约束。

由于Arduino平台的选择,调试努力被限制到将串行打印语句放置在每个地方。怀疑使RAM溢出是个问题,ram检查函数从JeeLab被得到并插入在固件的初始化部分以及标准循环中。可在图40中看到存储器的问题。

准系统代码显示[memCheck]:2377,其与在固件的初始化阶段期间的存储器的109个字节形成大的对比。这指示在Arduino开销之后的Atmega32U4将提供仅仅2.377kB的存储器。这与Jeelabs的文章“诀窍是保持RAM使用低,因为它的不足的资源:ATmega具有仅仅2048个字节的RAM”匹配,这些字节等效于存储器的2.047kB。记住这一点,固件代码被修改以在串行传输之前减小需要装载到RAM的串的数量。

参考图40,当变量被添加并被声明时,所利用的存储器在SRAM中朝着0x1100在尺寸上增长。同时,当更多的函数调用被给出时,堆栈指针也朝着0x1100在尺寸上增长。在这个例子中,推理出打印语句的浪费的使用可能使在大堆阵和堆栈之间的间隙增长得太小,以至于堆栈-大堆阵冲突出现。这意味着存在大堆阵或堆栈被部分地盖写或毁坏的可能性。在大堆阵的情况下,它意味着调度器将花费未规定数量的时间来触发下一间隔。对于堆栈,返回到从毁坏的堆栈的顶部参考的地址将可能跳到随机指令空间内而不是原始位置,函数从该原始位置被调用。

固件崩溃的所注解的(经由“>>”)一般征兆。freeRam()被插入以监控自由存储空间的数量。

>>>'...'代表省略的输出。

{"fBA":[94.22,98.61,110.92,68.38,-91.23,-78.93,-104.06,...

...

@SYSTEM STARTED@

"freeRam":[109],

"freeRam":[438],

{"fBA":[-71.89,-71.72,-68.91,-111.45,-125.51,-100.55,-1...

"freeRam":[427],

>>程序在此时崩溃

来自JeeLab的代码碎片,其测量自由RAM的数量

int freeRam(){

extern int__heap_start,*__brkval;

int v;

return(int)&v-(__brkval==0?(int)&__heap_start:(int)__brkval);

}

协议和通信

这个例子的硬件使用具有它们自己的要求的一定范围的部件。

USB

USB是定义物理连接器、功率和协议标准的计算机和设备的高度流行的连接标准。

物理连接器

USB标准的重要方面是具有一致的物理接口或端口,以便存在将设备连接到很多其它类型的设备的可靠方式。在这个例子中,我们使用存在于很多消费设备中的无所不在的微USB端口。下面是标准USB引脚配置。

USB功率

USB的主要出售特征是,它是携带功率连同信令的几个标准之一,与较老的串行和并行端口不同。根据USB标准,只有5V可被供应。

选择与桶塞(barrel plug)或其它标准相对的微型USB的主要原因是USB充电的无所不在。这本质上意味着用户将从来不太可能没有端口给他们的设备充电。在专用插座方面的这个减小使E废物的数量减小。

USB还允许新代码容易被上传,且串行控制台通过USB访问。这些特征通过去除对外部编程者的需要在装入Arduino引导加载程序之外允许快速原型设计。除了通过USB的串行访问以外还对最终用户允许未来的升级,以实现对在I2C总线上的新附件的访问或修复在固件内的故障。

UART和USART

USART代表通用同步/异步接收机/发射机。UART是通用异步接收机/发射机。在这个通信标准和其它有线标准例如I2C或SPI之间的显著差异是,USART和UART不需要专用时钟信号来用信号通知新位的到达。替代地,时钟由数据传输本身的速度确定。这个速度由在连接的每端处单独地设置的匹配波特率确定,在波特设置中的任何失配可导致数据毁坏。

USART将接收引脚定义为RX而将发射引脚定义为TX。因此对于全双工通信,你需要将一个设备的TX连接到另一设备RX引脚,反之亦然。对于连接布置的例子,参考图42。

Atmega32U4具有被描述为“具有硬件流量控制的可编程串行USART”的外围特征。USART还具有传输作为主信号的时钟信号或接收作为从信号的时钟信号的能力,这个同步模式与异步模式比较允许较快的传输。因为传输速度较小,USART在这个例子中配置成只在异步模式中操作。

例子的设备微控制器由USART连接到外部蓝牙模块。TX的电压输出相应于其它设备RX的额定输入。忽视这个要求带来烧掉在另一端上的UART设备的RX输入的危险。波特率设置、奇偶性和流量控制模式应在两侧上是相同的。

EWo3设备以9600波特速度通过USART进行通信而没有硬件流量控制。

在Arduino中,串行对象的波特率由这个函数Serial.begin(BAUD_RATE)设置,其中BAUD_RATE一般被设置到9600的值。当你选择较高的波特率时,在两端上的振荡器足够准确很重要。这意味着不可能在没有校准的情况下使用Atmega32U4的内部RC振荡器。

为了经由Arduino通过USART发送一串字符,输入:

>>Serial.print(hello);//串行地打印串

>>Serial.print(hello);//用新行字符打印

蓝牙

蓝牙是用于与本地低功率电子设备的短范围个人区域联网的无线通信技术。它常常作为移动电话无线头戴式耳机使用。

在这个例子中,蓝牙用作将处理单元连接到智能电话的方便方式。到2013年时为止存在蓝牙的两个版本:蓝牙标准和蓝牙低能量(BLE)。BLE将是未来几年中的首要选择,因为它的较低功率消耗和用户容易连接到这样的设备,尽管它与标准蓝牙相比数据传输容量较低。

然而,即使BLE是对这个应用的更好选择,这个协议也没有在标准蓝牙中存在的默认串行配置文件(SPP),且我们的优先级对于简单和可靠的通信协议而言更高,与具有较长的运行时间的设备(由于更好的能量效率)相反。

漫游网络RN42

RN42是具有26uA睡眠、3mA连接、30mA接通传输模式的低功率蓝牙收发机。这是从最低8mA的HC-05待机连接电流到25mA的平均电流的显著提高。

RN42使用极快的115200的不同波特率。为了减小波特率,完成此的容易的方法是设置RN42的引脚2(其相应于GPIO7)以迫使板在9600波特下运行。然而这以允许将波特率软件重配置到较高的水平(例如115200)的未来灵活性为代价出现。

图43示出根据RN42数据表的引脚分配以及板的平板扫描底侧尺寸。

第二种方法是添加代码,其在重置RN42(其将提供用于进入配置模式的60秒窗口)时以非永久方式将发送配置命令发送到RN42。

最后一种方法是手动地进入关于第二种方法的配置模式,但不是发出临时命令,持久性SET命令是可得到的。这是由于在让临时设置工作时的技术困难而用于最终PCB的东西。图44示出SPI如何由具有时钟和芯片选择的移位寄存器的环组成。

命令集参考;

SU,<rate>

波特率,1200、2400、4800、9600、19.2、28.8、38.4、57.6、115K、230K、460K、921K,只有前2个字符是需要的。例子:SU,57将波特率设置为57600波特。SU,96是我们用于将我们的中断设置为9600的东西。

S-,<name>

设备的串行化友好的名称,最多15个字符。这个命令将蓝牙MAC地址的最后2个字节自动附加到名称。对产生具有唯一编号的定制名称有用。例子:S-,MyDevice将名称设置为MyDevice-ABCD,这些是两个最可能被寻找的命令,如果设法为特定的应用持久地设置RN42。

SPI(串行外围接口)

SPI总线是为在IC(例如微控制器)到数字电位计之间的通信设计的简单串行接口。

图44示出大部分SPI设备的一般视图。实际内部电路和每个设备如何对芯片选择CS#做出反应可以不同。因此查阅数据表以找到如何与每个芯片通信的确切规定非常重要。

处理单元digipot支持SPI接口。它经由用于参考的上面的图被最好地显现,因为两个移位寄存器作为环形存储器结构被连接。为了将字节从主寄存器转移到从寄存器,每个位在每个CLK(时钟)周期上顺序地从移位寄存器的一个集合移动到另一移位寄存器,直到所有位都在从移位寄存器中为止。

对于这个特定的digipot(MCP42100双100千欧姆SPI digipot),它使用芯片选择引脚来确定何时执行下一命令。只有在将所有位从微控制器移动到digipot移位寄存器并接着使它的CS#引脚变高以让digipot知道它不再驱动MISO线(MISO线将是三态的,使得总线是空闲的以使其它SPI设备再次使用)之后,digipot才设置它的电阻。

CS#:芯片选择

让从芯片知道它是否被交谈。当CS被拉高时,从MISO引脚断开。

CLK:时钟

时钟信号指示下一位准备被移进。

MOSI:主移位寄存器出去,从移位寄存器进入

这个引脚允许从芯片在CLK边缘(上升或下降,取决于规范)上接收被移进其内的位。

MISO:主移位寄存器进入,从移位寄存器出来。

这个引脚允许从移位寄存器在CLS边缘上将它的位朝着主移位寄存器移出。

如果考虑IC,则相当可能遗漏MISO。但只有当主移位寄存器从不预期收到来自从移位寄存器的回复时。这是为这个例子做出的选择,用于到digipot的SPI通信,digipot仅仅是输出设备且因此我们不需要知道它的当前状态。

对在SPI中的多个芯片寻址:下面是与SPI通过接口连接的两个最常见的方法。还有被称为mSPI的第三种方法。

芯片选择

在这个方案中,所有SPI从移位寄存器被连接到公共SPI总线(CLK、MOSI、MISO),且每个从移位寄存器从如图45所示的主移位寄存器由单独的芯片选择线寻址。多于4个从移位寄存器将需要数字复用器(具有否定的输出,因为CS#是低态有效的),其中第一引脚不被连接,使得所有从移位寄存器可被断开。

菊花式链接

如果时间不是关键因素,且PCB布线空间非常珍贵,则存在将一个芯片的MISO菊花式链接到另一MOSI输入的选择,如在图46中看到的。这意味着如果每个从移位寄存器是8位长,则将额外的从移位寄存器添加到SPI线将在理论上增加额外线性时间量。

MCP42100

MCP42100双100千欧姆digipot是SPI设备,其具有在它的数据表中示出的它自己的命令规范。去往digipot的命令采取两个字节(字节=8位)的形式。如图47所示,第一字节代表待执行的命令(命令字节),而第二字节代表将在命令中使用的值(数据字节)。

图48指出除了写命令以外,还可能有断开digipot通道pinA和使B和C一起短路的停机命令。

存在以二进制形式的Digipot写命令。其中可做出这些组合:

经由bit banging传递到MCP42100

虽然研究关于如何传递到MCP42100,最初决定避免SPI总线的使用。这是因为存在用于MOSI、CLK和CS#的足够额外的引脚,以及存在当首次装入Arduino引导加载程序时避免与外部ICSP编程者的任何潜在冲突的要求。这由bit banging实现。

经由Arduino SPI.h传递到MCP42100

在这个例子中,由于在PCB上的空间约束,决定使用与Arduino IDE包括在一起的SPI.h库用于与SPI设备通信。这个方法的益处是,库利用微控制器的内部SPI核心,加速到digipot的通信,因为SPI核心将自主地发送在它的缓冲器中的任何字节。

为了帮助保持Arduino草图干净且为了未来的可扩展性,digipot代码被整理到库内。

在使用之前建立Arduino SPI.h。应设置SPI.setBitOrder(MSBFIRST),其指示字节的最高有效位应首先被发送。如果在一些SPI设计中最低有效位需要首先被发送,则LSBFIRST代替MSBFIRST。

接着,应设置SPI的模式,其指示微控制器在通过SPI与从移位寄存器通信时应解释的时钟极性和时钟相位。时钟极性是CLK在空闲时应在什么状态。时钟相位是数据是否被锁在CLK的上升沿或下降沿上。

注意:

CPOL:0=“低空闲”;1=“高空闲”

CPHA:0=“上升沿”;1=“下降沿”

参考源:[34]

参考图47中的时序图并对照图49进行比较,为时钟相位选择正时钟极性和正时钟沿将是最好的。

SPI.setDataMode(SPI MODE0);通过下列操作来发送字节:

SPI.transfer(byte);//其中字节是待发送到从移位寄存器的字节。

图50示出I2C设备的一般布线。注意,存在对SCL和SDL的上拉电阻器的强制需要。

I2C(电路间通信)

I2C是Philips的专用外围总线,且标准由两条线组成——一条时钟和一条数据。这个设置的优点是,数据线是双向的、时钟控制的和带总线的。标准的同步性质意味着设备I2C处理机的复杂度与UART/USART相比被简化了。时钟控制的数据不依赖于定时,且因此需要较少的逻辑。由于待布线的电线的减小的数量,与SPI比较,双向性以及芯片选择的缺乏意味着减小的PCB复杂度。还有在市场中的I2C设备的广泛支持和选择的优点,使这几乎与在工程术语中的“即插即用”一样简单。

ADXL345 I2C通信

姿势感测设备使用I2C来访问I2C加速度计ADXL345。创建基于Wire.h Arduino标准库的库,其对从两个加速度计读取的能力是有帮助的。

在ADXL345.cpp库中的关键点:

Wire.beginTransmission(i2cAddress)建立到I2C地址的连接。I2C地址指加速度计的地址。

Wire.endTransmission()告诉Arduino结束连接,且还显示它在什么变量处。

writeToReg(DATA FORMAT,0x01)将范围设置到-+4g。对于相应的位位置及其含义,参考图51。

writeToReg(POWER CTL,0x08)打开测量位,将POWER CTL中的测量位设置到1以启用测量模式“0的设置意味着待机模式”、“1意味着测量模式”。ADXL345默认在待机模式上。对于相应的位位置及其含义,参考图52。

readFromReg(byte(0x32),6,accBuff)将寄存器指针设置到0x32,并将6个字节读到在accBuff处的字节阵列(又称对accBuff[0]的指针)。可能从一个调用得到x、y、z的所有3个整数值,因为在图51中的结果寄存器显示在0x32到0x37之间顺序地取回字节将对所有3个轴到达所有数据1和数据0结果寄存器。

图52示出ADXL345 POWER CTL寄存器形式。

图53示出ADXL345 DATA FORMAT寄存器形式。

图54示出被用作复用器通道选择的S0到S3。

并行信令

并行信令用于控制在最终PCB中使用的CD4097 16通道模拟复用器。沿着控制线S0、S1、S2、S3发送4位信号,如在图54中看到的,其中S0是最低有效字节(LSB),以及S3是最高有效字节(MSB)。使用4个控制线,可控制16个通道。控制线中的变化导致在复用器通道中的几乎即时的变化。

控制复用器的代码——这个函数将通道选择值分成它的相应位以切换复用器的控制线。

电话应用

例子涉及创建消费产品。为了降低成本同时增加采用,使设备信息在日常智能手机而不是专用显示设备上容易显示给用户很重要。

图55示出PhoneGap应用的用户界面的线框草稿图。左:前-后弯曲。又:左到右弯曲。

智能电话应用将最终涵盖占主流的智能电话生态系统、Android和iOS。主要由于没有要进入的金融屏障,被选择用于开发的生态系统是Android。iOS需要加入MFi程序来使用蓝牙2.0。

移动开发

1.经由蓝牙连接到处理单元

2.重构并显示来自传感器数据的脊椎曲线

3.保存用户的最佳位置

4.当脊椎不在最佳位置时提供视觉和触觉反馈

使用下面的开发工具。

Native Android SDK使用Java,具有陡峭学习曲线,但具有大部分特征和灵活性。

PhoneGap(Apache Cordova)是通过Adobe,一种使用HTML5和JavaScript的交叉平台开发工具。蓝牙插件是可用的,包括设备特定特征例如硬件Android硬件支持和NFC。

Icenium(Apache Cordova)也是在Cordova上构建的变形。Icenium与PhoneGap及其插件兼容。

Unity的交叉平台3D引擎通常用于游戏开发。没有预先存在的蓝牙库。

Corona Labs SDK是使用C++和OpenGL之上的LUA的交叉平台。蓝牙支持是模糊的。

Appcelerator Titanium SDK是独立的基于HTML和JavaScript的平台。蓝牙系列插件由第三方开发,且需要以席位的形式授予许可证。

以重要性的顺序的选择标准

1.蓝牙系列支持

2.容易使用,但对文档编制是灵活的

3.进入的成本

4.编程语言

PhoneGap

PhoneGap在这个例子中被选择为用于原型设计的开发平台。后原型设计电话应用将在它们的本机平台例如iOS和Android中被构建。PhoneGap的主要原因是可访问的文档的数量和对蓝牙系列配置文件的现有支持。HTML和JavaScript都是非常强大的视觉语言,尽管是较不语法严格的。通过在web采用中的增加,与本机代码比较,JavaScript引擎现在在速度上是可比较的。图56示出PhoneGap架构。

PhoneGap由phonegap.js——充当在应用的JavaScript和本机OS Java之间的翻译器的JavaScript库——组成。除显示应用之外的任何功能例如硬件按钮支持或蓝牙经由PhoneGap插件来完成。

智能电话应用

参考JavaScript和样式库,整个应用被包含在一个HTML文件内。因为应用是网页,在HTML文档对象模型(DOM)内的所有操纵必须通过JavaScript来完成。应用使用来自HTML5和CSS3的最近版本的元素。

操纵DOM

通过使用JavaScript框架如jQuery用于DOM操纵,可能通过用单个语句运行多个查询来将查询“链接”在一起,允许具有更少行的代码的更多功能。

${element-type}.selectingElementByIdentifier().action1().followedByAction2();

大部分功能是英文命名的,其连同链接一起使自我文档编制变得简单明了。忠于交叉平台基本原理,框架使OS兼容性变得更容易管理。

智能电话应用利用被称为tt.js的jQuery语法兼容库——特别为移动设备设计的基于选择器的查询的高速实现。决定基于在应用、html和addClass功能内的最常用的jQ查询的性能。通过使用jQuery语法,任何兼容库可用作直接简易替代者,例如在努力期间的Intel App Framework(主要发起者)。

tt.js库由两个部分——TTWorker和tt.object——组成。这两个部分都在应用内被使用。

TTWorker涉及选择元素和类,设置视觉风格和DOM操纵。

tt.object处理所有非视觉功能,包括分析JSON、AJAX装入和阵列操纵。

图57示出.html和.class函数的流行jQuery语法兼容库的基准。条越高越好。

画布元素

图58示出画布元素。测量单位是像素。原点(0,0)在左上角上。画布是500x375个像素。右下角位置是(500,375)。画布是图形元素容器,其通过使用HTML5画布API的JavaScript来允许操纵。画布上下文对象是需要的,2d或webgl(3D),其包含渲染图形所需的方法和特性。每当画布被调整大小时,内容被清除。动画需要画布的清除和在每个新帧上重画,因为没有现有图形或所存在的线的所存储的存储器特征。

图59示出javascript画布库的比较。虽然本机JavaScript可用于控制画布元素和DOM,有容易可得到的画布库,其简化难的功能以使画布更容易操纵。在本机JavaScript中,与可采用数据作为对象或嵌套阵列的库的使用比较,绘制线涉及x和y坐标[40,20],[20,52]...的严格语法。

PaperJS画布库

存在可用的大范围的画布JavaScript库。虽然JavaScript库为开发者提供灵活性,这可能有时以性能为代价出现。jsperf.com用于比较不同库的性能。虽然每个库具有它自己对特定的一条代码的实现,它可提供粗略估计。

库PaperJS以与本机速度可比较的速度比其它库更好地一致地运转。基于流行的Adobe Illustrator插件Scriptographer,它具有在示例网站上有详细的文档的非常广泛的功能库。另外,它还具有强大的特征,例如简化点以节省计算功率。折衷是,库是相对新的,但在主动开发之下;一些基本功能例如立即响应式动画还没有被开发。在JavaScript内的PaperScope作用域的使用对于专家是有利的但对于新开发者是不利的。图60示出Javascript和PaperScript作用域。

每个单独的画布元素被分配它自己的PaperScope。通过有具有PaperJS的被定范围的PaperScope,它不用变量污染全局公共命名空间,且它也意味着不同的PaperScript代码可同时运行而彼此不冲突,这对多个画布或涉及类似的变量名称的并行操纵是特别有用的。

作用域特征是一个难的概念。当PhoneGap使用JavaScript时,它不能直接访问在PaperScope中的变量。为了使用具有一般JavaScript功能(或JavaScript库如jQuery)的PaperScript,可使用在PaperJS的特征之前的存在于全局命名空间/javascript空间中的当前PaperScope。

一种方法是将每个PaperScope存储为JavaScript对象,例如mypaper[0]、mypaper和切换,在操纵每个画布元素之前将每个PaperScope安装到全局命名空间内。

Zack Grossbart的代码被张贴在PaperJS Google组内。loader.js文件是使多个画布的切换容易地自动化的函数,同时为了整洁也保持每个paperscript在单独的.pjs文件中。

loader.js

这个代码的函数检查外部PaperScript.pjs文件和画布是否是有效的和存在,都通过AJAX被装入并附着到在焦点上的选定画布。在选定的.pjs文件内的代码然后被评估。

Javascript和Paperscript互操作性

默认地,由于被定范围的结构,PaperJS不能在本机与JavaScript变量一起工作。在PaperJS的网站上的Javascript互操作性参考页面还有待由开发者完成。为了使PaperJS与本机JavaScript一起工作,变量必须放置到由PaperJS开发者建议的全局命名空间内作为interm解决方案。变量必须被分配到全局命名空间“窗口”内。不仅这暴露具有JavaScript的一组PaperScript,而且通过有中央数据存储器来允许在画布/PaperScope之间的数据的共享,而不经由loader.js函数传递数据。图61示出JavaScript、PaperScope和窗口全局变量(数据存储器)。

触摸事件

在智能电话之前,为具有鼠标光标的桌上型计算机设计HTML和Javascript。JavaScript只支持点击而不是叩击。在智能电话上,这引起在响应中的延迟和/或对每个按钮需要双叩击。通过使用触摸框架,叩击和手势响应可对最终用户在本机速度下在网页应用内被识别出。使用Hammer.js,一种jQuery语法友好的手势框架。虽然不是jQuery集合的部分,链接可以类似的语法风格完成。

Bluetooth.Serial PhoneGap插件

应用利用由Don Coleman开发的Bluetooth.Serial插件。插件充当具有默认的Android蓝牙堆栈Bluedroid的翻译器。蓝牙命令经由JavaScript被发送并转换成对智能电话上的蓝牙无线电的本机命令。支持从2.0到4+的Android版本。应用利用下面的数条代码。

bluetoothSerial.subscribe

这例示长运行回调以在背景中运行,这在任何新数据由处理单元接收到时触发。预订函数管理bluetoothSerial.readUntil和读/写缓冲器。

bluetoothSerial.write

经由蓝牙发送文本。成功的回调被调用,如果成功地被发送。

bluetoothSerial.list

扫描以前成对的蓝牙设备的区域并返回JSON格式的数据。这个数据随后被处理成用户要选择的列表。

bluetoothSerial.connect/disconnect

允许与选定设备MAC地址的连接/断开。

应用功能

由于对PaperJS的范围的限制,有由方向(前面和侧面)分离的4个画布元素以允许同时画布绘制和操纵,例如:更新一个曲线/画布并不意味着重新绘制其它曲线/画布。因为每个曲线用新数据被更新,PaperJS重新绘制整个画布。这在高频率下动态地被处理。

应用具有校准到最终用户的最佳脊椎并检测从这个位置的任何偏差的选项。每当你使用应用时,最佳姿势参考只被更新一次或两次,因此不需要以每个数据更新连续地重新绘制,对于每个方向将处理的量减小了一半。最佳姿势参考画布在数据曲线之下是直接分层的以给出单个画布元素的外观。

在文档准备好时

这类似于具有jQuery的onDOMReady。一旦电话应用被装入设备中,建立查询的下面的部分运行。这建立并捆绑硬件密钥、bluetoothSerial.subscribe回调Hammer.js以检测触摸。

将数据转换到JSON

由处理单元发送的数据是JSON格式的文本串。一旦接收到新数据,就将串解析成JSON格式。这发起画布操纵。

计算曲线位置

通过三角学从底部位置完成曲线位置计算。代码计算在数据对象中接收的数据点的数量,并评估脊椎的长度。使用PaperJS内置平滑化函数来简化曲线,并在画布内显示因而产生的脊椎曲线。

触觉反馈

经由指定的单字符串将信号发送到处理单元。代码可从变化的一系列脉冲和振动功率选择。

从最佳姿势计算偏差

图62示出从用户保存的最佳姿势位置计算偏差。

图63示出移动应用的3D表示。对每个曲线有单独的画布。每当新数据被发送时,在曲线被显示之前,PaperJS代码运行比较检查以查看沿着身体的某些点是否落在按照距离测量的容限阈值内。如果距离大于容限,则它将经由蓝牙触发在处理单元内的触觉反馈信号,后面是图的视觉颜色变化。一旦从医疗专业人员得到适当的阈值水平,多个点就可用作比较。这个配置文件可保存在应用内,且额外的参考配置文件可动态地被装入,这将使它对特定的姿势例如运动或瑜伽变得可能。

性能

对子像素四舍五入

HTML画布支持子像素渲染/抗混叠,如果所供应的数据点为浮点数的形式。这引起在各种浏览器例如iOS和Mac平台中的性能问题。因为我们的计算点的公式有时给出非整数值,则四舍五入可能是增加速度的必要选项。

选项涉及使用内置Math.floor四舍五入或电算(hacks)。电算看起来执行得更快,例如将0.5加到数字,并使用逐位移位去尾到零小数点。

rounded=~~(0.5+somenum);http://jsperf.com/math-round-vs-hack/3

使用查找表而不是JavaScript.Math函数

计算曲线点在计算上是昂贵的。目前,每当更新曲线时,使用内置JavaScript数学函数。使用查找表来代替正弦和余弦函数的思想。如果使用数学函数作为数据以度数给出,则除了三角计算以外,我们还需要关于浮点Math.PI(或缓存的舍入值)将度数值转换成弧度。

var cosLUT=[度数的预先计算的值]cosLookup(角度):取角度作为在角度/第n个位置处的cosLUT返回值中的第n个位置。

函数的输入填充阵列(阵列第n个元素=度数查找)。函数也将需要考虑负度数,且额外的条件语句是需要的。这产生变化的结果。http://jsperf.com/testing-lut-neg-and-trig-functions。

最初,查找表LUT技术明显比使用数学函数快。对Chrome 30.0的测试导致与OS平台更一致的LUT优点。在Samsung Galaxy S2上,数学函数比LUT快18倍(18M Op/sec)。与具有更多小数位的测试比较,具有到5dp的舍入LTU值的单独测试显示一致的增加。这种方法被置于保持状态,直到更一致的测试可被完成为止。

For循环效率

每当数据的新集合由MCU经由蓝牙接收到时,从所获取的数据计算曲线点的循环运行。这条高频代码因此需要非常快,以便节省计算功率。通过增加计算/秒的数量,曲线绘制的速度可明显提高且负载减小。

图65示出jsperf.com基准,很多循环实现是可用的。循环性能基准。

当前函数的格式是旧的n busted。在不重写缓存for循环运行到的长度的初始参数的情况下,我们可将操作/秒增加为1.5倍。While实现是负计数器(与0比较,不是像len一样的变量),其可减小计算周期。虽然我们的曲线点循环是不同的,这个小加法允许我们处理此,而没有对当前代码的急剧变更。注意:这根据哪个浏览器被使用而改变,因为不是所有JavaScript引擎都同等地被创建。此外,i++和++i递增以相同的方式工作。

图66示出:左:无子像素渲染(混叠的),右:抗混叠用于使子画面平滑,因为原点不是设定的整数。

跨越iOS和Android两者的WebView的某些实现支持在画布上的点的浮点数。WebView以抗混叠的形式渲染跨越最接近的多个像素的这些实现。这导致额外的计算以使图形趋于平滑。在我们的情况下,大部分计算在小数位中,因此这也是聚焦于加速应用的另一领域。

蓝牙错误检测

虽然最初有蓝牙字符遗漏问题,我们考虑是否将循环冗余校验添加到JSON串的末尾作为后缀以检查JSON串本身是否是有效的。移动应用将对JSON串编码并比较它与所附着的CRC。仅当通过该校验时,数据将由曲线更新器函数处理。对这两者中的任一个的任何破坏将导致串被丢弃。这被认为是安全故障。危险故障是校验和及数据都被破坏,使得它们都是一致的,但它的概率可通过增加校验和长度而被最小化,以较长的串可触发更高的概率为代价。这种方法被抛弃,因为蓝牙插件被更新以将这个错误完全排除在外。

测量装备设计

为了帮助加速测量,创建手动装备和自动装备。对于手动装备,请参考附录A.3。

自动装备

对于自动装备,它由泡沫基组成,6V伺服电动机装配到Sparkfun 3.3V pro微板。电压读取经由Sparkfun 3.3V pro微板自动完成。对于电阻读数,手动地读取标准多用表占用很多小时。

图67首先示出测试柔性条的自动装备并其次示出测试光折柔性传感器的自动装备。

从伺服准确度方面说,它取决于伺服电动机的角度。它在零弯曲或位置90(0到180)或0(-90到90)处是最准确的,可预期+-1度的容限。然而,当朝着伺服电动机的任一侧移动时,容限分开高达+-8度。

关于对这个例子的测试的评论

对于加速度计,左到右运动如所预期的工作,然而这被来自前后感测的结果干扰。

至于柔性传感器,输出具有良好的DC性能,但运动是抖动的。这可通过使用平均值例如指数运动平均滤波器来解决。不幸的是,由于因微控制器ram的缺乏引起的实现问题,没有成功地将EMA滤波器实现到微控制器上。

调零校准工作得很好,这意味着静止弯曲能够在所有试验一致地达到。柔性传感器响应的幅度也表现为一致的。

从电话应用方面来说,应用能够接收并分析JSON命令以显示曲线。它也能够“软件”校准到标称脊椎曲线,使得应用知道何时触发警报。这个警报可在视觉显示器中被显示为指示器,或在姿势感测设备上被显示为振动通知。

图78描绘根据本发明的示例条,其示出外部接触点781、电介质(顶层)782、银导电油墨783和785、衬底784、碳电阻油墨786和在反向侧上的身体粘合剂787。图79描绘示出水平移位的根据本发明的示例条。图80描绘示出对角移位的根据本发明的示例条。图81描绘示出垂直移位的根据本发明的示例条。

在一些优选实施方式中,条传感器衬底的厚度(例如也在图20中示出)小于100微米,且优选地60到80微米,且在一些优选实施方式中,它是大约75微米。在一些实施方式中,可使用衬底例如CT3(Autostat)。然而,在更优选的实施方式中,允许额外的多维运动。

在一些优选实施方式中,提供传感器条,其包括:

1.多维表面;

2.碳电阻油墨;

3.导电油墨;

4.介质盖;

5.用作在人体上的传感器的身体粘合剂;以及

6.可移除的粘合剂背衬。

图78-81示出静止位置(例如在施加之前)和然后传感器条的组合的水平移位、对角和垂直移位。这些运动也可组合地被考虑,提供类似于人类皮肤或衣服的多维能力。所指示的方向意指在衬底或打印油墨的撕裂出现(这将使传感器变得不准确)之前在衬底的限制内的3维移位或拉伸

图82-84示出示例实施方式,其中对不同的身体部分利用本发明的条。虽然本发明的条可与身体的任何部分一起被使用,但特别适当的身体部分包括:背部的部分、肩膀和颈部,但还有肘、膝盖、踝。经历RSI(重复性劳损)的身体部分和身体内的关节都是该技术的所有可能的扩展。根据本发明的条可被修改以适应特定的身体部分和可用于注册并提供对独特的身体部分的响应的移动应用。在一些实施方式中,本发明包括一个或多个身体部分的测量和/或跟踪,其可同时发生。

图85描绘包括在条和发射机之间的直接连接的本发明的一个实施例的使用。这样的实施方式的益处包括例如允许它被存储用于现成的访问,例如在戴着条的个人的口袋中。

示例条测试

下面的测试过程被执行并产生下面阐述的数据集。

1.在粘合条上的电阻和导电油墨附着到志愿者的脊椎;

2.这个条连接到微处理器传输设备;

3.传输设备使用蓝牙来连接到移动电话;

4.传输设备针对条上的多达16个传感器中的每个将原始电阻数据实时地传输到移动电话;

5.移动电话运行应用,其首先在人的自然脊椎位置处被校准;

6.移动电话应用核对实时电阻数据并提供视觉展示并警告用户是否“脱离姿势”;以及

7.移动电话应用记录数据以及因而由条经由传输设备提供的数据的历史。

表1–测试事件的定时

表2–通道1-8的在每秒处的电阻值(欧姆)

表3–通道9-16的在每秒处的电阻值(欧姆)

表4–跨越通道1-16的总电阻值总电阻值(欧姆)

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1