Рейтинг@Mail.ru
Модуль с датчиком Холла 49E
Модуль с датчиком Холла 49E

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

Print Friendly, PDF & Email

В статье рассматривается подключение датчика Холла 49E к Arduino.

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

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

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

Приобрести такой датчик можно здесь.

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

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

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

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

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

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

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

Подключение модуля с датчиком Холла к 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

Последнее изменениеСреда, 03 Октябрь 2018 23:17 Прочитано 6957 раз

Поделиться

Print Friendly, PDF & Email

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены