Главная Новости

Как подключить датчик Холла 49E к Arduino

Опубликовано: 27.08.2018

1 Описание датчика Холла 49E

Датчик Холла – это прибор, который регистрирует изменение напряжённости магнитного поля. В настоящее время датчики на основе эффекта Холла нашли широкое применение. Например:

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

2 Схема подключения модуля с датчиком Холла к Arduino

Модуль с датчиком Холла содержит следующие компоненты: подстроечный резистор, двухканальный компаратор, несколько согласующих резисторов, пару светодиодов и собственно, сам датчик Холла 49E.

Модуль с датчиком Холла 49E

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

Модуль с датчиком имеет 4 вывода. Назначение выводов приведено в таблице. В третьем столбце таблицы – соответствующий вывод платы Arduino, к которому будет подключаться модуль.

Вывод Назначение Вывод Arduino
G Земля. GND
+ Питание +2,3…10 В. 5V
AO Аналоговый выход – значение напряжённости магнитного поля. A0
DO Цифровой выход – индикатор превышения напряжённости магнитного поля заданного порога. 12

Вот как будет выглядеть модуль с датчиком Холла, подключённый к плате Arduino Nano:

Подключение модуля с датчиком Холла к Arduino Nano

2 Скетч для считывания показаний датчика Холла 49E

Итак, давайте проверим наш датчик в действии. Напишем самый простой скетч, который только и делает, что выводит считанные значения в последовательный порт.

int analogPin = A0; // с аналогового выхода датчика Холла int digitalPin = 12; // с цифрового выхода датчика Холла void setup() { pinMode(digitalPin, INPUT); Serial.begin(9600); } void loop() { int analogValue = analogRead(analogPin); // считываем аналоговое значение int digitalValue = digitalRead(digitalPin); // считываем цифровое значение Serial.println((String)digitalValue + "\t" + (String)analogValue); delay(100); }

Загрузим скетч и посмотрим, что же выводится в порт:

Вывод в последовательный порт показаний датчика Холла

Очень интересно. Вывод цифрового канала понятен: "0" – магнитное поле ниже заданного подстроечным резистором значения, "1" – выше (я поднёс магнит к датчику). А что же показывает аналоговый канал? Разберёмся с этим чуть позже.

3 Скетч для определения скорости вращения диска

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

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

Установка для определения скорости вращения на основании показаний датчика Холла

Вспомним формулу угловой скорости: ω = φ / t где ω – угловая скорость, φ – угол поворота, t – время, за которое диск повернулся на этот угол. В нашем случае угол (1 оборот) будет равен 360° или 2π радиан. Всё, что нам остаётся – это подсчитать время, за которое происходит один оборот диска.

В скетче мы будем отлавливать переход сигнала с датчика от HIGH к LOW и вычислять разницу между двумя последовательными переходами.

Временная диаграмма цифрового сигнала с датчика Холла для вращающегося диска

Для определения промежутка времени используем встроенную функцию millis() , которая возвращает количество миллисекунд, прошедших с момента включения платы Arduino.

int digitalPin = 12; // с цифрового выхода датчика Холла unsigned long runTime; // время с запуска платы Arduino, мс int prevValue = 0; // предыдущее считанное значение void setup() { pinMode(digitalPin, INPUT); Serial.begin(9600); runTime = millis(); // запоминаем время запуска программы } void loop() { int digitalValue = digitalRead(digitalPin); // значение с цифрового канала delay(50); // небольшая задержка чтобы исключить дребезг контактов if ((prevValue == HIGH) && (digitalValue == LOW)) { // ловим переход HIGH->LOW сигнала unsigned long timeSpan = millis() - runTime; // время одного оборота, мс runTime = millis(); // запомним текущее время Serial.println("Период оборота = " + (String)timeSpan + " мс"); double omega = 2 * PI / (timeSpan * 1.0E-3); Serial.println("Угловая скорость = " + (String)omega + " рад/с"); } prevValue = digitalValue; // запомним предыдущее значение датчика Холла }

Загрузим скетч, и начнём вращать наш диск с магнитом. Период оборота и угловая скорость выводятся в окно консоли:

Скорость и период вращения диска выводятся в монитор последовательного порта

Кстати, если на небольшом расстоянии друг за другом на диске разместить два магнита, то можно будет определить не только скорость вращения, но и направление. Естественно, скетч придётся немного усложнить.

Возвращаясь к идее спидометра для велосипеда, нужно вспомнить ещё одну формулу – связь угловой и линейной скоростей: v = ω r

Здесь v – линейная скорость, ω – угловая скорость, r – радиус колеса велосипеда. Теперь несложно дописать наш последний скетч с учётом этой формулы.

4 Значения с аналогового каналадатчика Холла 49E

Теперь разберёмся, что же показывают аналоговые значения с датчика Холла.

Датчик выдаёт напряжение, которое изменяется в зависимости от величины магнитного поля. Вектор индукции магнитного поля измеряется в Гауссах (Гс, GS по-английски). Согласно техническому описанию на детектор Холла, пределы измерения датчика Холла 49E ±1500 Гс с линейным участком от −1200 до +1200 Гс., а чувствительность датчика примерно 2,9 мВ/Гс. Рассмотрим график зависимости напряжения на датчике Холла от величины магнитного поля:

График зависимости напряжения на датчике Холла от величины магнитного поля

Помните наш первый скетч? Показания, снятые с датчика, изменялись в районе 508..525 отчётов (левая шкала ординат на графике). Если перевести их в вольты, то это как раз около нуля шкалы отсчёта датчика, или 2,5 В (правая шкала). Если мы поднесём магнит одним полюсом к датчику Холла, показания будут меняться от нуля в одну сторону, если поднесём другим полюсом – в другую.

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

Скачать техническое описание (datasheet) на датчик Холла 49E

© 2008 — 2012 offroad.net.ua . All rights reserved. by nucleart.net 2008
rss