当前位置: 首页 > news >正文

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

在手机中,存在不少传感器,例如光距感,陀螺仪,重力加速度,地磁等。关于各传感器,虽功能作用大家都有所了解,但是在研发设计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电阻在其中。为的是更好的控制电源电压的波动。

相关文章:

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

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

EF Core 数据库映射成实体类

首先在 NuGet 包管理器中安装三个包 Microsoft.EntityFrameworkCore.SqlServer 是一个用于与 SQL Server 数据库进行交互的实体框架核心包。这个包提供了方便的方法和工具,用于在 .NET Core 应用程序中操作 SQL Server 数据库。 Microsoft.EntityFrameworkCore.Too…...

【算法优选】 动态规划之斐波那契数列模型

文章目录 🎋前言🍀[第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/)🚩题目描述🚩算法流程🚩代码实现 🎄[使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing…...

FreeRTOS知识梳理

一、RTOS:Real time operating system,中文意思为 实时操作系统,它是一类操作系统,比如uc/OS、FreeRTOS、RTX、RT-Thread 这些都是实时操作系统。 二、移植FreeRTOS到STM32F103C8T6上 interface选择CMSIS_V1,RCC选择Crystal Ceramic Resonator 。 …...

冒泡排序算法(C++版)

1、什么是冒泡排序? 冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是多次遍历待排序的元素序列,每次比较相邻两个元素,如果它们的顺序不正确就交换它们,直到整个序列有序。在每一轮遍…...

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…...

5. 深度学习——正则化

机器学习面试题汇总与解析——正则化 本章讲解知识点 什么是正则化为什么要使用正则化?详细讲解正则化本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好…...

【链表和顺序表的优缺点】

...

iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤

目录 iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤 摘要 引言 一、APP加固的概念 二、APP加固方案的比较 三、保护iOS应用的安全 四、总结 参考资料 摘要 本文介绍了移动应用程序(App)加固的概念和流程,以及市…...

C# .NET Core API 注入Swagger

C# .NET Core API 注入Swagger 环境 Windows 10Visual Studio 2019(2017就有可以集中发布到publish目录的功能了吧)C#.NET Core 可跨平台发布代码,超级奈斯NuGet 套件管理dll将方法封装(据说可以提高效率,就像是我们用的dll那种感觉)Swagger 让接口可视化编写时间2020-12-09 …...

家庭安全计划 挑战赛| 溺水预防

溺水预防 从了解到行动 家庭安全计划 | 少年急救官 地震避险逃生该怎么做? 起火了该如何应对? 哪些行为容易导致溺水? 家庭风险隐患有哪些? 家庭逃生演练四步骤你会吗? 国际救助儿童会(英国&#xff…...

飞书开发学习笔记(五)-Python快速开发网页应用

飞书开发学习笔记(五)-Python快速开发网页应用 一.下载示例代码 首先进入飞书开放平台: https://open.feishu.cn/app 凭证与基础信息 页面,在 应用凭证 中获取 App ID 和 App Secret 值。 教程和示例代码位置:https://open.feishu.cn/document/home/integrating-…...

对测试职业发展的思考

虽然在测试行业摸爬滚打了很年,随着年龄的增长,职位的升迁,似乎已经走到了尽头,因而还是时不时觉得自己的职业发展目标很模糊,这是最近对自己职业发展的一些思考,希望与大家进行分享和探讨: 1、…...

博弈论入门

目录 什么是博弈? 博弈论的发展历史? 博弈的要素有哪些? 博弈的分类? 博弈论的应用 收益矩阵 纳什均衡的定义 博弈论的例子 1、田忌赛马 2、穷途困境 2.1优化反应函数法 2.2Nashpy库 2.3顶点枚举算法 3、Nash游戏 …...

php加密解密

public static function encrypt($data, $key) {$key 111;// 生成盐值$salt openssl_random_pseudo_bytes(16);// 使用盐值和密钥进行加密$encrypted openssl_encrypt($data, AES-128-CBC, $key, 0, $salt);// 将盐值和加密后的数据拼接$result base64_encode($salt . $enc…...

基于YOLOv8的输电线路异物识别算法应用

基于 YOLOv8 的输电线路异物识别算法应用 输电线路作为电力系统的重要一环,保证其安全稳定运行是十分必要的。由于长期暴露于室外,线路所面临的不安全因素繁多,异物入侵便是其中之一。异物可能会引起线路短路甚至诱发火灾,因此要加…...

win环境Jenkins部署前端项目

今天分享win环境Jenkins部署前端vue项目,使用的版本jenkins版本Jenkins 2.406版本。 前提是jenkins安装好了,通用配置已经配置好了,可以参考上两篇博客。 1、前端项目依赖nodejs,需要安装相关插件 点击进入 安装成功标准 jenki…...

DDD领域驱动设计模式结构图面向接口编程

DDD领域驱动设计模式结构图面向接口编程 9.资源库 在刚接触资源库(Repository)时,第一反应便是这就是个 DAO 层,访问数据库,然后吧啦吧啦,但是,当接触的越久,越发认识到第一反应是错的,资源库更…...

Ubuntu中安装R语言环境并在jupyter kernel里面增加R kernel

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...

JVM:如果是你,你如何解决跨代引用的问题?(记忆集和卡集)

这部分内容主要是为了稍后介绍各款垃圾收集器时做前置知识铺垫,如果对这部分内容感到枯燥或者疑惑,可以先放下看,等后续遇到要使用它们的实际场景、实际问题时再结合问题,再回来阅读和理解。 记忆集和卡集 前面在分代收集理论那…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

CSS | transition 和 transform的用处和区别

省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...