手机地磁传感器与常见问题
在手机中,存在不少传感器,例如光距感,陀螺仪,重力加速度,地磁等。关于各传感器,虽功能作用大家都有所了解,但是在研发设计debug过程中,却总是会遇到很多头疼的问题。关于传感器,今日主要讲一下地磁传感器。
一 地磁传感器
是将由磁场、应力、应变、温度、光等引起的磁特性变化,转换成电信号进行检测的装置。
二 分类
按照目前主流的技术主要分为以下四种:
- AMR
- HALL
- GMR
- 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章_数据库的设计规范
文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库ÿ…...
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 …...
家庭安全计划 挑战赛| 溺水预防
溺水预防 从了解到行动 家庭安全计划 | 少年急救官 地震避险逃生该怎么做? 起火了该如何应对? 哪些行为容易导致溺水? 家庭风险隐患有哪些? 家庭逃生演练四步骤你会吗? 国际救助儿童会(英国ÿ…...
飞书开发学习笔记(五)-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:如果是你,你如何解决跨代引用的问题?(记忆集和卡集)
这部分内容主要是为了稍后介绍各款垃圾收集器时做前置知识铺垫,如果对这部分内容感到枯燥或者疑惑,可以先放下看,等后续遇到要使用它们的实际场景、实际问题时再结合问题,再回来阅读和理解。 记忆集和卡集 前面在分代收集理论那…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
