Как стать автором
Обновить

Получение данных с MEMS гироскопа (часть I)

DIY или Сделай сам

Введение

Основной целью на данном этапе было получение данных с MEMS гироскопа, подключенного к макетной плате по I2C шине. В этой статье мне хотелось бы рассказать, что получилось. Кому интересно прошу под кат(осторожно трафик).


Что для этого потребовалось приобрести

  • Макетная плата STM32L-DISCOVERY

Почему же выбор пал именно на неё? Потому что в ней было соотношение довольно таки оптимальное цены и её возможностей из доступных на тот момент времени.

  • MEMS гироскоп L3G4200D

Среди трех осевых гироскопов особо выбора не было поэтому взяли этот, так как суть заключалась пока просто изучить что и как работает, этого вполне было достаточно.

  • Пара конденсаторов и резисторов

Что для этого пришлось сделать

  • Разработать плату для MEMS гироскопа

Для подключения гироскопа требовалось сделать печатную плату для подключения по шине I2C согласно Datasheet'у.

  • Изготовить её (сразу две на всякий случай)


  • Припаять MEMS гироскоп в печке


  • Припаять конденсаторы, резистор и шлейф


  • На этом этапе вспомнилось, что для I2C требуется подтягивающие резисторы на питание, пришлось пренебречь эстетическим видом :( получилось вот так:


  • Осталось подключить к макетной плате питание и I2C шлейф


Что для этого пришлось программно реализовать

  • Получение данных с гироскопа по прерыванию на макетную плату по шине I2C, для этого потребовалось использовать библиотеку «Stm32 peripheral library»
  • Передача данных на компьютер: макетная плата определяется как HID устройство и предоставляет компьютеру сформированный пакет данных с гироскопа, для этого была использована библиотека «STM32L1xx USB full-speed device library»
  • Получение данных на компьютере с HID устройства, на ПК приложение писалось на C# и требовалась библиотека которая бы помогла общаться с HID устройством, в этом нам помог GNU проект «USB Generic HID Communications 2_0_0_0»


Что в итоге получилось

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

  • На самом деле, данные с гироскопа сильно зашумлены и требуют основательной математической обработки.
  • Сейчас для более подробного анализа на компьютер принимаются сырые данные с гироскопа, вот как они выглядят:
Тут черным изображены сырые данные и три метода получения скользящего среднего(красный, синий и фиолетовый), гироскоп находится в состоянии покоя

Данные с оси X, гироскоп вращается

Данные с оси Y, гироскоп вращается

Данные с оси Z, гироскоп вращается

Заключение

В заключении хотелось бы сказать, что работы над проектом еще идут и хотелось бы получить более точные значения от гироскопа путем применения различных фильтров, избавится от шумов и более качественно проинтегрировать данные что бы в итоге получить углы ориентации гироскопа. Если у кого то есть советы по этому поводу то я с радостью их выслушаю. В следующей части я постараюсь рассказать о том что получилось с обработкой этих данных. Всем спасибо за внимание.
Теги:memsstm32гироскопc++csharp
Хабы: DIY или Сделай сам
Всего голосов 63: ↑56 и ↓7 +49
Просмотры28.4K

Похожие публикации

Программист микроконтроллеров (embedded)
до 80 000 ₽ГК «ЭКОМЕР»Новосибирск
Senior C++ / JS Developer
от 200 000 до 300 000 ₽ZennoLabМожно удаленно
C++ Developer (Qt)
от 120 000 ₽Flipper Devices Inc.МоскваМожно удаленно
Разработчик C++
до 150 000 ₽НТЦ ПРОТЕЙСанкт-ПетербургМожно удаленно
.NET C# Software Engineer
от 3 500 до 4 000 $Hand2NoteМожно удаленно

Лучшие публикации за сутки