KY-003 цифровой датчик Холла. Подключение к Arduino.
KY-003 модуль датчика Холла (Hall sensor) выполнен на базе элемента «44E» и, по сути, является магнитным переключателем. Если рядом с ним нет магнитного поля, то на сигнальном выходе датчика имеется высокий уровень напряжения, и наоборот, если поле присутствует, то на выходе низкий уровень напряжения.
Технические характеристики модуля KY-003.
Магнитный датчик Холла KY-003 состоит из чувствительного элемента эффекта Холла 3144EUA-S, резистора 680 Ом и светодиода. Совместим с популярными электронными платформами, такими как Arduino и ESP32.
- Рабочее напряжение: от 4,5 В. до 24 В.
- Диапазон рабочих температур от -40 ° C. до 85 ° C.
- Размеры 18,5 x 15 мм.
Внимание! Не перепутайте модуль KY-003 с аналоговым датчиком Холла KY-035. Модули выглядят одинаково, только на модуле KY-003 распаяны светодиод и резистор, а на модуле KY-035 их нет.
Схема подключения к Arduino UNO KY-003.
Схема подключения к Arduino NANO KY-003.
Подключите линию питания (посередине) к +5 Arduino , землю (-) и GND , соответственно. Подключите сигнальный контакт (S) к контакту 3 на Arduino .
Подключение датчика Холла KY-003:
- S — цифровой выход
- “средний контакт” —“+” 5 В (можно подключить к “+5 В” на плате Arduino)
- “-” — общий
Пример кода (скетч) для “KY-003” и Arduino.
В коде KY-003 для Arduino. При обнаружении магнитного поля загорается встроенный в плату Arduino светодиод, который подключен к 13 пину. Также светодиод на самом модуле загорается при обнаружении магнитного поля. Если магнитного поля нет, то светодиод на модуле не горит.
Применение KY-003цифрового датчика Холла.
Цифровой датчик холла KY-003 можно использовать в охранных системах, системах сигнализации и контроля процесса. Также можно применять модуль KY-003, когда нужен бесконтактный датчик. Например, в случае если у нас есть герметичный резервуар (не металлический и с относительно не толстыми стенками) и нам нужно определить приближение элемента к стенке, или перемещение элемента вдоль стенки, например, поплавка в жидкости. Так как проложить в резервуаре провода мы не можем, а закрепить магнит на подвижном элементе можно. При приближении магнита к стенке, датчик холла, установленный с противоположной стороны, позволяет определить приближение. Таким способом мы получаем бесконтактный датчик.
Описание всех датчиков из набора «37 in 1 Sensors Kit for Arduino» вы можете посмотреть на странице описания данного набора модулей для Arduino .
Понравился Урок KY-003цифровой датчик Холла. Подключение к Arduino? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого
Электронный циркуль Тима
Первая из двух статей, посвящённых сборке электронных инструментов на основе датчика Холла. В этой части разбирается простейшая модификация циркуля, включающего в себя один датчик и два магнита. Вторая же часть будет посвящена более сложному инструменту — пантографу (прим. пер.).
Недавно мне пришла в голову идея собрать небольшой инструмент – электронный циркуль – чтобы показать базовые принципы работы датчика эффекта Холла. И в процессе съёмки ролика, демонстрирующего циркуль в действии, я решил также пояснить, как нахожу полюса используемых в этом циркуле магнитов.
Печать всех необходимых деталей я делал на 3D-принтере. В принципе, можно взять и другие материалы, но тут очень важна точность.
Основой проекта выступает датчик Холла 49Е и два магнита. Вычислениями при этом занимается Arduino Nano.
А поскольку AtMega328p оснащён всего лишь 10-битным АЦП, и в вычислениях используется синус, то придётся допустить некоторые погрешности. Результаты я буду выводить на двухстрочный дисплей 1602 с 16 символами на строку.
Если всё пойдёт хорошо, то я планирую реализовать и другие подобные проекты на датчиках Холла, а именно 2D и 3D-инструменты.
▍ Материалы
Ссылки на STL-файлы для печати:
▍ Шаг 1: датчик Холла 49E
Датчики Холла выпускают многие компании, хотя большой разницы между ними нет. Ниже я приложил спецификацию, которую нашёл на Honeywell.
Лично я использовал самый дешёвый, какой смог найти в интернете, модель 49E, и пластиковые детали подогнал конкретно под него.
У этого датчика всего три вывода:
- пин 1 = питание (от +2.7 до +6.5В).
- пин 2 = земля (GND).
- пин 3 = аналоговый вывод (обычно на 1 вольт меньше входного напряжения)
Вывод линейный, мВ/Гс.
В спецификации указано направление, в котором датчик определяет силу магнитного поля [N S]. Если двигать магнит ближе-дальше от датчика, то показания будут отражать магнитную силу в указанном направлении.
▍ Шаг 2: магниты
Для изменения силы магнитного поля вокруг датчика я использую два неодимовых магнита. Направление Север/Юг соответствует верху/низу магнитов, то есть ориентировано по оси высоты.
Разберём, как создаётся поле одним магнитом.
Поле сконцентрировано в его центре, где магнитные линии идут с Юга на Север параллельно. Выходя за края магнита, эти линии изгибаются и в итоге замыкаются с другой стороны — на противоположный полюс.
Если приблизить датчик к любому полюсу и сдвинуть его к одной из сторон, магнитная сила существенно снизится, поскольку линии магнитного поля замкнуты.
Датчики Холла очень чувствительны, поэтому их неточное расположение приведёт к ошибочным показаниям. Нам же нужно сократить возможное количество потенциальных ошибок. Жаль, нельзя разместить датчик внутри самого магнита — было бы идеально. Я же с целью уменьшить вероятность ошибок решил использовать два магнита.
Если расположить эти магниты недалеко друг от друга, то между ними возникнет однородное поле, близкое к такому, что должно быть внутри магнита. И если расположить в этой области датчик, то при повороте магнитов вокруг него поле должно сохранять тот же угол наклона, что и магниты.
▍ Шаг 3: вычисление угла
Магниты мы будем вращать вокруг датчика.
Вращение и простое отдаление магнитов от датчика – разные вещи. То есть в результате вращения на выводе мы будем получать не линейный результат, а значение синуса угла, на который происходит поворот.
Для лучшего понимания я сделал чертёж.
- Фиолетовый кружок – это путь, по которому магниты движутся вокруг центра, то есть датчика.
- синие линии представляют углы/позиции магнитов по мере их вращения.
- жёлтыми линиями обозначена линейные силы, которые датчик будет регистрировать с Юга на Север.
- зелёной линией показан график вычисления синусов.
- красная – это зона точности.
Поскольку вывод датчика у нас аналоговый, выходит, что точность ограничена количеством десятичных знаков значения, в которое мы можем эти аналоговые показания конвертировать.
В Arduino Nano используется 10-битный АЦП. У этого микроконтроллера тип double аналогичен float , который имеет всего 6-7 десятичных знаков. И поскольку у нас происходит вращение, а не удаление магнитов от датчика, выводом будет результат вычисления синуса.
При этом в нашем случае также неизбежны участки, в которых 10-битный АЦП не позволит произвести точные расчёты.
Углы, которые можно вычислить точно, показаны синими линиями с кружочками на конце. Проблемные же углы обозначены линиями с крестиками.
По синусоиде видно, что в крайних положениях вращения в изменении магнитной силы делений градуса получается больше. Для лучшей наглядности я специально указал область точности.
Для охвата этих проблемных зон можно задействовать второй датчик, расположив его под 90° относительно первого. Это позволит использовать только точные области каждого.
В плане математики здесь простая тригонометрия, и я покажу это, когда дело дойдёт до кода.
▍ Шаг 4: сборка циркуля
Я уже сказал, что датчик очень чувствительный, и размещать компоненты необходимо очень чётко. В этом смысле мне помог 3D-принтер, который гарантирует точную печать деталей.
При установке минимальная погрешность в выравнивании допустима, но после фиксации гулять элементы уже не должны. Дополнительно некоторые огрехи в их расположении можно будет компенсировать в коде.
▍ Шаг 5: установка датчика
Датчик нужно вклеить в отведённую для него ножку циркуля (Sensor Arm). В этой детали есть специальное отверстие для определения его правильного положения.
▍ Шаг 6: Ориентация магнитов
Очень важно правильно выставить магниты. Я для этой процедуры использовал приложение на телефоне. Подойдёт такое решение только для устройств с магнитометром. Хотя обычно, если у телефона есть GPS, то и магнитометр тоже должен быть.
Что касается приложения, то из множества вариантов я предпочёл трёхмерный, а именно 3D Compass and Magnetometer. На изображении показано типичное 3D-приложение, в котором стрелка указывает в направлении севера.
Магнитометры в телефонах не всегда расположены по центру. Лучше всего выяснить его точное положение с помощью магнита, так будет проще разобраться с полюсами.
Зная расположение магнитометра, я обычно располагаю телефон в подвешенном положении над столом и кладу под него магнит, чтобы он оказался ровно под магнитометром, и уже тогда определяю полюса.
▍ Шаг 7: установка магнитов во вторую ножку циркуля
Здесь придётся немного повозиться.
Прежде чем соединять ножки, убедитесь, что магниты могут перемещаться внутри канавки той, что с датчиком — ходить они в ней должны плотно.
Магниты необходимо зафиксировать в одном положении, обеспечив правильную направленность их полюсов, и наложить внешнюю сторону второй ножки поверх первой.
После соединения подвижными должны быть только сами ножки, сдвигаясь и раздвигаясь, как это и положено циркулю. Никаких других побочных движений или люфтов быть не должно, иначе возникнут ошибки.
▍ Шаг 8: подключение кабеля
Следующим этапом нужно припаять к датчику провода для подключения Arduino.
Мой Arduino установлен на макетной плате, и для соединения с ним я на конце провода использовал разъём DuPont «мама».
Уточнить правильность соединения контактов можно в шаге 1.
▍ Шаг 9: ЖК-дисплей
Для отображения показаний датчика я использую двухстрочный ЖК-дисплей с 16 символами на строку. Кроме того, я использовал переходной модуль PCF8575, так что для подключения мне нужны только выводы I2C. К Arduino же я подцепил всё это 4-жильным кабелем с разъёмами типа «мама» (правильно ли я всё понял и выразил. ).
▍ Шаг 10: подключение к Arduino
Схема подключения к Arduino Nano в программе Fritzing:
Файлы для скачивания:
▍ Шаг 11: код
Если вы уже работали с Arduino Nano, то наверняка также посещали профильный ресурс Arduino.cc для изучения различных нюансов.
Для тех же, кто использует устройство с архитектурой Arduino впервые, я сначала рекомендую почитать раздел руководства: Arduino IDE 2 Tutorials
Здесь можно скачать Arduino IDE и изучить инструкции, написанные самими создателями этой платформы. Помимо прочего, тут же описывается, как загружать скетч на устройство.
Ниже приведён код, который можно скачать в приложенном файле Tims_Electronic_Deviders.ino.
После скачивания скетча нужно будет поместить его в каталог с тем же именем, но без .ino.
▍ Шаг 12: калибровка
Перед калибровкой значение #defined для MAG-BIOS необходимо установить на 0 .
Для калибровки циркуля должен быть запущен Serial Monitor.
Закройте циркуль и запишите первое число, которое указано над Angle .
Откройте циркуль и снова запишите первое число, указанное над Angle . (я для соблюдения точных 180° произвожу эти манипуляции, положив циркуль на рабочий стол с разметкой).
Число при раскрытом циркуле, должно быть больше того, что отображалось при закрытом. Если получается наоборот — значит полярность магнитов перепутана.
Измените значения #defined для CAL_0 и CAL_180 согласно зафиксированным показаниям.
Ориентируясь на транспортир, выставьте циркуль в положение 60° и запишите отображённую величину угла. Пока циркуль находится в таком положении, с помощью линейки измерьте расстояние между его концами и запишите значение. Ошибка в градусах угла и расстоянии в миллиметрах будет одинаковой.
Измените значение #defined , чтобы компенсировать эту ошибку.
После калибровки показания будут близки к точным, кроме крайних значений от 0 до 15° и от 165 до 180°.
Дело в том, что в этих областях кривая синусоиды изменяется слабо.
▍ Шаг 13: повышение точности
Выше я продемонстрировал создание простейшего измерительного инструмента и принцип действия датчика Холла.
Модель 49E – это всего лишь один линейный аналоговый датчик, но здесь можно использовать и другие:
- Модель AS5600 представляет собой легко программируемый 12-битный магнитный поворотный датчик положения с аналоговым или PWM-выводом, оснащённый интерфейсом I2C.
- Модель MLX90393 предлагает 16-битный вывод, пропорциональный плотности магнитного потока, регистрируемой вдоль осей X, Y и Z. Можно выбирать между протоколами SPI и I2C.
Более дорогостоящие датчики обеспечат ещё большую точность.