Регистратор магнитного поля земли на АРДУИНО
Добавлено: 25 янв 2025, 00:37
Так вышло, что на глаза попались мне 2 устройства - плата "компаса" на HMC-5883 и "гироскоп" - MPU6050. Да, в инете полно примеров как это все подключается, как "работает" но практика личная очень часто отличается от того что пишут интернетах. Попробовал применить для некоторых нужд сначала MPU-6050. Что из него можно добыть полезного? - ну угловые и линейные ускорения. Можно воспользоваться очень крутыми возможностями встроенной математической обработки (и надо заметить - встроенный в MPU6050 процессор творит реальные чудеса и получаемые данные можно хорошо применять в управлении тем же коптером. Ведь можно получить углы Эйлера напрямую из этого чипа!)
Однако работа MPU6050 с ардуиной тяжеловата. Все получаемые данные требуют тяжелых вычислений. Была мысль попробовать сделать подобие Инерциальной Навигационной Системы на MPU6050, пусть даже очень ограниченной. Но... там столько проблем вылазит что точно это не на этой платформе решать. Так что пока из полезного применения - датчик наклонов получился).
Аналогичная история приключилась и при знакомстве с HMC-5883 ("компас"). При использовании примеров из интернетов - как бы даже все работает, до первого наклона платы. Тут начинается полный бредонос. Оказывается все хорошо работает строго горизонтально и то не всегда.
В чем дело? А дело в том, что по сути HMC-5883 это 3 датчика холла, расположенных ортогонально. И для нормальной работы с одной стороны надо располагать плату горизонтально, либо надо брать сырые данные и пересчитывать с учетом наклона платы относительно горизонта (вы уже понимаете что я клоню к обьединению с данными от MPU6050).
Но гладко было на бумаге, да забыли калибровки!
Оказывается что несмотря на все старания производителя компас в первую очередь нужно калибровать - чтобы магнитное поле земли прошло через все 3 датчика сначала одним полюсом потом другим. У каждого из 3х каналов есть (ну так выходит на практике по крайней мере) как масштабный коэффициент, так и смещение. В общем не долго думая я взял ненужную ардуино УНО (не нравится мне она своим размером) и притулил на нее сначала компас потом гироскоп. а сверху надел шилд с кнопками и LCD1602. Получился такой вполне автономный макет чтобы играться с вариантами калибровки компаса и гироскопа. Заодно и сразу на экран результаты выводить.
В один чудесный день выяснилось что калибровка компаса часто врет почему то - это был тот день когда выяснилось что величина магнитного поля земли меняется в довольно значимых пределах. А следовательно и калибровка сбивается и соответственно сложно применять компас как компас... И вот только здесь заканчивается присказка и начинается собственно сказка!
Встал вопрос как же меняется магнитное поле земли, которое регистрирует получившийся прибор? В каких пределах? В один день заметил как покаазания в течении минуты примерно поползли вверх примерно на 2.5% потом так же в течении минуты вниз примерно так же... - похоже что это была мгнитная буря. (такие дни обычно сопровождаются множеством вечерних дтп на каждом перекрестке.
Теперь написана программка которая занимается считыванием показаний с 3 датчиков магнитометра-компаса 1 раз в секунду, вычислением полного вектора магнитного поля, усреднением, и раз в час пишет во внутреннюю еепром как среднее часовое значение полного вектора магнитного поля, так и разброс полученных показаний в течении этого часа. Естественно все это происходит с привязкой к часам которые выставляются вручную с помощью кнопок после включения. Ну а я в полночь считываю показания и заношу в табличку для себя.
Однако работа MPU6050 с ардуиной тяжеловата. Все получаемые данные требуют тяжелых вычислений. Была мысль попробовать сделать подобие Инерциальной Навигационной Системы на MPU6050, пусть даже очень ограниченной. Но... там столько проблем вылазит что точно это не на этой платформе решать. Так что пока из полезного применения - датчик наклонов получился).
Аналогичная история приключилась и при знакомстве с HMC-5883 ("компас"). При использовании примеров из интернетов - как бы даже все работает, до первого наклона платы. Тут начинается полный бредонос. Оказывается все хорошо работает строго горизонтально и то не всегда.
В чем дело? А дело в том, что по сути HMC-5883 это 3 датчика холла, расположенных ортогонально. И для нормальной работы с одной стороны надо располагать плату горизонтально, либо надо брать сырые данные и пересчитывать с учетом наклона платы относительно горизонта (вы уже понимаете что я клоню к обьединению с данными от MPU6050).
Но гладко было на бумаге, да забыли калибровки!
Оказывается что несмотря на все старания производителя компас в первую очередь нужно калибровать - чтобы магнитное поле земли прошло через все 3 датчика сначала одним полюсом потом другим. У каждого из 3х каналов есть (ну так выходит на практике по крайней мере) как масштабный коэффициент, так и смещение. В общем не долго думая я взял ненужную ардуино УНО (не нравится мне она своим размером) и притулил на нее сначала компас потом гироскоп. а сверху надел шилд с кнопками и LCD1602. Получился такой вполне автономный макет чтобы играться с вариантами калибровки компаса и гироскопа. Заодно и сразу на экран результаты выводить.
В один чудесный день выяснилось что калибровка компаса часто врет почему то - это был тот день когда выяснилось что величина магнитного поля земли меняется в довольно значимых пределах. А следовательно и калибровка сбивается и соответственно сложно применять компас как компас... И вот только здесь заканчивается присказка и начинается собственно сказка!
Встал вопрос как же меняется магнитное поле земли, которое регистрирует получившийся прибор? В каких пределах? В один день заметил как покаазания в течении минуты примерно поползли вверх примерно на 2.5% потом так же в течении минуты вниз примерно так же... - похоже что это была мгнитная буря. (такие дни обычно сопровождаются множеством вечерних дтп на каждом перекрестке.
Теперь написана программка которая занимается считыванием показаний с 3 датчиков магнитометра-компаса 1 раз в секунду, вычислением полного вектора магнитного поля, усреднением, и раз в час пишет во внутреннюю еепром как среднее часовое значение полного вектора магнитного поля, так и разброс полученных показаний в течении этого часа. Естественно все это происходит с привязкой к часам которые выставляются вручную с помощью кнопок после включения. Ну а я в полночь считываю показания и заношу в табличку для себя.