""

Простой электронный компас

Простой электронный компас

На сегодняшний день мировая промышленность электронной техники обладает широчайшим спектром и разнообразием различных датчиков. Сегодня предлагаю рассмотреть такой датчик как HMC5883L. Он представляет собой трех осевой магнитометр (оси x, y и z). Как гласит документация на данный датчик, он изготовлен по анизотропной магниторезистивной технологии (Anisotropic Magnetoresistive (AMR) technology). Также согласно документации (даташиту), датчик имеет интерфейс I 2 C и такие настройки как чувствительность к магнитному полю, настройка скорости записи данных в регистры, количество измерений перед записью в регистры данных, режимы ожидания, единичного и непрерывного преобразования. Помимо этих основных настроек (есть и другие не столь важные для нас, возможно, которые использовать и не придется, например идентификационные регистры), датчик имеет отдельный вывод, на который выводится сигнал по завершению преобразования и записи данных в регистр, то есть по обновлению данных – как только датчик закончил измерения и записал данные для считывания в регистры, на выводе DRDY (видимо, это data ready) появляется сигнал. Для удобства этот вывод можно использовать для внешних прерываний микроконтроллера или чего-то подобного. Однако это не всегда нужно и в этом устройстве было решено не задействовать эту функцию.

Вкратце разобрались что это за датчик HMC5883L. Чтобы не мучиться с пайкой мелкого корпуса микросхемы датчика, в продаже имеются модули и в зависимости от модели имеют на себе следующие составляющие – обязательно подтягивающие резисторы для линий I 2 C, конденсаторы по питанию и необходимые в обвязке самой микросхемы датчика и стабилизатор напряжения на 3,3 вольта, в некоторых еще есть обвязка согласования уровней для I 2 C на 3,3 – 5 вольт. Данный датчик может входить в состав модулей, где он является одним из датчиков (в китайских магазинах это девяти осевые модули датчиков гироскопа, акселерометра и магнитометра, а до кучи еще и барометр, данный шедевр обычно могут применять при разработке квадрокоптеров для стабилизации полета).

Модуль HMC5883L (по названию самого датчика магнитометра) на фото ниже:

Основной задачей при разработке схемы было разобраться с работой и особенностями датчика магнитометра HMC5883L для дальнейшего применения в каких-либо проектах, разработка прошивки для экспериментов с этим датчиком, поэтому, возможно, большой функциональности на данном этапе в устройстве не будет – просто индикация угла относительно севера – схема устройства:

По традиции схема построена на микроконтроллере Atmega8. Данный микроконтроллер можно использовать как в корпусе DIP-28, так и в СМД исполнении в корпусе TQFP-32. Резистор R3 необходим для предотвращения самопроизвольного перезапускания микроконтроллера в случае появления случайных помех на выводе PC6. Резистор R3 подтягивает плюс питания к этому выводу, надежно создавая потенциал на нем. Для индикации используется жидко кристаллический (ЖК или LCD) дисплей SC1602. Он имеет 2 строки символов по шестнадцать штук в каждой из них. ЖК дисплей подключается к микроконтроллеру по четырех битной системе. Переменный резистор R2 необходим для регулировки контраста символов на дисплее. Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод “А” и “К” на плате дисплея. Подсветка включается через резистор, ограничивающий ток – R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Однако пренебрегать этим резистором не стоит во избежание порчи подсветки. Датчик питается от напряжения 3,3 вольта, а микроконтроллер от 5 вольт, поэтому при передачи данных по интерфейсу I2C используется микросхема согласования уровней PCA9517. При покупке модуля с датчиком магнитометром необходимо обратить внимание на наличие уже имеющейся схемы согласования уровней, при ее наличии PCA9517 можно убрать. Заменить PCA9517 можно на любой другой аналог или каскад, выполняющий такие же функции. Резисторы R4 – R7 подтягивают плюс питания к линиям данных интерфейса I2C. Это необходимо для корректной работы протокола. Мощность всех резисторов постоянного сопротивления составляет 0,25 Вт.

Питается вся схема от простого модуля питания на силовом трансформаторе. Переменное напряжение выпрямляется четырьмя диодами VD1 – VD4 марки 1N4007, пульсации сглаживаются конденсаторами C1 и C2. Номинал конденсатора C2 можно увеличить до 1000 – 4700 мкФ. Четыре выпрямительных диода можно заменить одним диодным мостом. Трансформатор применен марки BV EI 382 1189 – преобразует 220 вольт переменного тока в 9 вольт переменного тока. Мощность трансформатора составляет 4,5 Вт, этого вполне достаточно и еще с запасом. Такой трансформатор можно заменить любым другим силовым трансформатором, подходящим для Вас. Либо данный питающий модуль схемы заменить на импульсный источник напряжения, можно собрать схему обратноходового преобразователя либо применить иже готовый блок питания от телефона, например – все это дело вкусов и потребностей. Выпрямленное напряжение с трансформатора стабилизируется на микросхеме линейного стабилизатора L7805 , ее можно заменить на отечественный аналог пяти вольтового линейного стабилизатора КР142ЕН5А, либо применить другу микросхему стабилизатора напряжения в соответствии с подключением ее в схеме (например LM317 или импульсные стабилизаторы LM2576, LM2596, MC34063 и так далее). Далее переняв тенденции китайских инженеров был опробован стабилизатор напряжения на 3,3 вольта на микросхеме xc6206p332mr. Такой стабилизатор изготавливается на заводе в корпусе SOT-23 – то есть уже миниатюрный размер, это один из плюсов. Падение напряжения на таком стабилизаторе составляет 0,25 вольта, а собственное потребление всего 1 мкА. Весьма неплохо. Но пригоден стабилизатор напряжения только для низковольтных схем, его максимальное входное напряжение составляет 6 вольт. Не так уж и много, а нам много и не нужно по большому счету. Такой стабилизатор напряжение китайские разработчики применяют много где в различных схемах, узнать его можно по маркировка на корпусе – 662к. Напряжение 3,3 вольта используется для питания датчика магнитометра HMC5883L в соответствии с даташитом.

По традиции схема собиралась на макетной плате:

В первой строке выводятся данные об угле относительно севера. Снизу по порядку координаты x, y, z. Знак “q” означает, что число отрицательное. Датчик выдает именно координаты осей, а по их значениям можно уже высчитать угол или градус.

Карта регистров датчика HMC5883L имеет следующий вид и состав:

Разберем все необходимое нам для работы с ним. В первую очередь это конфигурационные регистры, в которых будут храниться необходимые настройки для работы датчика. В первом регистре задается число измерений перед записью в регистры данных, частота или скорость записи данных в регистры, предназначенные для считывания. Во втором регистре можно настроить чувствительность датчика к магнитному полю. Третий регистр (mode) настраивает скорость работы протокола I2C, а также режим работы датчика – режим непрерывного измерения, режим единичного измерения, погружает датчик в режим ожидания. Подробнее о том какой бит за что отвечает в регистре смотреть в даташите.

Далее 6 регистров предназначены для чтения данных измерений датчика. Каждой оси соответствует пара регистров – старший и младший байт, которые необходимо сложить, чтобы получить число.

Остальные регистры за ненадобностью использоваться не будут.

Чтобы получить угол исходя из полученных данных о координатах положения осей датчика необходимо воспользоваться формулой (получение угла на языке Си):

Однако мало просто читать данные из датчика и переводить значения в необходимые для нас пр помощи математики. Данные могут искажаться многими причинами – наличие электромагнитных полей от сети, наличие рядом металлов или магнитов и прочее. В программе прошивки реализована калибровка по самой распространенной погрешности, смещающий значения всех осей (или не всех иногда) – Hard iron. Такая погрешность может не присутствовать в каком-нибудь лесу и то не факт. Калибровка по такой погрешности устраняется просто – нужно вычислить смещение по осям и отнять его. В результате получим ровные значения угла (из-за такой погрешности показания угла также смещаются и соответственно при вращении истинность значений под вопросом). Для получения значения смещения необходимо взять средне арифметическое значение от минимума и максимума по осям (минимальное значение всегда отрицательное, при сложении получим, например так: -500 + 400 = -100, делим на 2 и получаем значение смещения). Дело в том, что точки на координатах при вращении датчика вокруг оси должны в идеале образовывать ровный круг с центром в точке схождения всех осей, то есть нуле.

В итоге получилось такое устройство: индикация угла относительно севера и значения координат трех осей на ЖК дисплее, а также калибровка показаний угла. Никаких рюшечек на дисплее не предусматривалось. Чтобы запустить калибровку, необходимо нажать на кнопку S2, и, удерживая ее, не спеша по вращать датчик на 360 градусов, можно несколько раз. Отпустить кнопку. Теперь показания будут компенсироваться по данным, полученным во время калибровки. При повторном нажатии на кнопку S2 калибровка запустится заново, затерев нулями значения минимумов и максимумов, полученных ранее. Просто сбросить калибровку можно нажатием кнопки сброса – S1.

Для программирования микроконтроллера Atmega8 необходимо знать конфигурацию фьюз битов (скриншот сделан в программе AVR Studio):

К статье прилагается прошивка для микроконтроллера Atmega8, исходный код прошивки в AVR Studio (может быть немного сумбурно, но в обилии комментариев), документация на стабилизатор напряжения x c6206 и датчик HMC5883L, а также небольшое видео, демонстрирующее работоспособность схемы (демонстрация изменения показаний при вращении датчика).

Что такое электронный компас и как он работает

В последнее время в печати появились материалы об электронном компасе, как правило, эти материалы предполагают использование в таких приборах магниторезистивных датчиков магнитного поля [2, 4, 5].

Ниже предлагается рассмотреть отдельные вопросы создания электронного компаса с применением магниточувствительных интегральных схем, именуемых в зарубежной печати “схемами Холла”.Такие схемы сегодня доступны для радиолюбителей, проживающих в странах СНГ [1,3].

В настоящее время для определения координат относительно сторон света используются различные навигационные приборы и оборудование. К таким приборам относятся: магнитный и радиокомпас, радиополукомпас, гирокомпас и гирополукомпас, приемники системы GPS и др.

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

Точное определение положения объектов на поверхности Земли и в пространстве представляет собой достаточно сложную техническую задачу, которая решается при помощи магнитометрических систем контроля пространственного положения (МСКПП) с учетом многих факторов.

В связи с этим в морском деле, в авиации, в военном деле применяют совместно компасы различных типов, и на их основе созданы единые (комплексные) курсовые системы.

Читайте также:  Подключение проводов по цветам

Однако, в “бытовых целях” наибольшее распространение получили устройства, предназначенных для регистрации магнитного поля Земли (МПЗ) и ориентирования различной аппаратуры на плоскости и в пространстве относительно направления МПЗ.

Наиболее распространенными и доступными (по стоимости) для “обычного пользователя” являются устройства, использующие принцип магнитного компаса.

Немного теории. Для понимания принципов ориентирования по магнитному полю Земли ниже приведем некоторые основные понятия и принципы.

Магнитное поле Земли

Магнитное поле Земли (часто называемое еще и геомагнитным – ГМП) в каждой точке пространства характеризуется вектором напряженности Т, направление которого определяется тремя составляющими X, Y, Z (северной, восточной и вертикальной составляющей) в прямоугольной системе координат (рис. 1), или тремя элементами Земли: горизонтальной составляющей напряженности Н, магнитным склонением D (угол между Н и плоскостью географического меридиана) и магнитным наклонением I (угол между Т и плоскостью горизонта).

Для изучения пространственного распределения основного геомагнитного поля, измеренные в разных местах значения Н, D, I наносят на специальные карты (которые носят наименование магнитных карт Земли) и соединяют линиями точки равных значений элементов. Такие линии называют соответственно изодинамами, изогонами, изоклинами.

Линия (изоклина) I = 0, т.е. магнитный экватор, не совпадает с географическим экватором. С увеличением широты значение I возрастает до 90° в магнитных полюсах. Полная напряженность Т от экватора к полюсу растет от 33,4 до 55,7 А/м (от 0,42 до 0,7 э или от 42 до 70 мкТл).

Ось центрального диполя не совпадает с осью вращения Земли. Северный магнитный полюс расположен в Гренландии близ города Туле (78° северной широты, 69° западной долготы), а южный магнитный полюс расположен в Антарктиде (78° северной широты, 249° западной долготы).

Таким образом, магнитная ось наклонена на 12° к оси вращения Земли. Следует отметить, что понятие “северный магнитный полюс” и “северный магнетизм”, как и “южный магнитный полюс” и “южный магнетизм” не совпадают.

Северный магнитный полюс Земли включает понятие южного магнетизма, а южный магнитный полюс – северного. Материковое магнитное поле Земли имеет среднюю напряженность Н около 0,45 э.

Рис. 1. Составляющие магнитного поля Земли.

Однако на земном шаре существуют области магнитных аномалий, где напряженность магнитного поля может превышать среднюю в 2-3 раза. Обычно сильные магнитные аномалии связываются с залежами магнетитовых (FeO, Fe203) и гитаномагнетитовых (примеси ТiO2) руд, с залежами других пород, обогащенных магнетитом, с некоторыми пирроктиловыми (FeS) месторождениями.

Приметами таких аномалий являются Кривой Рог, Кольские аномалии, аномалии на Урале и т.п. Наиболее сильной аномалией на земном шаре является аномалия в районе г. Курска и г. Белгорода, получившая наименование Курской магнитной аномалии (КМА).

Напряженность поля КМА (вертикальная составляющая) достигает здесь 1,Б. 1,91 э (150. 190 мкТл), Эта аномалия объясняется наличием большого рудного тела под поверхностью Земли. Наиболее известным применением явления земного магнетизма является компас, изобретенный в Китае более 2000 лет тому назад, который начал использоваться примерно в XII веке.

Принцип действия компаса основан на взаимодействии магнитного поля постоянных магнитов компаса с горизонтальной составляющей магнитного поля Земли.

Простейший компас представляет собой круглую коробку из немагнитного материала, в центре которой располагается магнитная стрелка, установленная на остром основании (например, на игле).

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

Для определения азимута компас должен находиться в строго горизонтальном положении. Точность определения направления (или азимута) простым компасом составляет З. 5п.

Точность современных судовых магнитных компасов в средних широтах и при отсутствии качки достигает 0,3. 0,5°. К недостаткам магнитного компаса относится необходимость внесения поправки в его показания на несовпадение магнитного и географического меридианов (поправка на магнитное склонение) и поправки на девиацию (вращение Земли).

Вблизи магнитных полюсов Земли и крупных магнитных аномалий точность показаний магнитного компаса резко снижается, в этих районах приходится пользоваться навигационными приборами других типов [1].

В связи с бурным развитием микромагнитоэлектроники в последнее время широкое распространение получили т.н. электронные компасы. Электронные компасы имеют массу преимуществ перед традиционными (стрелочными).

Они вибро- и удароустойчивы, к тому же конструкции современных компасов предусматривают: возможность введения местоположения пользователя, установку магнитного склонения, автоматическую компенсацию при воздействии внешних полей, установку маршрута и его запись, прямой интерфейс с электронной системой навигации и т.д.

Рис. 2. Разложение вектора магнитного поля Земли на составляющие.

Точность определения азимута электронным компасом может достигать 0,1°. В таких приборах роль “магнитной стрелки” выполняет преобразователь магнитного поля.

Принципы определения направления вектора МПЗ

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

Следует отметить, что значения напряженности магнитного поля, определенные преобразователем (датчиком) МП, могут колебаться как по амплитуде (дельта Н), так и по постоянной составляющей (Hy0 и Hx0). С учетом этого уравнение (1) принимает следующий вид (2) (см. врезку).

Так как абсолютные значения синуса и косинуса угла равны при 45 градусах, то вычисления производят только в этой области. Если предположить, что погрешность измерения H составляет 1 %, то при угле 45 градусов получают максимальное отклонение 1,1 градуса.

Для достижения необходимой точности при определении направления менее 1% в работе (2) были сформулированы следующие основные требования к Измерительной системе, предназначенной для определения вектора МПЗ (формула):

  • Должны использоваться, как минимум, два датчика МПЗ. При этом их магниточувствительные элементы располагаются перпендикулярно друг к другу Один датчик МП регистрирует другой
  • Диапазон измерений должен составлять от 20 до ЮОА/м <от 0,25 до 1,25 гс или от 25 до 125 мкТп).
  • Отклонение амплитуды смещения не должно превышать 1% от максимального значения.

Структурная схема электронного компаса

В последние годы на отечественном рынке появилось достаточно много моделей электронных компасов, выпускаемых зарубежными производителями. Эти модели имеют различные характеристики, различный набор функций и различное конструктивное оформление. Стоимость таких устройств составляет от 20 до 1000 USD.

Рис. 3. Возможный вариант структурной схемы электронного компаса.

В зависимости от назначения структурные и электрические схемы электронных компасов могут быть весьма разнообразными. Однако все они содержат некоторые общие узлы уі блоки.

Возможный вариант структурной схемы электронного компаса приведен на рис, 3. Структурная схема электронного компаса содержит следующие основные узлы и блоки:

  • Два канала для измерения напряженности МПЗ по осям X и Y
  • Канал определения угла наклона устройства.
  • Микропроцессор
  • Блок ввода местоположения пользователя.
  • Блок памяти.
  • Интерфейс,
  • Графический и (или) цифровой индикаторы.
  • Стабилизированный источник питания.

Назначение основных узов и блоков

Каналы определения азимута. Представляют собой измерители напряженности магнитного поля Земли по осям X и Y. Выходной сигнал каждого канала выдается через АЦП в цифровой форме и поступает в микропроцессор. Конструктивно каналы могут быть реализованы в виде ИМС.

Канал определения угла наклона, Представляет собой устройство, определяющее угол наклона устройства относительно Земли. Задача данного канала заключается в вы работке специальной поправки в данные канала определения азимута, при углах наклона до ±45° относительно Земли.

Выходной сигнал данного канала выдается через АЦП в цифровой форме и поступает в микропроцессор. Конструктивно канал может быть реализован в виде ИМС.

Микропроцессор служит для обработки сигналов, поступающих с каналов определения азимута и угла наклона, выработки соответствующих поправок и передаче выходных данных, через интерфейс, на графический и цифровой индикаторы направления. Обычно реализуется в виде БИС. Блок ввода местоположения пользователя.

Предназначен для ручного (“клавиатурного”) ввода информации о местоположении (например, страны или города) пользователя. Сигнал с этого блока поступает в микропроцессор, где сравнивается с фиксированной информацией о местоположении стран и городов, хранящейся в блоке памяти.

Блок памяти. Энергонезависимое электронное устройство, предназначенное для хранения сведений о географических координатах стран и городов. Может хранить данные о 500 и более объектах. Интерфейс или блок сопряжения.

Представляет собой электронное устройство, преобразующее выходной сигнал микропроцессора в форму, необходимую для работы графического и цифрового индикаторов.

Основную проблему при разработке электронных компасов составляет оптимальный выбор типа датчика или преобразователя магнитного поля (ПМП).

В качестве датчиков МП в таких устройствах могут использоваться различные типы преобразователей магнитного поля: магниторезисторы, высокочувствительные элементы Холла, магнитодиоды и магнитотранзисторы, магниточувствительные интегральные схемы, миниатюрные индуктивные и феррозондовые датчики и т.п.

Выбор типа ПМП осуществляется с учетом требуемых параметров и характеристик разрабатываемой аппаратуры, условий ее эксплуатации и целого ряда экономических факторов.

Основное требование, предъявляемое к ПМП, предназначенных для этих целей, – это высокая и явно выраженная координатная магнитная чувствительность.

В настоящее время наиболее широкое применение в составе электронных компасов получили тонкопленочные магниторезисторы и миниатюрные индуктивные датчики МП.

Принцип действия таких устройств рассматривается в работах [1,2,4,5]. Следует отметить, что разработка современного электронного компаса в “домашних условиях” представляет собой достаточно сложную задачу даже для квалифицированного радиолюбителя.

Однако, для понимания принципов работы и оценки возможностей подобных приборов, ниже рассматриваются два простейших варианта “электронного компаса”, реализованных с применением магниточувствительной ИС, построенной с использованием элемента Холла.

М. Бараночников. г. Москва. E-mail: baranochnikov[a]mail.ru РМ-07-17.

  1. Бараночников М.Л. Микромагнитоэлектроника. Том 1. – ДМК Пресс, Москва, 2001 г., 544 с.
  2. Wellhausen Н. Elecktronischer Kompab // Elektronic, 8/14, 4, 1987. – рр. 85 – 89.
  3. Бараночников М. Л. Микромагнитоэлектроника. Том 1. Том 2. – Лазерный диск. ДМК Пресс, Москва, 2002 г.
  4. Электронный компас, – Радиохобби, №2, 2002 г, с. 18.
  5. Бузыканов С. Применение магниторезистивных датчиков в системах навигации. – Chip news, №5, 2004 г., с. 60 – 62.

Электронный компас своими руками

Компас – гениальное изобретение человечества, позволившее вывести ориентацию на местности на новый уровень. А современные технологии, позволяют в свою очередь вывести на новый уровень сам компас.

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

Микросхема представляет собой магнитометр, позволяющий позиционировать направление по трем осям (x, y, z). Может использоваться в портативной электронике (имеет небольшие размеры), но радиолюбители могут внедрять его в состав радиоуправляемых моделей, в роботов и другую технику.

Рис. 1. Микросхема HMC5883L

Технология его изготовления – анизотропная магниторезистивная (AMR).
Взаимодействие с микроконтроллером осуществляется по протоколу I²C (он же IIC).
Для построения устройств, где используются прерывания (сигнал формируется магнитометром после изменения предыдущих показателей), имеется специальный вывод DRDY.

Специально для микросхем HMC5883L продаются готовые печатные платы с обвязкой (этот путь будет наиболее простым для проектов “на коленке” или для использования с программируемыми микроконтроллерами).

Один из вариантов выглядит так.

Рис. 2. Печатная плата с обвязкой

Модули могут поставляться для самостоятельной пайки или уже в готовом виде (с припаянной микросхемой).

Читайте также:  Умное реле давления для насосной станции на pic контроллере

Все что остается – подключить к Atmega, Arduino или другому микроконтроллеру, и “прошить” правильную логику работы.

Перед построением своих электронных компасов на HMC5883L стоит учесть, что датчик может проявлять чувствительность к электрическим полям, создаваемым бытовыми приборами, кабелями и т.п. Поэтому в процессе тестирования, калибровки и эксплуатации желательно обеспечить достаточное расстояние от всех потенциальных помех.

Реализация электронного компаса на Atmega8

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

Рис. 3. Схема подключения датчика

Информацию в числовом выражении угла относительно севера будет отображать небольшой LCD дисплей SC1602. За регулировку яркости последнего будет отвечать переменный резистор R2.

Микроконтроллер PCA9517 в схеме используется для согласования уровней (HMC5883L, как и говорилось выше, “понимает” IIC и питается напряжением 3,3 В, в то время как дисплей питается 5 В). Если вы приобрели готовый модуль с датчиком, на котором уже имеется встроенная система согласования уровней, то PCA9517 из схемы можно исключить.

Перед использованием устройство необходимо откалибровать. Для этого нажимается ключ S2 и датчик вращается на 360°.

В прошивке применяется дополнительный алгоритм для снижения погрешности измерения, который вычисляет среднеарифметическое число из min и max по осям. Поэтому истинность измерения при постоянном вращении существенно снижается. Обнулить регистры можно ключом S1.

Готовая прошивка и исходный листинг можно найти во вложениях (все функции детально прокомментированы, при необходимости программу можно изменить под свои нужды).

Расстановка фьюзов на скрине ниже.

Рис. 4. Расстановка фьюзов

Собрать схему для тестирования можно и на макетной плате, при желании можно аккуратно упаковать все в корпус.

Тестовый вариант электронного компаса в работе можно увидеть на фото ниже.

Рис. 5. Тестовый вариант электронного компаса в работе

Символ перед числами означает знак “минус” (то есть значение координат отрицательное).

Дисплей показывает только значения координат (слева-направо – x,y,z). Сверху – вычисленный угол относительно сервера.

Реализация электронного компаса на Arduino UNO

В случае с Arduino все гораздо проще. Готовый модуль подключается к основной плате напрямую (смотри схему ниже).

Рис. 6. Схема подключения модуля к плате

На примере выше питание подается с контакта 3,3 В, если у вас модуль с согласованием уровней, то подключение следует производит к питанию 5 В.

Для программы использовалась готовая библиотека с GitHub (скачать актуальную версию можно здесь https://github.com/bildr-org/HMC5883L). Во вложении эта библиотека тоже есть.
В данной связке отображения результатов на встроенном дисплее не предусмотрено. Получить данные угла относительно севера (0- север, 180 – юг) можно с COM-порта.

Вот вывод с тестового устройства.

Рис. 7. Вывод с тестового устройства

Датчик показывает правильные результаты только в горизонтальном положении.

Пошивка и исходники находятся здесь.

Мнения читателей

Нет комментариев. Ваш комментарий будет первый.

Вы можете оставить свой комментарий, мнение или вопрос по приведенному выше материалу:

Электроника для всех

Блог о электронике

Электронный компас на LSM303DLH


Попала в мои цепкие рученки одна интересная деталька. Трехосевой цифровой акселерометр, совмещенный с цифровым магнитометром, чувствительностью до 1.5 Гаусса. К слову, сила магнитного поля Земли около 0.4 Гаусса. Почти треть диапазона, так что из этой фиговины может получится вполне годный электронный компас. К слову, цена вопроса всего 350р за микросхему. Вполне по божески, учитывая набортный фарш и чувствительность этой микросхемы.

Микросхема LSM303DLH
Особо любопытно выглядит пузико — натуральная печатная плата. С дорожками и переходными дырками. Сразу расхотелось делать под ней дорожки. А то какая-нибудь заусеница на дорожке проковыряет лак на пузе и коротнет не туда.

Что еще не понравилось — контактные площадки не видно с торцов. Позиционировать и проверять точность запайки сложно. В этом плане QFN корпуса удобней.

Размером корпус 5х5 мм. Как тетрадная клеточка. Ужас 🙂

Схемотехника
Вот тут начинается веселуха. Складывается ощущение, что товарищи в ST решили не изобретать новую топологию кристалла, а банально запихали под один корпус акселерометр и магнитометр. Так что у них даже линии I 2 C интерфейса разные. Разная адресация и разное питание интерфейсов.

Питание микросхемы (на схеме VDD) 3.3 вольта. Но тут есть одна заковыка. Акселерометр может работать полностью от 3.3 вольт, а магнитометру требуется 1.8 вольт. Причем есть подозрение, что где то там ошибка даташита. Либо питание IO акселерометра не может быть 3.3 вольта, либо у магнитометра питание IO может быть выше 1.8 вольт. В общем очень все странно. Проверять я не рискнул, тем более по всем AN показана схемотехника, где интерфейсное питание и акселя и магнитометра 1.8 вольт. В общем, я решил перестраховаться и запитать их от 1.8 вольт. Ради этого я вкорячил в схему LM317, самое мелкое, что смог найти в наличии. LM317 это линейный стабилизатор с управляемым напряжением. Отношение R1 и R2 определяют выходное напряжение. У меня R1= 510 Ом. А R2=200 Ом, что дает примерно 1.74 вольта.

Также потребовался конвертер уровня I 2 C шины между 1.8 и 3.3 вольт. Иначе подача 3.3 вольт, на SDA/SCL линий может угробить микросхемку. Специальную микросхему конвертера искать мне было впадлу, поэтому я сколхозил его из первых попавшихся полевичков.

Посмотреть схему целиком

По быстрому развел небольшой модуль:

Печатка
Корпус просто прелесть! LGA28, мать его. Когда я впервые взял в руки эту «тетрадную клеточку» да с семью выводами с каждой стороны… В общем я конкретно так фаломорфировал. КАК.

Потом вспомнил, что я джедай 80го уровня по ЛУТ технологии, а принтер еще не окончательно скатился в УГ и что то еще даже печатает. Так что откатал и вытравил без особых проблем.


Тонер идеально лег, глянцевый слой ушел отовсюду сам, без малейших усилий.


После вытравил все в своем убитом и грязном растворе хлорного железа. Тем не менее получилось неплохо.


Смыл тонер и можно паять. Лудил обычным припоем.

Заодно опробовал новую пачку фотобумаги Lomond. Результат оказался даже лучше чем на прошлой пачке. Вот такая вот обложка. Рекомендую, отличный ЛУТ результат!


Обложка целиком

Монтаж
Запаялось, кстати, на удивление легко. Поставил примерно на место, дунул феном и готово. Даже сам не ожидал, что будет все так просто. Остальная комплектуха напаивается тривиально.

Видео урок по пайки LGA на коленке я обязательно сделаю, но попозже.

Интрефейс
Сразу скажу, что до акселерометра у меня руки еще не дошли. Да и не интересен он мне был особо. В первую очередь меня интересовал магнитометр. С акселем я разберусь позже

Работать с ним очень просто. Обращаемся с ним как с обычной EEPROM. Адрес устройства на i2c шине = 0x3C, адрес ячейки однобайтный.

У магнитометра есть лишь несколько регистров конфигурации. Подробно биты посмотрите в даташите. Я лишь кратко опишу.

  • CRA_REG_M — выбор частоты замера и смещения. Я просто выставил 30Гц.
  • CRB_REG_M — выбор коэффициента усиления магнитометра. Я оставил по дефолту, на максимуме.
  • MR_REG_M — режим работы. Спящий, одиночный замер, циклический замер.
  • OUT_X_H_M — Ось Х старший байт
  • OUT_X_L_M — Ось Х младший байт
  • OUT_Y_H_M — Ось Y старший байт
  • OUT_Y_L_M — Ось Y младший байт
  • OUT_Z_H_M — Ось Z старший байт
  • OUT_Z_L_M — Ось Z младший байт
  • SR_REG_M — Статусный регистр. Позволяет включить внутренний стабилизатор напряжения, а также показывает заблокированые ли выходные регистры.
  • IRx_REG_M — Байты идентификации. Вроде серийного номера.

Вначале инициализация. Модуль надо включить. И настроить частоту обновления

CRA_REG_M = 0х14 — выставялем частоту обновления в 30Гц MR_REG_M = 0x00 — переключаем в активный режим, непрерывное преобразование.

Дальше надо лишь читать периодически 6 выходных регистров

Причем если мы начали считывать с любого выходного регистра, то остальные регистры блокируются на запись до тех пор, пока мы не считаем все выходные регистры. Так что считывать надо сразу все шесть. Значения в регистрах знаковые, от -2048 до +2048.

Код
Использовалась библиотека TWI которую я уже описывал ранее.

Тут только прикладной код, под RTOS. Весь код в архиве. Как у меня построено, каждое действие расписано на две функции. Начало и конец. Между ними управление отдается диспетчеру.

Опыт
Я только начал экспериментировать и многое делал вручную. Модуль питается от 3.3 вольт, поэтому внимательней. Если кто экспериментирует на Pinboard, то переставьте фишку питания на 3.3 вольта. Если при этом возникнут проблемы с работой бутлоадера, то заюзайте встроенный FTBB программатор. Батники для него в архиве проекта.

Затем приклеил датчик к дну перевернутого стакана и поворачивая его на 45 градусов, снял выходную характеристику по осям Х и Y. Потом загнал все в Exel.


Кот Сосис контроллировал процесс.

Если учесть, что Х и У нормальны друг другу, а магнитометр замеряет проекцию магнитного поля Земли (направленную на север), то результатом должны быть две синусоиды, сдвинутые на 90 градусов. Что и получилось.

Результаты плавают на 10 градусов гдет, но мне интересней было посмотреть на сдвиг фаз, поэтому я не стал их все вбивать, загнал данные одного оборота и просто накопипастил для наглядности, чтобы сделать несколько периодов. Несмотря на одинаковые коэффициенты усиления Y имеет несколько большее смещение. Видимо влияние топологии печатной платы, а может и дорожка какая подмагничивает. Хотя там нет ничего мощного. Так что надо под каждый конкретный вариант калибровать.

Теперь только останется загнать все один масштаб. А дальше все просто

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

Да это просто праздник какой то!
Но это в простейшем случае. Стоит только наклонить платоформу, как все наши построения летят к чертовой матери, т.к. мы больше уже не знаем чему равны проекции на самом деле. И вот тут на помощь нам приходит акселерометр! Который точно подскажет нам ориентацию платформы относительно земли. А также в дело пойдет ось Z магнитометра.

После чего начинается векторный матан. На основании показаний акселерометра начинаем делать коррекцию с учетом наклонов. Чую тут будет дофига тригонометрии и матриц. С матрицами МК справится на раз, а тригонометрию можно сделать таблично. Так что все решаемо. Может даже займусь на досуге и воплощу все это в виде модуля, четко показывающего угол на север, как бы его не повернули.

На новогодние праздники попробую заняться математикой и откалибровать хотя бы на плоскости. Чтобы четко получался угол. А там уж и замерим насколько он точно может определять градусы азимута.

174 thoughts on “Электронный компас на LSM303DLH”

два вопроса:
1. Насколько эта штука чувствительна к бытовой технике и другим предметам (просто интересно)
2. Насколько точно, после колибровки в чистом поле, и включении его в другой точке (комнате, доме, материке) можно понять где север? или же каждый раз надо крутиться на 360 чтобы получить новые синусоиды?

Чёт мне кажется, что точность будет очень небольшой. И никакие калибровки в чистом поле не помогут. А если учесть еще всякие магнитные склонения и т.д….

А обычный компас у тебя дома тоже скачет как полоумный? Конечно от магнита он сбесится. Но уже в 20-30см от ниодимого магнита он его перестает чувствовать вообще.

Читайте также:  Замена проводки в деревянном доме своими руками

1. Магнит от винта перестает замечать уже за 20-30см.
2. Вертеться вообще не надо. Разве что для калибровки. Но это делается один раз.

У меня в комнате магнитное склонение гуляет на 90 градусов — комп, колонки, редкоземельные магниты по полке разбросаны, прочие радости.

У нормальных людей тоже всё плохо.

В открытом поле обычно всё вполне стабильно, если девайс не перемещается на сотни километров, то можно даже тупо захардкодить склонение, а не пользоваться тяжеленными картами.

Для вычисления угла по синусу/косинусу рекомендую алгоритм CORDIC
Вот «моя» реализация — измеряю угол поворота магнита.
http://electronix.ru/forum/index.php?s=&showtopic=10934&view=findpost&p=647087

Насколько я понимаю с помощью акселерометра невозможно определить положение тела относительно Земли.

Одного — нет, а с помощью трёх — можно. Более того, это чуть ли не единственный способ определения ориентации. В сочетании с измерителями угловых скоростей даёт автономную систему позиционирования.

>>В сочетании с измерителями угловых скоростей даёт автономную систему позиционирования.
в сочетании практически да, но как ты определишь своё положение в начальный момент времени?

там как раз для этого акселерометр есть

Акселерометр выдает ускорения по осям.
1) как ты определишь положение при включении??
2) вращая тело с постоянной скоростью по осям что покажет тебе акселерометр?

1. Всегда есть ускорение свободного падения. Зная его проекцию по осям мы гарантировано узнает ориентацию девайса в пространстве.

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

Все. Имеем азимут.

2. Ускорение свободного падения. Т.е. 9.8

Так ведь ускорение свободного падения это не сила)
Пока тело никуда не падает нет никакого ускорения.

З.Ы. я не пытапюсь убедить в обратном, просто не могу в этом разобраться…

Вес это сила которая всегда с тобой. Так что акселерометр ВСЕГДА показывает ускорение на осях обращенных вниз или вверх.

Исключение одно — когда акселерометр начинает падать и оказывается в невесомости.

Принцип работы акселерометра знаешь? ТАм стоит болванка которая болтается в зависимости от ускорения. Ну и сила тяжести на нее действует тоже.

Ясно. Спасибо.
Значит он измеряет не ускорения, а силы действующие по осям.

Я считал, что он измеряет ускорения относительно Земли.

Простой электронный компас

  • для автоматизации проектирования и выпуска комплекта документов (схем и отчётов к ним) на электрооборудование объектов производства, в которых для выполнения электрических связей используется проводной монтаж (низковольтные комплектные устройства (НКУ), системы релейной защиты и автоматики (РЗА), АСУ технологических процессов и т. д.);
  • для автоматизации проектирования комплекта документов на электрооборудование объектов производства с применением программируемых логических контроллеров (ПЛК).

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

При использовании КОМПАС-Электрик достигаются следующие положительные эффекты:

  • повышается скорость создания и оформления документов проекта: система обладает функциями автоматического формирования большей части документов;
  • повышается качество оформления документов: все графические обозначения электроаппаратов во всех документах проекта приведены к единому представлению, элементы оформления чертежей полностью соответствуют требованиям ЕСКД.

Система состоит из двух основных модулей: Базы данных и Редактора схем и отчетов.

База данных системы содержит комплектующие изделия, применяемые в проектах, а также условные графические обозначения (УГО), используемые при создании схем электрического вида. База данных уже имеет первичное наполнение — около 6000 типоисполнений изделий и около 600 графических обозначений. В любой момент времени в нее можно добавлять новые комплектующие изделия и УГО. База может работать на платформе СУБД Microsoft SQL Server, Microsoft Access, Borland InterBase, Oracle. Также в состав системы входит база данных продукции фирмы Schneider Electric, которая содержит более 1800 комплектующих изделий и их описаний.

В Редакторе схем и отчётов создаются, редактируются, оформляются и выводятся на печать документы проекта. Среди них — Схема электрическая принципиальная (Э3), Схема соединений (Э4), Схема расположения (Э7), Перечни элементов, Спецификации, Таблицы соединений и подключений и многое другое. Для управления проектами и их документами в Редакторе предусмотрен Менеджер проектов. Редактор схем и отчётов функционирует в среде системы КОМПАС-График.

Основные функции КОМПАС-Электрик:

  • вставка УГО из библиотеки в схему, его обработка и выполнение контрольных операций;
  • построение и редактирование линий электрической связи, электрических шин, групповых линий связи;
  • ручная и автоматическая расстановка маркировки проводов;
  • автоматическая расстановка УГО на схеме электрической соединений, схеме подключений и схеме общей;
  • полуавтоматическое формирование технологической карты раскладки проводов;
  • экспорт документов проекта в КОМПАС-График;
  • добавление в проект 3D-моделей и текстовых документов системы КОМПАС;
  • вставка спецсимволов линий связи (экран, кабель, коаксиальный проводник, скрутка и т. п.);
  • оптимизация трасс прокладки проводов;
  • функция централизованной корректировки электрических связей в изделии;
  • автоматическое формирование клеммников по ходу работы над проектом.

Для проектирования эксплуатационной документации на ПЛК используются Редактор моделей и Редактор документации ПЛК. С их помощью осуществляется добавление либо редактирование моделей ПЛК, а также проектирование и расчет данных для эксплуатационной документации на ПЛК.

КОМПАС-Электрик позволяет создавать специфические виды документов для описания работы ПЛК:

  • программа работы ПЛК;
  • схема подключения модулей ПЛК (входов/выходов);
  • тактовая циклограмма;
  • ведомость комплектующих ПЛК;
  • таблица распределения памяти ПЛК;
  • список ошибок в программе работы;
  • журнал учета изменений.

Требует для работы: КОМПАС-3D или КОМПАС-График
Производитель: АСКОН

Автомобильный компас: как сделать электронный девайс для авто на Ардуино своими руками

Я не очень хорош в нахождении мест и определении направлений, но умею читать карты и компас. В наше время навигация при помощи GPS очень популярна и у вас может возникнуть вопрос: зачем мне нужен компас? Итак, я люблю гаджеты и если я смогу сделать что-то сам, то использование такого устройства будет радовать меня намного больше. Поэтому я и решил рассказать вам как сделать компас своими руками.

Я начал с базовой функции, показывающей угол наклона и поворота цифрового магнитометра на ЖК-дисплее, но на микроконтроллере осталось множество неиспользованных аналоговых и цифровых пинов (я использовал совместимый с Ардуино JeonLab mini). Поэтому я подключил к нему цифровой датчик температуры и фототранзистор, подстраивающий яркость подсветки дисплея (одиночный светодиод).

После этого на контроллере осталось еще несколько свободных пинов и у меня есть планы по добавлению дополнительных датчиков, например наружный термометр, устройство анти-вор и т.д.

Картинка в начальной части этой инструкции иллюстрирует устройство в полной сборке и установленное поверх зеркала заднего вида автомобиля. Девайс отображает направление, наклон и температуру в салоне.

Шаг 1: Список компонентов

  • LCD: 16×2 HD44780 LCD (белый текст на синем фоне): это очень популярный дисплей, который легко найти и купить.
  • JeonLab mini v1.3: это недорогая плата, совместимая с Arduino. На рынке существует несколько небольших плат, совместимых с Arduino, так что просто выберите ту, которую можно спрятать за экранчиком.
  • Цифровой компас: MAG3110 (купил готовый на Ebay): я пробовал другой цифровой компас пару лет назад и мне не удалось его запустить, а эту модель удалось легко запрограммировать. Всё будет объяснено более детально далее в статье.
  • Датчик температуры TMP36: взгляните на спецификацию с сайта Digikey. Он очень прост в использовании.
  • Фототранзистор LTR-4206E: Я уверен, что любой другой ИК-фототранзистор будет работать не хуже.
  • Регулятор 7805: Вы знаете для чего он нужен. Зарядка автомобиля и напряжение равны примерно 13.8-14.4V, тогда как нам для работы контроллера и монитора нужно 5V.
  • Резисторы и конденсаторы (смотрите схему)
  • Штекер для автомобильного зарядника
  • Плата прототипирования
  • Кнопка-выключатель (нормально открытый, normal open, N.O.) для калибровки магнитометра
  • Цельный медный провод (1мм в диаметре) для крепления девайса
  • Стяжки для кабеля

Шаг 2: Схема устройства

JeonLab mini v1.3 — это Ардуино с минимумом функционала. Для загрузки программы понадобится USB-интерфейс FTDI, который нужен лишь для загрузки кода и последовательной коммуникации.

Подключение дисплея хорошо объяснено в документации к библиотеке на странице руководства к Arduino, для удобства я лишь изменил распиновку. Помните, что вам также нужно изменить пины и в коде программы. Одна важная вещь, о которой стоит сказать — анод светодиодной подсветки дисплея подключен не к V, а к цифровому пину 5, который поддерживает широтно-импульсную модуляцию (ШИМ, pulse-width modulation, PWM), что позволяет управлять яркостью подсветки дисплея.

У датчика температуры TMP36 есть три ножки — V, сигнал и GND. Я соединил сигнальную ножку с одним из аналоговых входов JeonLab mini. Смотрите программу Ардуино в следующем шаге, чтобы понять, как рассчитывается температура по датчику.

Фототранзистор имеет две ножки — положительную и отрицательную. Вы можете держать резистор между отрицательным проводом и GND до тех пор, пока получаете корректные значения в темноте (я тестировал девайс на рассвете) и при ярком освещении (в этом случае вам не нужно ничего измерять, так как мы и так будем получать максимальные значения). Яркость, измеренная этим фототранзистором, используется для регулировки яркости светодиода подсветки дисплея. Файлы

  • JeonLab Car Digital Compass Thermometer.sch

Шаг 3: Предварительные тесты и рассёт курса

Прежде всего, я собрал и протестировал дисплей, JeonLab mini и магнетометр MAG3110 на макетной плате. У магнетометра есть трёхосевой датчик, но, так как дороги в местности, где я живу, относительно ровные, я решил не заморачиваться со сложными формулами и просто вычислять угол направления при помощи ATAN осей X и Y — всё работает достаточно хорошо.

Сила и направление магнитного поля отличаются от места к месту. Для точного измерения электронного компаса и карты вам нужно знать магнитное отклонение (разница между севером компаса и настоящим географическим севером). В моем коде я не вычитал и не добавлял отклонение, но если в вашем местоположении оно очень большое, вы можете добавить его, чтобы компенсировать разницу.

По предварительным испытаниям я определил максимальные и минимальные значения осей X и Y, представляющие север и юг, но значения распределены по углу неравномерно. Другими словами, центральное значение не представляет восток или запад. Это, как мне известно, обыкновенно для всех полупроводниковых магнитометров, если в них нет встроенных алгоритмов компенсации. Чтобы правильно считывать направление (приблизительно), я обнаружил, что если вы знаете значения для севера и юга для каждой оси, X и Y, то достаточно просто вычислить ATAN разностей текущего значения и средние значения X и Y дадут вам угол направления (см. скетч Arduino в следующем шаге), и всё будет отлично работать. Это не идеальный способ вычисления направления, но мы и не говорим о точности до десятых долей. Я ездил с компасом в своём автомобиле около недели и результаты оказались вполне удовлетворительными.

Шаг 4: Скетч Ардуино

Я добавил настолько подробные комментарии к коду, насколько это возможно. Скачайте приложенный файл.

Шаг 5: Сборка электронных компонентов

Шаг 6: Собираем из проволки каркас

Шаг 7: Установка и готовый вид

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Рейтинг
( Пока оценок нет )
Загрузка ...
×
×
Adblock
detector