Герконовые переключатели (Reed switch) в настоящее время находят широкое применение в различных приложениях, например, дверях с магнитным переключателем, ноутбуках, смартфонах и т.д. В данной статье мы рассмотрим подключение герконового переключателя (реле) к плате Arduino Uno.
Принципы работы герконового реле (переключателя)
Герконовое реле представляет собой электрический переключатель срабатывающий когда рядом с ним появляется магнитное поле. Оно было изобретено Элвудом в 1936 г. в лаборатории bell. Оно состоит из двух маленьких металлических полосок, заключенных в вакууме в стеклянную трубу. В большинстве случаев эти две металлические полоски сделаны из ферромагнитного материала и покрыты родием или рутением для большего срока службы.
Стеклянная трубка защищает металлические полоски от грязи, пыли и других частиц. Герконовое реле может успешно работать в условиях, где обычные открытые контакты работать не могут: присутствие легковоспламеняющихся газов, ядовитых жидкостей и т.д.
Существует два типа герконовых реле:
- с нормально разомкнутыми контактами;
- с нормально замкнутыми контактами.
В реле с нормально разомкнутыми контактами реле открыто (контакты разомкнуты) в отсутствии магнитного поля и закрыто при наличии магнитного поля. При появлении магнитного поля два металлических контакта внутри стеклянной в подобном реле притягиваются друг к другу и создают замкнутый контакт.
В реле с нормально замкнутыми контактами реле закрыто в отсутствии магнитного поля и открыто при наличии магнитного поля.
Обычно подобные герконовые переключатели применяются:
- при телефонных обменах;
- в ноутбуках чтобы перевести их в спящий режим при закрытии крышки;
- в датчиках открытия дверей и окон в различных системах охранной сигнализации.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Герконовое реле (Reed switch) (купить на AliExpress).
- Резисторы (купить на AliExpress).
- Светодиод (купить на AliExpress).
- Магнит.
- Соединительные провода.
Работа схемы
Схема подключения герконового реле к плате Arduino Uno представлена на следующем рисунке.
Плата Arduino Uno
Arduino Uno представляет собой плату с открытым исходным кодом, построенную на основу микроконтроллера ATmega328p. Она имеет 14 цифровых контактов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых контактов, регуляторы напряжения и другие элементы. Arduino Uno имеет 32 кБ флэш памяти, 2 кБ SRAM (статическое ОЗУ) и 1 кБ EEPROM (энергонезависимая память). Плата работает на тактовой частоте 16 МГц. Arduino Uno обеспечивает связь по последовательного каналу связи, а также поддерживает протоколы связи I2C и SPI. В следующей таблице представлены технические характеристики платы Arduino Uno.
Микроконтроллер | ATmega328p |
Рабочее напряжение | 5 В |
Входное напряжение | 7-12V (рекомендовано) |
Количество цифровых контактов ввода/вывода | 14 |
Количество аналоговых контактов | 6 |
Flash memory (память программ) | 32 Кб |
SRAM (оперативная память) | 2 Кб |
EEPROM (энергонезависимая память) | 1 Кб |
Рабочая частота микроконтроллера | 16 МГц |
Чтобы подключить герконовое реле к плате Arduino Uno мы использовали делитель напряжения. Принцип его действия показан на рисунке ниже. Vo на этом рисунке будет равно +5V когда переключатель (реле) будет открыт и 0V когда переключатель будет закрыт. В этом проекте мы использовали реле с нормально разомкнутыми контактами – реле закрыто (контакты замкнуты) при наличии магнитного поля и открыто (контакты разомкнуты) при отсутствии магнитного поля.
Объяснение кода программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы рассмотрим работу его основных фрагментов.
Вначале в программе мы должны инициализировать контакты, к которым подключены герконовое реле и светодиод. Герконовое реле подключено к цифровому контакту 4 платы Arduino, а светодиод – к цифровому контакту 7 через резистор, ограничивающий ток. Переменная “reed_status” используется для хранения статуса герконового реле.
1 2 3 |
int LED = 7; int reed_switch = 4; int reed_status; |
В следующем фрагменте программы мы должны задать режимы работы используемых контактов: контакт 4 – на ввод данных, контакт 7 – на вывод данных.
1 2 3 4 5 |
void setup() { pinMode(LED, OUTPUT); pinMode(reed_switch, INPUT); } |
Далее мы должны проверить состояние герконового переключателя, если оно равно 1 (переключатель открыт) – мы выключаем светодиод. Если же оно 0 (переключатель закрыт) – мы включаем светодиод. Этот процесс выполняется каждую секунду.
1 2 3 4 5 6 7 8 9 |
void loop() { reed_status = digitalRead(reed_switch); if (reed_status == 1) digitalWrite(LED, LOW); else digitalWrite(LED, HIGH); delay(1000); } |
Исходный код программы (скетча)
Код программы достаточно простой, я думаю, у вас не возникнет с ним сложностей.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
int LED = 7; int reed_switch = 4; int reed_status; void setup() { pinMode(LED, OUTPUT); pinMode(reed_switch, INPUT); } void loop() { reed_status = digitalRead(reed_switch); if (reed_status == 1) digitalWrite(LED, LOW); else digitalWrite(LED, HIGH); delay(1000); } |