Как подключить датчик Холла 49E к ArduinoОпубликовано: 27.08.2018 1 Описание датчика Холла 49EДатчик Холла – это прибор, который регистрирует изменение напряжённости магнитного поля. В настоящее время датчики на основе эффекта Холла нашли широкое применение. Например: датчики скорости вращения – широко используются в автомобилестроении и везде, где требуется определить скорость вращения колеса или иного вращающегося объекта; сенсоры на основе эффекта Холла пришли на замену механическим герконам; датчики приближения; типичный пример – раскладной чехол на вашем смартфоне, который включает подсветку экрана при открытии; измерение угла поворота; измерение величины вибрации; измерение величины магнитного поля – магнитометры и цифровые компасы; измерение силы тока (переменного и постоянного); измерение воздушных зазоров, уровня жидкости, и многие другие.2 Схема подключения модуля с датчиком Холла к ArduinoМодуль с датчиком Холла содержит следующие компоненты: подстроечный резистор, двухканальный компаратор, несколько согласующих резисторов, пару светодиодов и собственно, сам датчик Холла 49E. Модуль с датчиком Холла 49EПодстроечный резистор служит для настройки чувствительности датчика Холла. Первый светодиод сигнализирует о наличии напряжения питания на модуле, второй – о превышении магнитным полем установленного порога срабатывания. Модуль с датчиком имеет 4 вывода. Назначение выводов приведено в таблице. В третьем столбце таблицы – соответствующий вывод платы Arduino, к которому будет подключаться модуль.
Вот как будет выглядеть модуль с датчиком Холла, подключённый к плате Arduino Nano: Подключение модуля с датчиком Холла к Arduino Nano2 Скетч для считывания показаний датчика Холла 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 |