Как заставить акселерометр чувствовать нетрадиционную гравитацию

Я работаю над проектом определения угла наклона лезвия червячного привода. Чтобы найти угол, я решил использовать 2 акселерометра. Один из них будет моим эталоном и будет стоять на подножке, другой будет на корпусе и будет перемещаться с коническим шарниром.

Я хочу, чтобы акселерометр на подножке был ориентиром. Следовательно, всякий раз, когда он движется, гравитация будет перпендикулярна акселерометру. Это, конечно, невозможно создать, потому что гравитация всегда направлена ​​ВНИЗ!! Существует ли математическое уравнение или алгоритм, который бы брал значения G акселерометра подножки и создавал "нетрадиционную, псевдо" гравитацию?

Пожалуйста, дайте мне знать, если нужны какие-либо разъяснения. Я использую акселерометр MPU6050.

введите описание изображения здесь

3-х осевой акселерометр? Вы экспериментировали с одним, они просто выводят вектор, который говорит вам (если он неподвижен), какой угол вниз?
Да сэр! Я использую 3-осевой акселерометр. Да, это так. Это дает мои три значения. Например, если он лежит, ( x=0, y=0 и z= +1). Тем не менее, я хочу сделать это ссылкой. Поэтому, если он каким-то образом наклонен, я хочу, чтобы другой акселерометр знал, что гравитация сместилась относительно эталона. Как мне это сделать?
@JasonLee, вам придется настроить прошивку. Я не знаю ни одного акселерометра, позволяющего изменять сэмплы на основе смещения.
Похоже, вам нужно либо вычитание, либо «точечный продукт» двух векторов, считанных с двух акселерометров. Это даст вам угол между ними.
это действительно вопрос физики.

Ответы (2)

Каждый акселерометр (когда он неподвижен) дает вам 3 вектора направления силы тяжести.

Предположим, что оба акселерометра не имеют смещения и имеют одинаковый коэффициент усиления по всем трем осям. Если они не идеальны, то достаточно легко получить смещение и коэффициент усиления для каждой оси с помощью шага калибровки, который включает в себя прокатку каждого из них на большое количество случайных углов и получение смещений и коэффициентов усиления таким образом, чтобы величина силы тяжести (sqrt( сумма квадратов компонентов)) постоянна независимо от ориентации акселерометра.

Угол между двумя тремя векторами теперь вычисляется через их точечное (или скалярное) произведение, которое дает вам косинус этого угла. Подробную информацию см. в wikipedia dot product.

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

Если у вас есть 3 оси - {x, y, z}, у вас будет компонент гравитационного поля Земли вдоль каждой из них, обычно представленный как Gx, Gy и Gz.

Gtotal равен 1G, следовательно, в трехмерном пространстве мы имеем 1G = SQRT (Gx^2 + Gy^2 + Gz^2). Это то, что вы используете для выполнения скалярной калибровки. Поместите акселерометр в различные положения, чтобы определить масштабный коэффициент и смещение для каждой оси.

После калибровки наклон можно рассчитать как atan2(Gxy,Gz), где Gxy = SQRT(Gx^2 + Gy^2).

Если Accel лежит ровно на столе, я предположил, что Gz расположен вдоль оси Accel, Gy направлен вверх, а Gx перпендикулярен обоим.

Надеюсь это поможет.

Вы предполагаете, что опорная плита идеально ровная и останется ровной.
Да, действительно, мне не было ясно, что он может двигаться. Я также предположил, что существует минимальная вибрация, так как это испортит любые расчеты угла. Я также предположил, что оси ортогональны, т.е. несовпадений нет. Похоже, решение требует двух Accel (по одному для каждого подвижного объекта), наклон относительно горизонтали (т.е. Земли) может быть рассчитан для каждого Accel. Разница в наклоне скажет вам угол между каждым лезвием и подножкой. Это при условии, что я понял вопрос, конечно...