В этом тексте я написал про то какая математика скрыта за алгоритмом калибровки трёх осевого MEMS акселерометров.
Этот текст является продолжением предыдущего текста Геометрия Стенда для Калибровки MEMS Акселерометра. Настоятельно рекомендую его прочесть. Иначе всё, что вы увидите ниже будет просто пустой звук.
В прошлом тексте мы научились конструировать прямоугольный пирамидальный калибровочный стенд, который обладает одним чудо свойством. Вот так оно записывается на языке математики.
Переводя на кухонный язык, - все компоненты вектора ускорения (A_x, A_y, A_z) свободного падения расщепляются на оси акселерометра с одинаковым модулем 0.577g. Эта лемма как раз и доказана в тексте Геометрия Стенда для Калибровки MEMS Акселерометра.
Когда надо калибровать акселерометры?
MEMS акселерометры надо калибровать, когда измерения g вдоль одной и той же оси в разных знаках не равны по модулю. Это яркий признак того, что акселерометр надо калибровать. Обычно у акселерометра три оси. Поэтому надо проверять все эти оси.
Теоретический минимум.
То что мы считываем из ASIC акселерометра это вот этот вектор. (1) это даже еще не ускорение, а просто абстрактный сигнал.
Реальный же вектор ускорения это вектор (2). Ускорение со звёздочкой.
Как связаны прочитанный из ASICа сигнал и реальный вектор ускорения? По сути в микросхеме акселерометра три независимых акселерометра. На каждую ось. И каждый акселерометр обладает смещением нуля и искаженной чувствительностью. Поэтому реальное ускорение и прочитанный сигнал связаны линейным отображением (4).
Даешь сигнал и калибровочные коэффициенты, получаешь реальное ускорение. Всё по честному. В случае, если акселерометр был бы идеальный, то k_j обратятся в 1, а b_j в нули.
Постановка задачи
Даны два вектора сырых значений, который прочитаны из акселерометра, установленного на том пирамидальном стенде.
Найти калибровочные коэффициенты k_j и b_j.
Решение
В систему уравнений (1) вмонтируем уравнения (4). Получится система уравнений (5)
Поиск калибровочных коэффициентов сводится к тому, что надо просто решить систему линейных уравнений (5). Шесть уравнений и шесть неизвестных. Как же решить эту СЛАУ?
Если из первого и 4го уравнения выразить b_x и приравнять, то можно вычислить k_x. Аналогичное можно проделать для b_y и b_z. Таким образом мы получаем все масштабные калибровочные коэффициенты.
Аналогичным образом добываются коэффициенты смещения b. Надо из каждого уравнения выразить то, что мы не знаем и то, что нам не нужно. То есть k_j. Затем приравниваем k_j и алгебраическими преобразованиями выводим b_j. Easy!
Мы получили формулы для вычисления калибровочных коэффициентов. Вот так просто и не затейливо..
Практическая часть.
Прежде чем устанавливать электронную плату надо выровнять плоскость стенда. Для этого надо подкладывать под стенд листки до тех пор пока пузырек уровня по X и Y не станет показывать ноль. Только после этого можно аккуратно монтировать электронную плату.
Я прочитал несколько значений вектора A1 и A2. Взял среднее арифметическое по 5 измерениям и подал эти значение на вход алгоритма калибровки. Получил вот такие коэффициенты.
Сам микроконтроллер по входным значениям двух векторов рассчитал мне калибровки. Это же в виде текста
Скрытый текст
-->
--> pac 0.58 0.53 -0.54 -0.58 -0.58 0.50
336 I,[PyramidAccelCalib] A1:dx: 0.58,dy: 0.53,dz: -0.54
337 I,[PyramidAccelCalib] A2:dx: -0.58,dy: -0.58,dz: 0.50
338 I,[PyramidAccelCalib] AccelCalibOk
339 I,[PyramidAccelCalib]
A1:dx: 0.58,dy: 0.53,dz: -0.54,
A2:dx: -0.58,dy: -0.58,dz: 0.50,
Kx:0.995431,Ky:1.040271,Kz:1.110289,
Bx:-0.000000,By:0.026007,Bz:0.022206,
-->
Тут сразу надо учесть, что presision у данного акселерометра +/-40mg. Поэтому калибровка по смещению нам погоду особо не поменяет. Однако тем не менее пусть будет.
Итоги
Удалось получить простые аналитические формулы для калибровочных коэффициентов для случая калибровки на пирамидальном стенде. Вот они, родимые, перед вами.
Как можно заметить, калибровка акселерометров - эта задача на стыке программирования, тригонометрии, линейной алгебры, метрологии, черчения, стереометрии. В общем куча всего...
Надеюсь этот текст поможет другим программистам микроконтроллеров быстрее вникнуть в физику происходящего и корректно откалибровать свои MEMS акселерометры.
Словарь
Акроним |
Расшифровка |
СЛАУ |
Система линейных алгебраических уравнений |
MEMS |
micro-electromechanical system |
ASIC |
application-specific integrated circuit |
Ссылки
Автор: aabzel