работа с гироскопом ITG3200 и акселерометром BMA180
- Войдите на сайт для отправки комментариев
Доброго времени суток!
При работе над своим проектом столкнулся с проблемой: прочитать данные с вышеназванных датчиков я-то прочитал, но что дальше делать с этими циферками не знаю.
Во-первых, в чем они измеряться? (в долях от измеряемого диапазона?)
Во-вторых. Сырые данные (по 3-м осям) отличны от нуля в состоянии покоя, значит нужно ввести поправку. С гиром все ясно - в состоянии покоя должны быть нули. А вот с акселем по оси Z? Насколько я понимаю (по опыту эксплуатирования квадрокоптера на таких же датчиках), что аксель нуждается в калибровке, т.е берем значение по оси Z в состоянии покоя за 1G, потом соответственно ускорение по всем осям считаем пропорционально этому значению. Но т.к показания осей X и Y в состоянии покоя отличны от нуля, то нужно ввести поправку. Но ведь логично, что и по Z значение ОТЛИЧНО ОТ 1G. Т.е его нельзя принимать бех поправки за 1G. Или нет??? И если мы не знаем ни откланение от нуля, ни сколько должен быть 1G, что делать???
Вообщем, я совсем запутался, подскажите, знающие люди, пожайлуста!
Во-первых, в чем они измеряться? (в долях от измеряемого диапазона?)
Скорее всего. Точный ответ стоит искать в даташите на датчики. Но не обязательно. см. ниже. При желании можно хоть в "попугаи" переводить сырые значения.
На примере "цифр":
Дано: при нулевом ускорении датчик возвращает 600. При 1G дает 700.
Вопрос: какое ускорение означает показание 800? какое ускорение означает показание 450?
"Дальше можем либо понадеятся что датчики X,Y,Z - ведут себя одинаково и использовать эти же числа и для других осей. Либо, если датчики имеют погрешности изготовления, повторить процедуру для двух других осей.
Единственное в чем я уверен из всей этой мороки с датчиками - так это то, что по разным осям нулевое значение отличается. А вот масштаб должен быть одинаков (посмотрел код MultiWii... Не все понял касательно датчиков, но насколько я разобрался коэффициент пропорциональности для осей один)
На примере цифр:
k=700-600 = 100
800: a=(800-600)/k = 2G
450: a=(450-600)/k = -1.5G