Как уже неоднократно говорилось, на выходе типичного MEMS-гироскопа мы имеем вовсе не угол наклона датчика, а угловую скорость его вращения. Другими словами, MEMS-гироскоп - это на самом деле является гиротахометром, и чтобы узнать угол наклона нам потребуется проинтегрировать его показания.
Пусть угол поворота датчика angle измеряется в градусах (гр), а угловая скорость вращения aspeed в градусах за секунду (гр/сек). Для вычисления интеграла применим метод прямоугольников. Для этого разобьем временную ось на небольшие отрезки по delta секунд в каждом. Таким образом, каждые delta секунд мы будем вычислять площадь очередного прямоугольника и прибавлять полученное значение к уже накопленной площади:
angle = angle + aspeed * delta
как определить дельту(delta) программно в цикле while?
- Код: Выделить всё
while(1){
........................
код считывания aspeed с гироскопа
........................
........................
angle = angle + aspeed * delta;//значение дельты должно быть как можно точным чтобы предотвратить дрифт нуля гироскопа
........................
........................
прочий код
........................
}