Калибровка MEMS Акселерометра [Часть 2]

в 16:40, , рубрики: MEMS, MEMS акселерометры, акселерометры, алгебра, Калибровка, калибровка акселерометров, метрология, СЛАУ, стереометрия, ускорение свободного падения
Калибровка MEMS Акселерометра [Часть 2] - 1

В этом тексте я написал про то какая математика скрыта за алгоритмом калибровки трёх осевого MEMS акселерометров.

Этот текст является продолжением предыдущего текста Геометрия Стенда для Калибровки MEMS Акселерометра. Настоятельно рекомендую его прочесть. Иначе всё, что вы увидите ниже будет просто пустой звук.

В прошлом тексте мы научились конструировать прямоугольный пирамидальный калибровочный стенд, который обладает одним чудо свойством. Вот так оно записывается на языке математики.

 left{  begin{array}{l} s=frac{1}{sqrt{3}}=0.5773502692 qquad    \ a_{1x}^*=sg  qquad  \  a_{1y}^*=sg  qquad \  a_{1z}^*=-sg qquad qquad qquad qquad qquad (1) \   \ a_{2x}^*=-sg  qquad  \  a_{2y}^*=-sg  qquad  \  a_{2z}^*=sg  qquad  \  end{array}  right.

Переводя на кухонный язык, - все компоненты вектора ускорения (A_x, A_y, A_z) свободного падения расщепляются на оси акселерометра с одинаковым модулем 0.577g. Эта лемма как раз и доказана в тексте Геометрия Стенда для Калибровки MEMS Акселерометра.

Когда надо калибровать акселерометры?

MEMS акселерометры надо калибровать, когда измерения g вдоль одной и той же оси в разных знаках не равны по модулю. Это яркий признак того, что акселерометр надо калибровать. Обычно у акселерометра три оси. Поэтому надо проверять все эти оси.

Теоретический минимум.

То что мы считываем из ASIC акселерометра это вот этот вектор. (1) это даже еще не ускорение, а просто абстрактный сигнал.

overrightarrow{a}=(a_x,a_y,a_z) qquad  qquad  (2)

Реальный же вектор ускорения это вектор (2). Ускорение со звёздочкой.

overrightarrow{a^*}=(a_x^*,a_y^*,a_z^*) qquad  qquad  (3)

Как связаны прочитанный из ASICа сигнал и реальный вектор ускорения? По сути в микросхеме акселерометра три независимых акселерометра. На каждую ось. И каждый акселерометр обладает смещением нуля и искаженной чувствительностью. Поэтому реальное ускорение и прочитанный сигнал связаны линейным отображением (4).

 left{  begin{array}{l} a_x^*=a_xk_x+b_x  qquad  \ a_y^*=a_yk_y+b_y  qquad (4) \ a_z^*=a_zk_z+b_z  qquad \ end{array}  right.

Даешь сигнал и калибровочные коэффициенты, получаешь реальное ускорение. Всё по честному. В случае, если акселерометр был бы идеальный, то k_j обратятся в 1, а b_j в нули.

Постановка задачи

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

A_1=(a_{1x},a_{1y},a_{1z}) \ A_2=(a_{2x},a_{2y},a_{2z})

Найти калибровочные коэффициенты k_j и b_j.

k_x , quad k_y ,quad k_z ; quad b_x ,quad b_y ,quad b_z

Решение

В систему уравнений (1) вмонтируем уравнения (4). Получится система уравнений (5)

  left{  begin{array}{l}    a_{1x}k_x+b_x=sg  qquad  \  a_{1y}k_y+b_y=sg  qquad \ a_{1z}k_z+b_z=-sg qquad qquad qquad qquad qquad (5) \   \  a_{2x}k_x+b_x=-sg  qquad  \  a_{2y}k_y+b_y=-sg  qquad  \  a_{2z}k_z+b_z=sg  qquad  \  end{array}  right.

Поиск калибровочных коэффициентов сводится к тому, что надо просто решить систему линейных уравнений (5). Шесть уравнений и шесть неизвестных. Как же решить эту СЛАУ?

Если из первого и 4го уравнения выразить b_x и приравнять, то можно вычислить k_x. Аналогичное можно проделать для b_y и b_z. Таким образом мы получаем все масштабные калибровочные коэффициенты.

  left{  begin{array}{l}   k_x=frac{2sg}{a_{1x}-a_{2x}} qquad  qquad         \  k_y=frac{2sg}{a_{1y}-a_{2y}} qquad     (6)\   k_z=frac{-2sg}{a_{1z}-a_{2z}} qquad qquad         \    end{array}  right.

Аналогичным образом добываются коэффициенты смещения b. Надо из каждого уравнения выразить то, что мы не знаем и то, что нам не нужно. То есть k_j. Затем приравниваем k_j и алгебраическими преобразованиями выводим b_j. Easy!

  left{  begin{array}{l}   b_x=sgfrac{a_{1x}+a_{2x}}{a_{2x}-a_{1x}} qquad  qquad         \  b_y=sgfrac{a_{1y}+a_{2y}}{a_{2y}-a_{1y}} qquad  qquad       (7)  \  b_z=sgfrac{a_{1z}+a_{2z}}{a_{1z}-a_{2z}} qquad  qquad         \     end{array}  right.

Мы получили формулы для вычисления калибровочных коэффициентов. Вот так просто и не затейливо..

Практическая часть.

Прежде чем устанавливать электронную плату надо выровнять плоскость стенда. Для этого надо подкладывать под стенд листки до тех пор пока пузырек уровня по X и Y не станет показывать ноль. Только после этого можно аккуратно монтировать электронную плату.

Калибровка MEMS Акселерометра [Часть 2] - 11

Я прочитал несколько значений вектора A1 и A2. Взял среднее арифметическое по 5 измерениям и подал эти значение на вход алгоритма калибровки. Получил вот такие коэффициенты.

Калибровка MEMS Акселерометра [Часть 2] - 12

Сам микроконтроллер по входным значениям двух векторов рассчитал мне калибровки. Это же в виде текста

Скрытый текст
-->
--> 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. Поэтому калибровка по смещению нам погоду особо не поменяет. Однако тем не менее пусть будет.

Итоги

Удалось получить простые аналитические формулы для калибровочных коэффициентов для случая калибровки на пирамидальном стенде. Вот они, родимые, перед вами.

  left{  begin{array}{l}     k_x=frac{2sg}{a_{1x}-a_{2x}} qquad  qquad         \    k_y=frac{2sg}{a_{1y}-a_{2y}} qquad      \     k_z=frac{-2sg}{a_{1z}-a_{2z}} qquad qquad \ qquad  qquad qquad qquad qquad qquad (8)\   b_x=sgfrac{a_{1x}+a_{2x}}{a_{2x}-a_{1x}} qquad  qquad         \   b_y=sgfrac{a_{1y}+a_{2y}}{a_{2y}-a_{1y}} qquad  qquad         \   b_z=sgfrac{a_{1z}+a_{2z}}{a_{1z}-a_{2z}} qquad  qquad         \      end{array}  right.

Как можно заметить, калибровка акселерометров - эта задача на стыке программирования, тригонометрии, линейной алгебры, метрологии, черчения, стереометрии. В общем куча всего...

Надеюсь этот текст поможет другим программистам микроконтроллеров быстрее вникнуть в физику происходящего и корректно откалибровать свои MEMS акселерометры.

Словарь

Акроним

Расшифровка

СЛАУ

Система линейных алгебраических уравнений

MEMS

micro-electromechanical system

ASIC

application-specific integrated circuit

Ссылки

Автор: aabzel

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js