手机地磁传感器与常见问题

在手机中,存在不少传感器,例如光距感,陀螺仪,重力加速度,地磁等。关于各传感器,虽功能作用大家都有所了解,但是在研发设计debug过程中,却总是会遇到很多头疼的问题。关于传感器,今日主要讲一下地磁传感器。

一 地磁传感器

是将由磁场、应力、应变、温度、光等引起的磁特性变化,转换成电信号进行检测的装置。

二 分类

按照目前主流的技术主要分为以下四种:

  1. AMR
  2. HALL
  3. GMR
  4. TMR
    目前主要用到的是AMR技术。

三 关于干扰源

硬磁——其本身可产生磁场的物质。例如手机中的听筒,喇叭,带马达的摄像头模组,除此之外电流也属于硬磁。中学物理曾了解过奥斯特实验,揭示了电流周围存在磁场。这也说明了电流和前面几个物质一样的性质,所以归类为硬磁。可使空间中的磁场发生移位。
在这里插入图片描述
软磁,其本身不包含磁场,在外加磁场的磁化影响下,产生了磁性。手机中,软磁材料例如弹片,螺丝,NFC线圈中的隔磁材料等。如果你还不了解,可以想象童年时期,我们经常会使用吸铁石吸引硬币,此时硬币被磁化,如果选择将另一颗硬币放在被磁化的硬币附近,其可以被前者的硬币吸引。前者的硬币则属于软磁。当外加磁场撤去后,被磁化的器件去磁时间也是根据不同的材料所不同。即使其本身不存在磁场,但是可使空间中的磁场发生扭曲。
在这里插入图片描述

关于指南针,并非单指地磁传感器这个模块。在场景使用过程中,往往会存在一定角度的倾斜,此时会调用手机中的加速度的数据,二者进行融合,最终呈现出指南针指针的偏移。

四 常见问题

在手机debug测试中,往往会遇到以下几类问题:

1. 指南针卡死

关于指南针卡死,这里的指南针并非单指M sensor,A sensor也同样处理着指南针指针的变化情况。所以二者只要有一方工作异常,三轴数据中的某一轴或者几个轴卡死都会使得指南针在使用过程中出现卡死情况。如果想要加强这个理解,可以物理摘掉A sensor,观察指南针情况。

水平静置下,指南针角度偏移大——在项目前期调试过程中,这类问题是很常见的,因受周围软磁的影响,所以我们需要寄3-5PCS机器给到地磁厂商,用于做软磁补偿。补偿系数则需要软件合入代码中。加入补偿系数后的指南针在水平静止状态下偏移情况与标准指南针往往相差在3度以内。

2. 充电场景,指南针角度偏移大

关于这类问题,是很多项目经常遇到的。有时甚至我们从市面上买对比机对比充电指南针干扰时也同样遇到过。这类问题在有些时候简直无解,在现如今动不动二百瓦充电功率的时代,充电场景的指南针问题成为了很多开发者头疼的问题。这部分原因从硬件上分析,主要分为两部分:

地磁附近存在VBUS走线

因变化的电流会产生磁场,其必然会影响到地磁三轴的数据输出情况,进而影响到指南针的偏转情况。设计前期,应尽量避免地磁附近走VBUS线路。除此之外,建议地磁附近尽量不要放置大的地空,地磁摆放位置尽量处于主板靠近电池盖的一面。

充电回流影响

关于充电回流的影响,几乎是每个充电指南针干扰问题的原因。关于手机的地,不仅分为主板地还分为结构地。其通过弹片,螺丝融合为一个“地”。充电的回流路径往往无法预测,也就使得在遇到因回流引起的地磁干扰问题,debug方向往往是多方位的,需要增加多处整个措施,使得回流路径发生变化,减小地磁的干扰。关于整改,优先排查地磁附近的接地螺丝孔与接地弹片。弹片可选择通过电容下地,螺丝孔铺铜处可铺上绿油。关于任何接地的整改都需要与其他领域拉会对齐,评估对各领域的影响性。

在各家平台的代码逻辑中,本身已含有9D算法,其中高通有的算法较为成熟,MTK的算法较为弱些,所以在使用MTK平台时,往往是地磁厂商提供自己的一套9D算法方案。其主要还是依据陀螺仪的数据修正指南针偏移情况。然而此算法在大角度偏移情况下十分有效,在小角度缓慢偏移的情况下很难进行修正。
除此之外,软件还可通过在sensorhub中调用充电相关函数结合偏移情况进行补偿。其效果可改善,但是一致性无法保证。目前很少有项目用上,主要还是方案不是很成熟,同时厂商都有自己的一套代码逻辑,不会擅自加上第三方的代码。

五 关于原理图与Layout

地磁位于主板投影区的各层地建议挖空处理,不要有走线。按照厂商要求对周围各关键器件进行一定距离的远离。在位置确定下来后,提供各距离数据给与地磁厂商做硬磁仿真。因地磁在工作时,电流并非稳定的,往往会存在脉冲,所以地磁的电源线走线建议在0.2mm起步。主板的电源滤波电容选择在2.2UF-4.7UF,个别厂商还会建议串一颗3.3R电阻在其中。为的是更好的控制电源电压的波动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:树的存储结构(孩子兄弟表示法,树和森林的遍历)

目录 1.树的存储结构1.双亲表示法(顺序存储)1.优缺点 2.孩子表示法(顺序链式存储)3.孩子兄弟表示法(链式存储)4.森林与二叉树的转换 2.树的遍历1.先根遍历2.后根遍历3.层序遍历 3.森林的遍历1.先序遍历2.中…

fastANI-基因组平均核酸一致性(ANI)计算

文章目录 简介安装使用Many to Man-使用基因组路径作为输入One to One 结果其他参数说明可视化两个基因组之间的保守区域并行化 简介 FastANI 是为快速计算全基因组平均核苷酸同一性(Average Nucleotide Identity,ANI)而开发的,无…

人工智能与教育:未来的技术融合

人工智能与教育:未来的技术融合 随着科技的飞速发展,人工智能(AI)逐渐渗透到我们生活的方方面面,包括教育领域。AI与教育的结合,有望引发一场教育变革,提高教学效果,实现个性化学习&…

【自定义类型:结构体】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 结构体类型的声明 1.1 结构体的概念 1.2 结构的声明 ​编辑 1.3 特殊的声明 1.4 结构的自引用 2. 结构体变量的创建和初始化 3. 结构成员访问操作符 4. 结构体内…

matlab GUI界面实现ZieglerNicholas调节PID参数

1、内容简介 略 11-可以交流、咨询、答疑 ZieglerNicholas、PID、GUI 2、内容说明 GUI界面实现ZieglerNicholas调节PID参数 通过ZieglerNicholas调节PID参数,设计了GUI 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.com/s/1yQ1yDfk-_…

Revit 平面的圆弧,空间的椭圆弧

大家对Revit的空间曲线那么理解,如何用代码创建空间的椭圆弧,,上看是圆弧,正面看是椭圆? 直接放代码: Document doc = commandData.Application.ActiveUIDocument.Document; Autodesk.Revit.DB.XYZ center = new Autodesk.Revit.DB.XYZ(0, 0, 0); …

杂记杂记杂记

目录 Mybatis分页插件原理? ThreadLocal? 树形表的标记字段是什么?如何查询MySQL树形表? Mybatis的ResultType和ResultMap的区别? #{}和${}有什么区别? 系统如何处理异常? Mybatis分页插件原理&#…

基于SSM框架的高校试题管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

Flutter:改变手机状态栏颜色,与appBar状态颜色抱持一致

前言 最近在搞app的开发,本来没怎么注意appBar与手机状态栏颜色的问题。但是朋友一说才注意到这两种的颜色是不一样的。 我的app 京东 qq音乐 这样一对比发现是有的丑啊,那么如何实现呢? 实现 怎么说呢,真不会。百度到的一些是…

c语言练习11周(6~10)

输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。 题干 输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。输入样例gfedcba输出样例gbcdefa 选择排序 #include<s…

java的类和继承构造

一些小技巧 类和对象 什么是类&#xff0c;对象&#xff0c;方法&#xff1f; 在下面的 Java 代码中&#xff0c;定义了一个名为 Person 的类&#xff0c;并提供了构造方法来初始化对象的属性。类中定义了 eat、sleep 和 work 三个方法&#xff0c;用于表示人的行为。在 main 方…

k8s上对Pod的管理部分详解

目录 一.Pod结构介绍 1.user container 2.pause 二.Pod工作形式介绍 1.自主式pod 2.控制器管理下的pod 三.对Pod的操作介绍 1.run/apply -f/create -f运行pod 2.get查看pod信息 3.exec操作运行中的pod &#xff08;1&#xff09;进入运行中的pod &#xff08;2&…

React的refs和表单组件总结

React的refs和表单组件 react中refs的使用字符串形式的ref react核心就在于虚拟DOM&#xff0c;也就是React中不总是直接操页面的真实DOM元素&#xff0c;并且结合Diffing算法&#xff0c;可以做到最小化页面重绘&#xff0c;但有些时候不可避免我们需要一种方法可以操作我们定…

深入OpenCV Android应用开发

前言 OpenCV是Open Source Computer Vision library(开源的计算机视觉库)的缩写。它是使用最广泛的计算机视觉库。Opencv是计算机视觉领域常用的操作函数的集合&#xff0c;其自身由C/C编写而成&#xff0c;同时也提供了对Python、Java以及任意JVM语言的封装。考虑到大部分And…

【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(二)——前端el-pagination实现

系列文章 【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询—后端实现 文章目录 系列文章系统版本实现功能实现思路后端传入的数据格式前端el-table封装axois接口引入Element-plus的el-pagination分页组件Axois 获取后台数据 系统版本 后端&#xf…

内存映射:PS和PL DDR3的一些区别

之前写的一些资料&#xff1a; PS与PL互联与SCU以及PG082-CSDN博客 参考别人的资料&#xff1a; PL读写PS端DDR的设计_pl读写ps端ddr数据-CSDN博客 xilinx sdk、vitis查看地址_vitis如何查看microblazed地址_yang_wei_bk的博客-CSDN博客 可见&#xff0c;PS端的DDR3需要从…

【友提】2023年“思维100”编程比赛开始报名,名额有限报名抓紧

根据官方昨天发布的通知&#xff0c;2023年上海市“科学小公民”实践展示活动之“思维100”STEM应用能力编程活动&#xff08;秋季&#xff09;开始报名了&#xff0c;为便于大家了解&#xff0c;六分成长为大家整理关键信息如下。为便于叙述&#xff0c;该活动简称为思维100编…

[autojs]逍遥模拟器和vscode对接

第一步&#xff1a;启动autojs服务 第二步&#xff1a;去cmd查看ip地址&#xff0c;输入ipconfig 第三步&#xff1a;打开逍遥模拟器中的sutojs-左上角- 连接电脑&#xff0c;然后输入WLAN或者其他ip也行&#xff0c;根据自己电脑实际情况确认 此时vscode显示连接成功。我们写…

Linux文件缓冲区

文章目录 1. 缓冲区现象2. 用户级和系统级缓冲区3. 缓冲区刷新4. 为什么要有缓冲区5. 文件打印的全缓冲6. 模拟实现C语言文件标准库 本章gitee代码仓库&#xff1a;重定向、模拟C语言文件标准库 1. 缓冲区现象 我们这里分别调用了4个差不多的函数&#xff0c;但是结果是有一定差…

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来很大的困扰。那么&#xff0c;如何解决msvcp120.dll丢失的问题呢&#xff1f;本文将为大家介绍…