2016-03-15 1 views
3

В моем приложении я хочу определить, насколько сильны окружающие магнитные/электромагнитные поля. То, что я хочу достичь, - измерить изменение магнитного поля, чтобы знать, если оно сильнее, чем в контрольных измерениях, или если оно ниже. Это мой код:Использование устройства iOS в качестве тесламетра (обсуждение магнитометра)

- (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 App от Apple, у него почти такой же код и все те же проблемы.

ответ

2

Уверенный, вы можете, магнитное поле должно быть очень сильным!

Ваш первый предел может быть аппаратным. Как отмечено в In iOS, what is the difference between the Magnetic Field values from the Core Location and Core Motion frameworks?, диапазон этих исходных значений может быть ограничен. На некоторых версиях некоторых аппаратных средств и iOS они ограничивали их до -128 до +128 microteslas. На iPhone 6 я могу получать показания микротелса за пределами этого диапазона, но это не обязательно помогает. Apple, похоже, не дает никаких ссылок на точность показаний магнитометра, мы можем измерить значения для nanotesla, но результаты, которые мы получаем, могут быть бессмысленным шумом.

Магнитное поле Земли на поверхности будет 25 to 65 microteslas. Любое поле, которое вы надеетесь измерить, должно быть значительно более сильным, чем на желаемом расстоянии измерения. Что вы пытаетесь измерить, и действительно ли он достаточно силен, чтобы переместить стрелку компаса на расстояние, которое вы хотите измерить?

+0

Дело в том, что я хочу измерить дельту величины магнитного поля, просто скажем, она стала сильнее или слабее. –

+1

@IvanNesterenko право поэтому вопрос становится; какова наименьшая обнаруживаемая дельта в той величине, которую устройство может измерить и насколько близко это означает, что вам нужно быть источником? Когда я запускаю пример приложения Apple, я вижу компоненты, которые отличаются не менее +/- 1 microtesla. Вам будет очень сложно обнаружить изменения в 1 microtesla или меньше из-за вашего целевого поля. Учитывая силу поля, насколько близко вам нужно, чтобы устройство регистрировало хотя бы несколько изменений в microtesla? – Jonah