前面说到,步进马达的位置检测是升降式系统的眼睛,是关键部件。
然而步进马达是通过脉冲信号控制其运动的步数,方向,速度,既然有脉冲控制了,为什么还需要位置检测呢?
执行是一方面,执行后对结果进行评判是另外一方面,在一个可靠的系统中都不可或缺。
步进马达都有堵转和失步的可能性,如何判断马达有没有到达指定位置?如果马达失步,或者堵转,怎么办?难道还要像楞头青一样冲?堵转可是会带来发热的;又比如,用户手机摔落后,导致马达不在初始位置,打开前摄,系统依然发送全程的脉冲数,就会导致马达转过头了,又带来了堵转风险。
位置检测可以通过下面三种方案实现,最终霍尔传感器方案因种种优势胜出,落地在了项目上,但其他两种方案仍然可圈可点。
霍尔传感器方案
以红米K20为例,在升降式摄像头的支架侧边放置了两颗磁铁,而霍尔芯片则位于旁边的主板上。
当升降式摄像头上下移动时,会带动这两颗磁铁进行运动,霍尔芯片会检测到这两颗磁铁在摄像头升降过程中各个位置所对应的磁场强度。如果达到相应阈值,就认为位置到位了。
霍尔传感器实现位置检测的流程可以简化为:
物理位置变化 → 磁铁与霍尔芯片距离变化 → 磁场强度变化 → 霍尔电压变化 → 电信号输出变化 → CPU判断并执行动作。

为什么选择霍尔传感器方案?
非接触式检测,传感器和磁铁不直接接触,没有物理磨损,寿命极长;对灰尘、油污不敏感;几乎无延迟,可以瞬间检测到位置变化;功耗极低,非常适合电池供电的移动设备;方案体积小巧,节省空间。
光遮断器方案
此方案需要在升降式摄像头的初始位置和终点位置各放置一颗光遮断器,光遮断器的本质就是个U型槽。

当U型槽内有遮挡物时,受光元件上无电压,test pin输出高电平;
当U型槽内无遮挡物时,受光元件上产生电压,test pin输出低电平

弹片式方案
在结构设计上,于升降式摄像头初始位置及终点位置各放置一个开关式弹片,开关式弹片一端接地,另一端上拉至高电平。
通过结构的方式,当摄像头经过开关式弹片,将弹片两端导通,导致GPIO电平变化,从而判断摄像头的位置。
