Самодельный датчик холла ардуино

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.

Более дорогостоящие датчики обеспечат ещё большую точность.

Источник

Adblock
detector