7092|2

124

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【LSM6DSOX有限状态机例程学习 五】--自由落体(Free-Fall) [复制链接]

 

大家可以想象下这个场景,你和你的朋友们去爬山,到了山顶发现风景不错,于是想给他们拍张照片。

 

你让大家站好位置,摆好姿势,透过手里黑卡7代相机的取景器发现大家姿势摆的不好。于是你将黑卡放在身后的石头上,先要上前给大家摆姿势,就在这时….

 

 

你身后的黑卡相机没放好,从石头上滑下去了

 

但是它的镜头还在外面伸着(卡片机伸缩镜头),掉地上戳到镜头必然坏掉,怎么办!?

 

嗯,没错。 跌落自由落体检测功能将能挽救镜头一命~经测试,Sony RX100(黑卡)确实有这么个功能设计。

 

所以本帖讲解下官方例程中的自由落体检测(Free-Fall)。

 

大家明白了这个应用场景了,那么结合实际的坠落情况来分析下如何进行检测。小学二年级的物理学中有讲到 在不考虑空气阻力情况下,物体自由落体运动时,自身所受到的加速度合小于g,当速度恒定是,加速度为0。那么基于这么个原理,我们就可以设置一个阈值,使连续一段时间内传感器的三个轴加速度都小于阈值区间,便可以感知自由落体,如下图红色区域内:

 

接下来我们来看下官方例程是如何实现的:

 

S0 CMD MSKIT

第一条指令之前有提到过,是在更细OUTS寄存器的时候屏蔽中断,目的为了S2指令静默更新寄存器。

S1: CMD SELMB

这条命令为选择MaskB的值作为输入轴信息,也就是0x00,目的也是为了S2指令重置OUTS寄存器吧。

S2: CMD OUTC

此时使用OUTC来讲MaskB的值传输到OUTS中,重置寄存器。

S3: CMD SSIGN0

这条指令是配置无符号比较功能,也就是在对每个轴和阈值的比较时,不考虑符号。

S4: CMD SELMA

这条指令选用MaskA的值作为输入轴信息,也就是X+ X- Y+ Y- Z+ Z- 都被选上了。

S5: RNC GNTH1 TI3

条件判断指令,GNTH1 输入轴数值大于阈值1时成立,也就是如果输入轴值小于阈值1且保持了Timer3的时间后,则跳转到S6,否则跳回S0.

S6: CMD UMSKIT

这条指令用于接触MSKIT的屏蔽作用。

S7: CMD SELMC

这时选择MaskC的值作为输入信息,也就是V+ ,这里的V是三个轴的加速度矢量和,也就是模值。

S8: CMD OUTC

此时是有OUTC将MaskC的值写入OUTS寄存器中,并且产生外部中断。

S9: CMD GNTH1 NOP

条件判断指令,GNTH1 输入轴数值大于阈值1时成立,也就是当V+ ,这里的V是三个轴的加速度矢量和,也就是模值大于阈值1之后返回S0,由于前进判断条件为空,因此程序不会执行S10指令。

S10: CMD STOP

 

程序整体的运行流程图就如下:

 

分析了下例程代码之后,可以得出当传感器坠落并且保持了timer3的时长之后,传感器就会识别到坠落并产生中断,那么此时相机将镜头收回,就能够减少损失了~

最新回复

约你去爬山,文章有意思。   详情 回复 发表于 2020-9-7 19:42
点赞(1) 关注
 
 

回复
举报

530

帖子

4

TA的资源

一粒金砂(高级)

沙发
 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

约你去爬山,文章有意思。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表