Значение "LSB / Unit" и " Unit/LSB"
на данный момент я играю с LSM303DLHC акселерометр/магнитометр/термометр.
Это его техническое описание: http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00027543.pdf
все работает достаточно хорошо, но я не знаю как интерпретировать выходные значения. В таблице данных (Страница 9) говорится что-то вроде "1 mg/LSB" (нет, это не миллиграмм :D) о чувствительности к линейному ускорению в моем конфигурация. Что, черт возьми, это значит? То же самое с изменением выхода датчика температуры (8 LSB/°C) и магнитной настройкой усиления (1100 LSB/gauss), только наоборот.
например, что делать с этим выходом акселерометра: 16384? Это мое измеренное гравитационное ускорение.
4 ответов
LSB / unit или Unit / LSB-это коэффициент(называемый чувствительностью), с помощью которого вы должны умножить необработанные данные датчика. Скажем, датчик A имеет регистры X,Y и Z , значения, поступающие в каждый из регистров, должны быть разделены/умножены на коэффициент LSB/unit или Unit/LSB. Это потому, что в листе данных говорится, что @ конкретный полномасштабный вы будете иметь такую большую чувствительность (LSB/unit или Unit/LSB)
для LSB / Unit:
X lsb означает - 1 единица
1 lsb означает-1 / x юнит
значение lsb (значение в Регистре) = (1 / x)*(значение в регистре) - применить унитарные способ здесь.
аналогично для Unit / LSB вы должны умножить чувствительность.
вы можете построить акселерометр, магнитометр или датчик температуры или можете быть Гирометром в одном модуле, но что делать, если клиент/пользователь хочет только один датчик?
Rgds, РП
теперь я понял трюк. Есть несколько вещей на этом MEMS вы должны знать, но которые не упоминаются в техническом описании:
- выходной регистр акселерометра составляет всего 12 бит, а не 16 бит, поэтому вам нужно сдвинуть значение вправо на 4 и умножить его на 0,001 G. Кроме того, это мало-эндианский.
- регистр выхода магнитометра 16 битов, но больш-endian. Кроме того, порядок векторов (X|Z|Y) Не (X|Y / Z). Чтобы вычислить правильное значение, вы нужно разделить X и Y на 980 Гаусс-1, в то время как это 1100 Гаусс⁻1 для Z.
- датчик температуры работает, но не откалиброван. Таким образом, вы можете использовать его для измерения изменения температуры, но без абсолютных температур. Это также всего лишь 12 бит, но big-endian, и вы должны разделить выход на 8 C⁻1.
с этой информацией можно использовать LSM303DLHC. Но кто придумал это? "Давайте построим новый акселерометр, магнитометр и термометр в одном пакете и привинчьте потребителя вверх путем смешивать длину и endianness слова вверх без упоминать его в datasheet."
техническое описание окончательно неясно в отношении интерпретации регистров ускорения. Решение Genesis Rock предполагает, что это 12-бит, который работает. (Другое решение состоит в том, чтобы предположить, что коэффициент усиления составляет 16 мг/ЛСБ вместо 1 мг/ЛСБ, но поскольку последние 4 бита ускорений кажутся всегда нулями, первое решение имеет больше смысла).
но как для температуры, так и для ускорения, если учитывать только 12 наиболее значимых битов. Последние два бита по-прежнему также всегда ноль, поэтому эффективное разрешение будет 10-битным, что сбивает с толку.
Я также не могу понять значение температуры, если в таблице данных не указано неизвестное смещение.
Я надеюсь, что другие могут подтвердить, что они получают те же результаты.
относительно выхода 12 битов акселерометра: флаг высоко-разрешения на Регистре управления 4. Он выключен по умолчанию, и нет никакой информации о том, что означает высокое разрешение. Я предполагаю, что он может включить 16-битный выход. Также на контроле регистр 4 флаг установить порядок байтов на выходе акселерометра. По умолчанию это little endian. Спецификация довольно слабая в целом.