Ответ 1
Как только я узнаю информацию, я буду собирать ее в этом ответе.
Оборудование
3GS использует ST LIS331DL 3-осевой & plusmn; 2g/& plusmn; 8g цифровой акселерометр.
iPhone 4 и iPad используют ST LIS331DLH 3-осный & plusmn; 2g/& plusmn; 4g/& plusmn; 8g цифровой акселерометр.
Они оба могут считываться с частотой 100 Гц и 400 Гц, хотя на iPhone 3G (под iOS 4.1) делегат акселерометра не вызывается чаще, чем 100 Гц, даже если setUpdateInterval установлен для более быстрого обновления. Я не знаю, поддерживает ли API более быстрые обновления на iPhone 4, а в документации Apple просто указано, что максимум определяется аппаратным обеспечением iPhone. (TBD)
АЦП находится на том же кремнии, что и датчик MEM, который хорош для помехоустойчивости.
Версия DL - 8 бит (3GS), а версия DLH - 12 бит (iPhone 4). Максимальное смещение (смещение) в версии DL вдвое превышает смещение версии DLH (0,04 г против 0,02 г).
В листе данных DLH сообщается о плотности шума ускорения, но это значение не сообщается в таблице DL. Плотность шума достаточно низка при 218 мкг /& radic; Гц для DLH.
Оба датчика обеспечивают либо выборку 100 Гц, либо частоту дискретизации 400 Гц, без специальной скорости. Датчик отбрасывает значения, если iPhone не считывает выходной регистр с установленной частотой дискретизации.
"Типичное" значение полной шкалы для DL-датчика равно & plusmn; 2.3g, но ST гарантирует, что оно не менее & plusmn; 2g.
Температурные эффекты на датчике присутствуют и измеряются, но не очень значительны.
TBD:
- Включен ли аппаратный фильтр и каковы характеристики фильтрации?
- Насколько шумным является питание акселерометра? (У кого-то просто есть схема iPhone, лежащая вокруг?)
- Акселерометр использует внутренние часы, чтобы обеспечить синхронизацию частоты дискретизации и аналого-цифрового преобразования. Техническое описание не указывает точность, точность или температурную чувствительность этих часов. Для точного анализа времени iPhone должен использовать прерывание, чтобы понять, когда образец сделан, и записать время в прерывании. (независимо от того, сделано это или нет, неизвестно, но это единственный способ получить точную информацию о времени).
API
Запрос частоты дискретизации менее 100 Гц приводит к получению выбранных выборок, в то же время отбрасывая остальные. Если в программном обеспечении запрашивается частота дискретизации, которая не является коэффициентом 100 Гц, временные интервалы между реальными показаниями датчика не могут быть четными. Apple не гарантирует даже частоты дискретизации, даже если используется коэффициент 100.
Похоже, что API не обеспечивает фильтрацию программного обеспечения.
API действительно масштабирует исходное значение акселерометра в двойное представление Gs. Используемый коэффициент масштабирования неизвестен и зависит ли это для каждого телефона (то есть, откалибровано) и независимо от того, выполняется ли калибровка на постоянной основе для учета дрейфа датчика, неизвестно. Онлайн-отчеты, похоже, предполагают, что iPhone иногда откалибрируется, когда он лежит на поверхности.
Результаты простого тестирования показывают, что API устанавливает датчик в & plusmn; 2g для 3GS, что обычно отлично подходит для карманных движений.
TBD:
- Является ли Apple калибровкой каждого устройства, чтобы UIAccelerometer сообщал 1G как 1G? Документация Apple специально предостерегает от использования устройства для чувствительных измерительных приложений.
- Сообщается ли сообщенный NSTimeInterval, когда значения считывались с акселерометра или когда прерывание акселерометра указывало, что новые значения были готовы?