使用iOS设备作为特斯拉计(磁力计讨论)

4

在我的应用程序中,我想检测周围磁场/电磁场的强度。我想达到的目的是测量磁场变化,以知道它是否比控制测量中的磁场更强或更弱。这是我的代码:

- (void)setupLocationManager {
    self.locationManager = [[CLLocationManager alloc] init];
    if ([CLLocationManager headingAvailable] == NO) {
        self.locationManager = nil;
    } else {
        self.locationManager.headingFilter = kCLHeadingFilterNone;
        self.locationManager.delegate = self;
        [self.locationManager startUpdatingHeading];
    }
}

// CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)heading {
    CGFloat magnitude = sqrt(heading.x * heading.x + heading.y * heading.y + heading.z * heading.z);
    if (self.defaultMagnitudeValue == 0.f) {
        self.defaultMagnitudeValue = magnitude;
    }
    self.curentMagnitudeValue = magnitude;
}

幅度值反应设备周围的磁场,问题在于您需要非常接近这样一个场源。

那么,问题是:iOS应用程序是否有可能测量距离超过10-20厘米的磁场?如果可以,如何做到呢?

P.S.:我还检查了苹果的Teslameter应用程序,它几乎具有相同的代码和完全相同的问题。

1个回答

2
当然可以,磁场只需要非常强大!您的第一个限制可能是硬件。如在iOS中,Core Location和Core Motion框架的磁场值有什么区别?所述,这些原始值的范围可能受到限制。在某些硬件和iOS版本上,它们被限制在-128到+128微特斯拉之间。在iPhone 6上,我可以获得远远超出该范围的微特斯拉读数,但这并不一定有帮助。苹果似乎没有提供任何关于磁力计读数准确性的参考,我们可以测量纳特斯拉级别的值,但我们得到的结果可能是无意义的噪声。地球表面的磁场将为25至65微特斯拉。您希望测量的任何磁场都需要比所需测量距离处的地球磁场强得多。您要测量什么,它是否足够强大,可以在您想要测量的距离上移动指南针?

事实上,我想测量磁场强度的变化,只是想知道它是变强了还是变弱了。 - Ivan Nesterenko
1
@IvanNesterenko 所以问题变成了:设备可以测量的最小可检测差值是多少,你需要离源有多近?当我运行苹果的示例应用程序时,我看到的组件至少变化了+/- 1微特斯拉。由于目标场的影响,你很难检测到1微特斯拉或更小的变化。考虑到场的强度,你需要离设备多近才能注册至少几个微特斯拉的变化? - Jonah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接