- Необходимые материалы
- Что такое магнитометр и как он работает?
- Как работает модуль датчика HMC5883L
- Принципиальная электрическая схема
- Изготовление печатных плат для цифрового компаса
- Сборка печатной платы
- Программирование Arduino
Человеческий мозг состоит из сложных слоев структур, которые помогают нам оставаться доминирующим видом на Земле. Например, энторинальная кора в вашем мозгу может дать вам чувство направления, помогая вам легко ориентироваться в местах, с которыми вы не знакомы. Но, в отличие от нас, роботам и беспилотным транспортным средствам Ariel нужно что-то, чтобы получить это чувство направления, чтобы они могли автономно маневрировать на новых территориях и ландшафтах. Разные роботы используют для этого разные типы датчиков, но обычно используется магнитометр, который может сообщить роботу, в каком географическом направлении он сейчас смотрит. Это не только поможет роботу определять направление, но и поворачивать в заранее заданном направлении и по ангелу.
Поскольку датчик может указывать географический север, юг, восток и запад, мы, люди, также можем использовать его время от времени, когда это необходимо. Итак, в этой статье давайте попробуем понять, как работает датчик магнитометра и как его взаимодействовать с микроконтроллером, таким как Arduino. Здесь мы создадим крутой цифровой компас, который поможет нам находить направления, за счет светодиода, указывающего направление на север. Этот цифровой компас аккуратно изготовлен на печатной плате от PCBGOGO, так что я могу носить его в следующий раз, когда выхожу на природу и хочу, чтобы я заблудился, просто чтобы использовать эту вещь, чтобы найти дорогу домой. Давайте начнем.
Необходимые материалы
- Arduino Pro mini
- Датчик магнитометра HMC5883L
- Светодиодные фонари - 8Nos
- Резистор 470Ом - 8Nos
- Бочка Джек
- Надежный производитель печатных плат, такой как PCBgogo
- Программатор FTDI для мини
- ПК / Ноутбук
Что такое магнитометр и как он работает?
Прежде чем мы погрузимся в схему, давайте немного разберемся с магнитометрами и их работой. Как следует из названия, термин Магнето не относится к тому сумасшедшему мутанту в чуде, который мог управлять металлами, просто играя на пианино в воздухе. Ой! Но мне нравится этот парень, он крут.
Магнитометр - это фактически часть оборудования, которое может определять магнитные полюса Земли и определять направление в соответствии с ними. Все мы знаем, что Земля - это огромный кусок сферического магнита с Северным и Южным полюсами. И из-за этого возникает магнитное поле. Магнитометр определяет это магнитное поле и на основании направления магнитного поля может определить направление, в котором мы смотрим.
Как работает модуль датчика HMC5883L
HMC5883L быть датчик магнитометра делает то же самое. На нем установлена микросхема HMC5883L от Honeywell. Эта ИС имеет внутри 3 магниторезистивных материала, расположенных по осям x, y и z. Величина тока, протекающего через эти материалы, чувствительна к магнитному полю Земли. Таким образом, измеряя изменение тока, протекающего через эти материалы, мы можем обнаружить изменение магнитного поля Земли. После того, как изменение магнитного поля будет поглощено, значения могут быть отправлены на любой встроенный контроллер, такой как микроконтроллер или процессор, через протокол I2C.
Поскольку датчик работает, считывая магнитное поле, на выходные значения сильно повлияет размещение рядом металла. Такое поведение можно также использовать для использования этих датчиков в качестве металлоискателей. Следует проявлять осторожность, чтобы не приближать магниты к этому датчику, поскольку сильное магнитное поле магнита может вызвать ложные значения на датчике.
Разница между HMC5883L и QMC5883L
Многие новички часто путают эти датчики. Это связано с тем, что некоторые поставщики (на самом деле большинство) продают датчики QMC5883L вместо оригинального HMC5883L от Honeywell. В основном это связано с тем, что QMC5883L намного дешевле модуля HMC5883L. Печально то, что работа этих двух датчиков немного отличается, и один и тот же код нельзя использовать для обоих. Это связано с тем, что адреса I2C обоих датчиков не совпадают. Код, приведенный в этом руководстве, будет работать только с QMC5883L, общедоступным сенсорным модулем.
Чтобы узнать, какая у вас модель датчика, вам просто нужно внимательно посмотреть на саму ИС, чтобы прочитать, что написано на ней. Если написано что-то вроде L883, то это HMC58836L, а если написано что-то вроде DA5883, то это ИС QMC5883L. Оба модуля показаны на рисунке ниже для облегчения понимания.
Принципиальная электрическая схема
Схема для этого цифрового компаса на основе Arduino довольно проста, нам просто нужно связать датчик HMC5883L с Arduino и подключить 8 светодиодов к контактам GPIO Arduino Pro mini. Полная принципиальная схема показана ниже.
Модуль датчика имеет 5 контактов, из которых DRDY (Data Ready) не используется в нашем проекте, поскольку мы работаем с датчиком в непрерывном режиме. Вывод Vcc и заземления используется для питания модуля напряжением 5 В от платы Arduino. SCL и SDA - это линии шины связи I2C, которые подключены к контактам A4 и A5 I2C Arduino Pro mini соответственно. Поскольку в самом модуле есть резистор с высоким сопротивлением на линиях, нет необходимости добавлять их извне.
Чтобы указать направление, мы использовали 8 светодиодов, все из которых подключены к контактам GPIO Arduino через токоограничивающий резистор на 470 Ом. Полная схема питается от батареи 9В через цилиндрический разъем. Это 9 В подается непосредственно на вывод Vin Arduino, где оно регулируется до 5 В с помощью встроенного регулятора Arduino. Эти 5 В затем используются для питания датчика и Arduino.
Изготовление печатных плат для цифрового компаса
Идея схемы состоит в том, чтобы расположить 8 светодиодов по кругу так, чтобы каждый светодиод указывал на все 8 направлений, а именно на север, северо-восток, восток, юго-восток, юг, юго-запад, запад и северо-запад соответственно. Так что нелегко разместить их аккуратно на макете или даже на перфорированной плате, если на то пошло. Разработка печатной платы для этой схемы сделает ее более аккуратной и простой в использовании. Поэтому я открыл программу для проектирования печатных плат, расположил светодиоды и резистор аккуратным круговым узором и соединил дорожки, чтобы сформировать соединения. После завершения мой дизайн выглядел примерно так, как показано ниже. Вы также можете скачать файл Gerber по приведенной ниже ссылке.
- Скачать файл Gerber для печатной платы цифрового компаса
Я спроектировал его как двухстороннюю плату, так как я хочу, чтобы Arduino находился в нижней части моей печатной платы, чтобы она не портила внешний вид моей печатной платы. Если вы беспокоитесь о том, что вам придется заплатить высокую цену за двухстороннюю печатную плату, то подождите, у меня есть хорошая новинка.
Теперь, когда наш Дизайн готов, пора их изготовить. Сделать печатную плату довольно просто, просто выполните следующие действия.
Шаг 1. Зайдите на сайт www.pcbgogo.com, зарегистрируйтесь, если вы впервые. Затем на вкладке прототипа печатной платы введите размеры вашей печатной платы, количество слоев и количество требуемых печатных плат. Размер моей печатной платы 80 см × 80 см, поэтому вкладка выглядит так, как показано ниже.
Шаг 2: Продолжите, нажав кнопку Цитировать сейчас . Вы попадете на страницу, где при необходимости установите несколько дополнительных параметров, например, используемый материал, интервал дорожек и т. Д. Но в большинстве случаев значения по умолчанию будут работать нормально. Единственное, что мы должны здесь учитывать, - это цена и время. Как видите, время сборки составляет всего 2-3 дня, а для нашего PSB это всего лишь 5 долларов. Затем вы можете выбрать предпочтительный способ доставки в зависимости от ваших требований.
Шаг 3: Последний шаг - загрузить файл Gerber и продолжить оплату. Чтобы убедиться, что процесс проходит гладко, PCBGOGO проверяет, действителен ли ваш файл Gerber, прежде чем продолжить оплату. Таким образом, вы можете быть уверены, что ваша печатная плата удобна для изготовления и будет доставлена вам в установленном порядке.
Сборка печатной платы
После того, как плата была заказана, она пришла ко мне через несколько дней, хотя курьер доставил ее в аккуратно помеченную, хорошо упакованную коробку, и, как всегда, качество печатной платы было потрясающим. Я делюсь несколькими фотографиями досок ниже, чтобы вы могли судить.
Я включил паяльник и приступил к сборке платы. Поскольку посадочные места, контактные площадки, переходные отверстия и шелкография идеально подходят по форме и размеру, у меня не было проблем со сборкой платы. Плата была готова всего за 10 минут с момента распаковки коробки.
Ниже представлены некоторые фотографии платы после пайки.
Программирование Arduino
Теперь, когда наше оборудование готово, давайте посмотрим на программу, которую нужно загрузить в нашу плату Arduino. Цель кода - считывать данные с датчика магнитометра QMC5883L и преобразовывать их в градусы (от 0 до 360). Как только мы узнаем градус, мы должны включить светодиод, указывающий определенное направление. Направление, которое я использовал в этой программе, - север. Таким образом, независимо от того, где вы находитесь, на вашей плате будет гореть только один светодиод, а направление светодиода будет указывать на СЕВЕР. Как только можно будет позже вычислить другое направление, станет известно одно направление.
Полный код этого проекта «Цифровой компас» можно найти в конце этой страницы. Вы можете напрямую загрузить его на свою доску после включения библиотеки, и вы готовы к работе. Но если вы хотите знать