2016-11-27 12 views
0

На устройстве я хочу обнаружить ряд сил: небольшие силы (минимум около 0,01 г), но и более сильные силы, такие как 0,1 г - 0,15 г.Могу ли я отказаться от гравитации только с гироскопом и магнитометром?

Это устройство будет иметь разные позиции в трехмерном пространстве, поэтому, чтобы обнаружить небольшие силы, я должен знать его угол, чтобы можно было вычесть 1g. Потому что устройство может иметь случайное положение (положение угла).

Что я сделал до сих пор: я использовал MPU6050 и использовал дополнительный фильтр с ускорением. и гироскопа. Это что-то вроде:

agnleX_k+1 = 0.98*(angle_k + deltaT * gyro_k+1) + 0.02*angle_acc_k+1; 

angle_acc угол рассчитывается из Accel. Датчик. Что-то вроде:

arctan(accelX/sqrt(accelX^2 + accelY^2 + accelZ^2 +)) 

Так что я заинтересован в:

forceX_k+1 = accelX_k+1 - 1g*sin(agnleX_k+1) 

Проблема заключается в том:

Если я хочу, чтобы обнаружить небольшие силы приходя в очень быстро, скажем, на accelX_k+1 Я хотел бы обнаружить изменение от 0 до 0,01 г или более, но в очень малом диапазоне времени. Проблема в том, что мой расчетный угол будет также зависеть от этого небольшого и быстрого изменения ускорения. хотя угол не изменился.

Думаю, мне нужно было бы сделать расчет угла независимо от ускорения. Датчик. Могу ли я сделать что-то вроде дополнительного фильтра с гироскопом и магнитометром? Будет ли это работать так же, как мой фильтр, описанный выше, но только с магнитом. датчик вместо этого? Или как вы это сделаете? Я думал об использовании MPU9250.

ответ

0

Вы указали с помощью MPU6050, который содержит как акселерометр, так и гироскоп. Вы можете использовать их независимо - получить ускорение от акселерометра и получить углы от гироскопа, а затем использовать углы для компенсации вращения. Нет необходимости, чтобы угол зависел от вашего акселерометра.