Датчик Холла при воздействии на него магнитного поля формирует электрический сигнал на своем выходе. Чем больше величина магнитного поля, тем больше значение формируемого электрического сигнала. В современном мире датчики Холла находят широкое применение в различных электронных устройствах – для измерения скорости, местоположения, пройденной дистанции, частоты вращения и т.д. На нашем сайте вы можете посмотреть все проекты, в которых был использован датчик Холла.
В данной статье мы рассмотрим подключение датчика Холла к плате Raspberry Pi. Более подробно о принципах работы датчика Холла вы можете прочитать в статье про его подключение к микроконтроллеру AVR. Также мы рассматривали подключение датчика Холла к плате Arduino.
Необходимые компоненты
- Плата Raspberry Pi (купить на AliExpress).
- Датчик Холла A3144 (купить на AliExpress).
- Светодиод (купить на AliExpress).
- SD карта.
- LAN кабель.
- Источник питания.
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Внешний вид датчика Холла A3144 показан на следующем рисунке.
Схема проекта
Схема подключения датчика Холла к плате Raspberry Pi представлена на следующем рисунке.
Датчик Холла может обеспечивать на своем выходе как аналоговый, так и цифровой сигнал. В этом проекте мы использовали цифровой выход датчика Холла потому что при использовании аналогового выхода нам бы еще пришлось подключать модуль АЦП к плате Raspberry Pi.
Внешний вид собранной на макетной плате конструкции проекта показан на следующем рисунке.
Объяснение программы для Raspberry Pi
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Код программы для нашего проекта будет достаточно простой – нам необходимо всего лишь считывать выход датчика Холла и в зависимости от его значения включать и выключать светодиод. При обнаружении датчиком Холла магнита светодиод будет включаться, а при отсутствии магнита – выключаться.
В этом проекте мы использовали подключение к плате Raspberry Pi с помощью программы putty по протоколу SSH, однако вы можете непосредственно подключать плату к монитору. Для нашего случая удаленной работы с платой мы в корневом каталоге платы создали специальный каталог, в котором будут храниться все файлы нашего проекта. Мы назвали этот каталог "hallsensor", однако вы можете использовать любое другое имя.
Для создания этого каталога мы использовали следующую команду:
1 |
mkdir hallsensor |
Затем перейдем в этот созданный каталог:
1 |
cd hallsensor |
Далее запустим редактор:
1 |
nano hallsensorcode.py |
Первым делом в коде программы мы подключим (импортируем) библиотеку для работы с контактами (RPI.GPIO).
1 |
import RPi.GPIO as gpio |
Далее мы установим режим работы с контактами по их физическим номерам (BCM) и отключим показ любых предупреждений (warnings).
1 2 |
gpio.setmode(gpio.BCM) gpio.setwarnings(False) |
Затем мы объявим (дадим осмысленные названия) используемые контакты.
1 2 |
hallpin = 2 ledpin = 3 |
Далее зададим режимы работы используемых контактов. Контакт, к которому подключен выход датчика Холла, сконфигурируем в качестве цифрового входа, а контакт, к которому подключен светодиод – в качестве цифрового выхода.
1 2 |
gpio.setup( hallpin, gpio.IN) gpio.setup(ledpin, gpio.OUT) |
Когда все эти подготовительные операции будут выполнены, мы можем приступать к написанию кода основного цикла (бесконечного) программы. В этом цикле мы будем считывать состояние выхода датчика Холла, и если на нем логический 0 (магнит обнаружен), то мы будем включать светодиод, иначе (магнит не обнаружен) мы будем выключать светодиод.
1 2 3 4 5 6 7 |
while True: if(gpio.input(hallpin) == False): gpio.output(ledpin, True) print("magnet detected") else: gpio.output(ledpin, False) print("magnetic field not detected") |
Чтобы сохранить и выйти из файла нажмите CTRL + X, а затем Y.
Затем запускаем нашу программу на выполнение с помощью команды:
1 |
sudo python hallsensorcode.py |
Когда наша программа будет работать, при поднесении магнита к датчику Холла будет зажигаться светодиод и на экране будет печататься соответствующее сообщение.
Этот проект можно использовать для конструирования, к примеру, спидометра, хотя, конечно, вычислительная мощность платы Raspberry Pi для создания спидометра будет все же избыточна и его целесообразнее все же собирать на основе платы Arduino.
Исходный код программы на Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import RPi.GPIO as gpio gpio.setmode(gpio.BCM) gpio.setwarnings(False) hallpin = 2 ledpin = 3 gpio.setup( hallpin, gpio.IN) gpio.setup(ledpin, gpio.OUT) gpio.output(ledpin, False) while True: if(gpio.input(hallpin) == False): gpio.output(ledpin, True) print("magnet detected") else: gpio.output(ledpin, False) print("magnetic field not detected") |