手机距离传感器原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
手势挥控功能原理及调试说明 (1)
一、结构示意图 (1)
二、手势识别原理及算法 (2)
1. 手势识别原理 (2)
2. 软件流程图 (2)
3. 软件算法 (4)
1)左右挥控手势 (4)
2)按压手势 (5)
4. 手势识别函数流程图 (6)
三、手势挥控功能调试方法 (7)
1. 所需数据 (7)
2. 需确定阈值、计数值的意义及确定方法 (7)
手势挥控功能原理及调试说明
一、结构示意图
发射装置
图1俯视图
图2纵切面图
二、手势识别原理及算法
1.手势识别原理
手势识别模块开启后,采用分时复用的方法,在一个时间片内只有发射装置1发射,此时接收传感器就可以用接收到的反射值S1来表示遮挡物与发射装置1之间的距离。反射值越大,距离越小。同理在下一个时间片内只有发射装置2发射,S2表示遮挡物与发射装置2之间的距离。以10ms为周期扫描两个反射值,得到多组数据。根据这两个反射值的多组数据及其随时间的变化情况,计算挥控手势模式(左右挥动手势,按压手势)。
2.软件流程图
图3手势挥控流程图
3.软件算法
1)左右挥控手势
图4左右挥控手势数据示意图
左右挥控手势识别算法的基本原理为:手掌左右挥动时,从左右摆放的两颗发射装置上所得出的反射值均有从小到大再变小的过程,但是时间上会有间隔。若手掌由左向右挥动,则从左边发射装置上得出的反射值S1的最大值在前,而从右边发射装置上得出的反射值S2的最大值在后。如图4手势挥控数据示意图所示,分别设置发射装置1的高低阈值PS_TH_L_LED1和PS_TH_H_LED1以及发射装置2的高低阈值PS_TH_L_LED2和PS_TH_H_LED2。S1曲线与发射装置1的高低阈值四个交点的时间分别是t1,t2,t3,t4。则S1峰值的时间坐标为T1=(t1+t2+t3+t4)/4.同理可得出S2峰值的时间坐标T2.若T2>T1则挥控动作为从左到右,反之为从右到左。
2)按压手势
图4按压手势数据示意图
判别按压手势时只用一个发射装置(LED1),得出反射值S1。做按压手势时S1随时间的变化趋势是逐渐变大,据此可以得出手势信息。为了使按压手势与左右挥控手势区分开来,设置低中高三个阈值。PS_TH_L_LED1为低阈值,同时也为中断阈值。PS_TH_L_D1为中间阈值。PS_TH_H为最高阈值。左右挥控手势时S1不可能达到此值。
按压手势的得出需要满足以下两项条件:一是S1需要在低阈值和中间阈值之间停留足够长时间(PS_TH_T);二是S1需要大于最高阈值PS_TH_H。设置中间阈值的作用主要是识别S1由小到大的变化情况,排除手掌长期停留在发射LED上方引起的误判。为了防止按压手势完成后将手拿开的过程中将此动作识别为左右挥控手势,同时为了实现识别出按压手势后只报一次手势信息,设置标志位(pre_zoom_flag),此标志位在上次识别为按压手势后置一,置一期间中不判别手势信息。直到S1值小于最低阈值PS_TH_L_LED1后此标志位才清零,开始判别手势信息。
4.手势识别函数流程图
文件中
文件中
函数中调用
文件中
文件中
直到计算出手势
5.图5手势识别函数流程图
三、手势挥控功能调试方法
1.所需数据
1)读取无障碍物遮挡时两个发射LED的反射值(即底噪)。得出一组数据,称为数据1.
2)做左右挥控手势,读取两个发射LED的反射值S1,S2,得出一组数据,称为数据2。
3)做按压手势,读取发射LED1的反射值S1,得出一组数据,称为数据3。
S1和S2分别存放在数组ps_1[data_count],和ps_2[data_count]中。
将这两个值用trace打出,以便分析调试;
hq_print("\r\n %-5d\t%-5d\t%-5d\t \r\n",data_count, ps_1[data_count], ps_2[data_count]); 2.需确定阈值、计数值的意义及确定方法
左右挥控手势阈值:
1)PS_TH_L_LED1发射LED1的低阈值,同时也是中断阈值。
此值需要比上述数据1中的最大值略大(大10左右)。
2)PS_TH_H_LED1 发射LED1左右挥控手势的高阈值。
此值需要比上述数据2中S1的最大值略小(小20左右)。
上述两个值的确定原则是:如图4所示,表示PS_TH_L_LED1和PS_TH_H_LED1的横线表示S1的抛物线均需要有两个交点。
3)PS_TH_L_LED2发射LED2的低阈值,同时也是中断阈值。
4)PS_TH_H_LED2发射LED2左右挥控手势的高阈值。
阈值3)、4)的确定方法同1)、2)。
S1> PS_TH_L_LED1或S2> PS_TH_L_LED2时接收传感器均可产生一个下降沿中断。
如图4所示,发射LED1的反射值S1与高低阈值分别有4个交点;同理发射LED2的反射值S2与高低阈值也分别有4个交点。只有这8个点全部存在,才可以正确计算出左右挥控手势信息。
按压手势阈值:
5)PS_TH_H发射LED1按压手势的高阈值。
此值需要比上述数据3的最大值略小(小10左右),同时一定要大于PS_TH_H_LED1和PS_TH_H_LED2。因为左右挥控手势时距离的最小值不可能小于按压手势时的最小值。
6)PS_TH_L_D1 发射LED1按压手势的中间阈值。
此值需要比PS_TH_H略小(小20左右),主要用于识别按压手势时反射值S1随时间由小及大的变化情况。