怎样读取地磁传感器的值和方向?首先,确认地磁传感器的值如何变化,慢慢移动实际配置于Arduino的地磁传感器,并试着确认其值。上次使用的样本程序通过串行监视器确认时,因小数点变动而不便观察,所以改为了用整数型表示以用于确认。在动画中,预先通过使用了GPS或陀螺罗盘的方向检测精度较高的应用查找正确的北(正北)方,并记载于纸上。我们来看看在地磁传感器与该方向一致时,程序侧取得的XYZ轴的各值。
BM1422GMV的显示程序
看动画即可明白,在各传感器的最大值的显示位置,一边对Arduino的串行监视器中显示的数字进行确认,一边寻找最大值。
图1 地磁传感器的状态
图2 地磁気センサのX軸の最大値
动画中X轴的值成为最大值的位置在此角度。奇怪,正如图1所示,由于传感器的值表示地磁强度,因此本来指向正北时的值就应该是最大值…?搞不明白了。 这是怎么回事呢?试着慢慢移动传感器后,发现Y轴也大致与X轴在相同方向上停止了。 正在进行实验的该房屋内或许存在着某种与地球不同的磁场…。 查找Z轴表示最大值的部位时,发现其如照片1所示了。几乎颠倒。果真是从地面释放出了某种神秘的地磁吗…汗。
照片1 Z轴为最大值时的状态
变得有些令人害怕了,关于地磁传感器(看似)设法指示最大值的传感器的数值之谜,我决定通过学习地磁传感器的相关知识来解开这一谜团。
地磁传感器的二轴和三轴传感器的不同
首先,地磁传感器大致分为两类,即可使用二轴(XY)和三轴(XYZ)进行检测的两种类型。二轴型为XY轴,可简单地在水平状态下检测方向,但在倾斜状态等时不可正常检测方向。三轴型与XY轴相结合,增加了倾斜的Z轴,因此可根据Z轴的倾斜程度补正XY轴的值,从而检测出方向。 本次传感器评估套件中的传感器为三轴传感器,因此可处理比二轴传感器更详细的数据,嗯哼。
2.扰乱地磁传感器的结构~传感器的值的倾角和偏角是什么呢?接下来我们深入研究一下传感器的最大值之谜。
首先,我们来看看究竟什么是地磁!?
的确,虽说我会使用地磁传感器,但完全不了解"地磁"本身是什么(羞愧…)。
是地球发出的磁力?或是磁场吗?我只有这样的模糊的概念…。
什么是地磁?这里,我们将学习地磁本身及地磁传感器的结构。简单来说,地磁传感器是指可感应磁铁发出的磁力的传感器。如图4所示,地球好比一个巨大的磁铁,其周围环绕着磁力。地磁传感器如同指南针,是可以检测地磁的传感器。
图4 地球是一个巨大的磁铁
这里我们学习一点科学知识,实际上手持指南针指向北极点或南极点时,若保持方向不变,则无论何时都不可能到达北极点或南极点。这是地球结构暗藏的玄机。在国土地理院和气象厅的网站上刊登了浅显易懂的解说,地磁略偏离了地球中心。因受地球内部活动等的影响而发生了变化,根据2015年的数据,大约向西偏离了7度(后面详细解说)。真是不可思议呀。并且,以数万年~数十万年为单位,地磁可能发生反转。若是这样,即使使用地磁传感器制造出具有未来可永久保持耐久性的元器件,数万年后,也会因地球自身的轴偏离而必须进行补正…
图5 地球的磁铁与北极点略有偏离
另外,此处还可使用国家地理院的电子国土Web(日文网页)查看偏离程度。
图6 东京的磁北线
东京站刚好偏离了7.0°!
图7 宗谷岬的磁北线
哎呀,日本最北端的稚内并非7.0°,而是9.8°???? 那么,南部又如何呢…
图8 那霸市的磁北线
冲绳那霸市并非7.0°,而是4.4°
真搞不明白,这到底是怎么回事呀…
这样,图正中央标记的红色数值表示偏离程度,东京站为7度,而日本最北端宗谷岬为9.8度,冲绳那霸市为4.4度,可以发现各值之间存在较大差异。 然而,这些偏离数值仅仅是告诉了我们偏离因地点的不同而异的现实。谜团更深了…。
倾角和偏角的存在实际上地球地磁的最大值和正北方的偏离角度被称为"倾角"和"偏角"。地磁的偏离量一般记载为7度,但实际上该偏离量因计测位置的不同而异。该偏离量被称为偏角。就日本国内而言,大致为越向北方偏离越大,越向南方偏离越小。另外,将东西南北视为左右(XY轴)时,上下水平(Z轴)也会偏离。其被称为倾角。倾角即为图4、图5所示的与地磁流所形成的角度,就东京而言,以陷入地面的形式倾斜了约49度。因此刚才Z轴近乎颠倒成为最大值正是与此相关的吧? 由此可见,表示正确方向时,由于该倾角和偏角密切相关,因此使用GPS在地球上哪个位置补正偏离是非常难把握的事情…。理清思路后,发现使用地磁传感器等时,若不能明确北是指正北还是磁北,则欲取得的数值就会出现错误。 - 正北 ・・・ 地球的最北方
- 磁北 ・・・ 电子磁铁或地磁传感器所示的北的位置(地磁最大的方向)
3.查找磁力传感器的最小值和最大值并检测方向下面,我们实际使用磁力传感器,通过Arduino来实现方向的检测。 包括地磁传感器在内,电子零件传感器在通常状态下电阻值会发生变化,因此通过在Arduino侧计测基于该电阻变化的电压值,读出了传感器的值。我们试着来查找本次使用的地磁传感器的XYZ轴的最小值和最大值。查找的值有水平时和与水平无关时的两种。由于该数值因实验环境而异,因此实验时请将其与传感器实际相连。
本次将计算水平时的方向。下图9表示利用从串行监视器复制地磁传感器旋转一周后的值做成的XY轴的分布图。形成了一个漂亮的圆形。其为水平时,可通过使用反正切函数的公式计算角度。通过将以中点为轴、欲检测角度的点应用到公式中,计算角度。在程序侧,预先确认并设定中点和数值的范围后,需要将其写入Arduino。
图9 将地磁传感器的值绘制成图表
下面,我们尝试使用该公式通过Arduino进行实际安装!
4.尝试与步进电机组合制作罗盘本次,我们尝试组合地磁传感器与步进电机制作罗盘。将Arduino和地磁传感器放置于圆木板上,通过使用步进电机旋转底座,尝试按照总是指向北方的规格进行实际安装。使步进电机颠倒,将装载Arduino等的底座置于其上。
照片2 成为基座的步进电机
照片3 装在底座上的Arduino、地磁传感器等元件
最初考虑采用一台步进电机的底座,但实际安装时检测出步进电机的磁力干扰地磁传感器的数值,因此拧入螺栓抬高至消除干扰的高度。
照片4 装有所有元件及设备的状态,使用螺栓抬高地磁传感器
使用程序检测角度,达到磁北时停止。若步进电机太快则可能超过磁北,因此在rd变量的if条件句内留有一定的余量。
这样,总是指向磁北的罗盘制作完成!为了使其更准确地指向正北方,要遵守先对偏角、倾角等的值进行调整的流程。
5.总结 |