Датчик Холла — это тип датчика, который определяет наличие и силу магнитного поля с помощью эффекта Холла и обычно используется в таких приложениях, как определение расстояния, позиционирование, определение скорости и измерение тока.
Эти датчики настолько недорогие, что вы можете купить их дюжину за доллар. Но когда такой недорогой датчик поставляется со встроенным многофункциональным микроконтроллером с поддержкой WiFi, таким как ESP32, он может показаться ненужным на первый взгляд. Тем не менее, кто знает? Возможно, в будущем у вас возникнет идея использовать его. Возможно, это будет датчик состояния двери WiFi. Видите? У вас уже появляются некоторые идеи.
Ранее на нашем сайте мы уже рассматривали подключение датчика Холла к различным микроконтроллерам и платам:
Но в модуле ESP32 есть встроенный датчик Холла и поэтому во многих случаях можно обойтись без внешнего подобного датчика. Итак, давайте научимся считывать показания датчика Холла в модуле ESP32. Но сначала давайте разберемся, как работают датчики Холла.
Как работают датчики Холла?
Датчик Холла использует явление, называемое эффектом Холла, которое было открыто Эдвином Холлом в 1879 году. Основная концепция его работы проста.
Рассмотрим проводящий лист в форме долларовой купюры. Когда источник постоянного напряжения подключен к левой и правой сторонам, это заставляет электроны течь через проводник по прямой линии. Если бы вы измерили напряжение между верхней и нижней частью листа, то без какого-либо магнитного поля вы бы обнаружили, что оно почти равно нулю.
Однако, когда присутствует магнитное поле с силовыми линиями, расположенными под прямым углом к току, на электроны действует сила Лоренца. Эта сила заставляет их отклоняться от прямолинейного пути, заставляя их накапливаться на одной стороне проводника, отсутствуя на другой. В результате одна сторона проводника становится более плотной по электронам, чем другая. Это приводит к разности потенциалов (известной как напряжение Холла) на проводнике. Это явление называется эффектом Холла.
Чем сильнее магнитное поле, тем больше отклонение электронов; чем больше ток, тем больше электронов нужно отклонить. В любом случае напряжение Холла будет больше. Другими словами, напряжение Холла прямо пропорционально как электрическому току, протекающему через проводник, так и напряженности магнитного поля.
Таким образом, измеряя напряжение Холла при известном токе, можно определить напряженность магнитного поля.
Датчик Холла в ESP32
ESP32 имеет встроенный датчик Холла, расположенный под металлической крышкой самого модуля ESP32-WROOM-32.
Интеграция в ESP32 означает, что вы можете легко подключить показания датчиков к функциям WiFi или Bluetooth, что упрощает удаленный мониторинг и управление различными устройствами.
Хотя встроенный датчик Холла не может заменить специализированные внешние датчики для точных приложений из-за своего позиционирования и чувствительности, он все равно предлагает ряд потенциальных применений. Это включает в себя базовое обнаружение магнитного поля, запуск определенных функций при наличии магнита поблизости или даже создание простых образовательных проектов для понимания эффекта Холла.
Примечание: поскольку датчик расположен под металлической крышкой, он менее чувствителен к слабым магнитным полям, чем автономные датчики Холла, поэтому для получения заметных показаний обычно требуются магниты значительной силы.
Считывание показаний датчика Холла
Считывание показаний датчика Холла на ESP32 простое. В Arduino IDE вы используете функцию hallRead()
. Эта функция возвращает целочисленное значение, представляющее напряжение Холла.
1 |
hallRead(); |
Пример кода
Давайте считаем значение с датчика Холла, используя пример из библиотеки. Откройте Arduino IDE, перейдите в File > Examples > ESP32 и откройте скетч HallSensor.
В этом примере просто считывается внутренний датчик Холла на ESP32 и отображается результат на последовательном мониторе.
1 2 3 4 5 6 7 8 9 10 11 12 |
int val = 0; void setup() { Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: val = hallRead(); // print the results to the serial monitor: //Serial.print("sensor = "); Serial.println(val);//to graph } |
После загрузки скетча откройте последовательный монитор на скорости передачи данных 9600 бод и нажмите кнопку EN на ESP32.
Теперь попробуйте поднести магнит близко к чипу ESP32, вы увидите, что показания меняются в зависимости от расстояния и полярности магнита.
Визуализация сигнала в последовательном плоттере поможет вам понять, что: когда магнитное поле не обнаружено, выходной сигнал остается приблизительно на уровне 100. Если приблизить южный полюс магнита, выходной сигнал увеличивается до 200, а если приблизить северный полюс магнита, выходной сигнал уменьшается до 0.