SashaMaks>>> Что такое "g на младший байт"?
pinko>> *g на младший бит
pinko>> Это моя ошибка в наборе - думаю, ты очень хорошо понял о чем там.
SashaMaks> Нет, я сейчас не только ничего не понял, я сейчас вообще ничего не понял.
SashaMaks> 1. Что такое "на"? Разделить на? Или умножить на? Или ещё что-то?
SashaMaks> 2. Где взять младший байт/бит?
Я думал закончить это обсуждение, но вижу необходимость уточнить работу контроллера и устройства, чтобы могли дать более технически обоснованное, а не поспешное личное, мнение. (без обид здесь)
а) В заголовке файла указаны калибровочные коэффициенты для каждой оси при 4-кратном повороте на 90 градусов. Эти цифры представляют необработанные выходные данные датчика приведен как дополнительный код.
пример:
CALIBRATION_X_0 = 21 ---> 1g
(при калибровке на 1 g - это должно быть максимальное значение, отображаемое во время калибровки)
CALIBRATION_X_90 = 2 ---> 0g
CALIBRATION_X_180 = -16 ---> -1g
(при калибровке на -1 g - это должно быть минимальное значение, отображаемое во время калибровки)
CALIBRATION_X_270 = 2 ---> 0g
b) также приведены расчетные коэффициенты для линейной функции вида y = bx + a (здесь - и + зависят от ориентации датчика при пайке на печатной платы)
пример:
COEF_A_X = 2.000 ---> нулевой сдвиг в датчике
COEF_B_X = -18.500 ---> а точнее сколько бит на g
В техническом описании это соответствует следующим значениям. В моем случае ось x перевернута, поэтому -18,5
Контроллер записывает необработанные данные в память и выдает вычисленное ускорение на основе этих коэффициентов, используя линейную функцию y = bx + a. Таким образом, мы можем легко вернуть необработанные битовые данные датчика - что не имеет никакого значения.
Итак, откуда могла взяться ошибка в моем случае:
1. Нелинейность датчика - калибрую на 2 г и экстраполирую дальше. Но сам датчик имеет нелинейность во всем диапазоне 500g, равную 0,25% (NonlinearityPercentage of full scale ±0.25 %), но в большинстве случаев мы работаем в диапазоне 50g (±25g) так что мы можем ее игнорировать.
2. Изменение чувствительности из-за температуры (Sensitivity Change Due to Temperature ±0.02%/°C) - Я думаю, что нет смысла обсуждать это - мы можем проигнорировать эти значения.
3. Температурный дрейф 0g (0 g Offset vs. Temperature ±10mg/°C) - Это важно, поскольку изменение температуры на 10 градусов между калибровкой и запуском может дать изменение 0-g на 0,1g, что является значительным.
4. Неточность ручной калибровки и, соответственно, коэффициентов - эта погрешность является
случайной на каждом сеансе калибровки и может быть передана и умножена на наш практический диапазон ускорения.
5. Чувствительность поперечной оси - (Cross-Axis Sensitivity ±2.5%) - имеет большое значение и не может быть проигнорировано.
Про 1 и 2 - Как я уже упоминал (в соответствии с техническое описание) линейность в датчике и температурная линейность превосходны, и их можно игнорировать.
Про 3 - Температурный дрейф 0g - это можно легко проверить, поскольку устройство записывает данные датчиков, пока ракета ожидает. И мы можем легко проверить, какое среднее g на оси X, пока ракета ждет (положение 1g). Из первых примерно 4000 записанных точек мы получаем в среднем 0,993g где это должно быть 1.000 - это не совсем сдвиг в 0-g.
Про 4 - Может быть экстраполировано, как в пункте 3
Про 5 - Требуется сложное тестирование и его нельзя дать так просто, но он может внести значительный вклад неточности во время полета.
Для точной оценки ошибки ускорения - все эти зависимости должны быть проверены и известны что требует серьезного тестирования и сложной методологии - eто далеко за рамками любительских устройств и ракет ...
ошибка в этот момент имеет как систематическую, так и случайную составляющие и может показывать нормальные показания в диапазоне от -1 до +1 g и быть неправильной в расширенном диапазоне, а может и не быть.
Поетому здесь утверждения о том, что ошибка составляет 10% в положительном или отрицательном направлении, является чисто личным мнением без аргументов и является чистым предположением!
Думаю, мой ответ исчерпал нашу дискуссию по этому поводу.