Управление бистабильным реле при помощи одного пина микроконтроллера
13 сентября 2021
Бистабильные реле, такие, как использованные нами ранее HFD2/012-S-L2, не сложнее в управлении, чем обычные. Пускаем ток через одну катушку, и реле переключается в первое положение. Пускаем ток через другую, и реле переключается во второе положение. Обесточиваем обе катушки, и реле держит свое последнее состояние. Вот только если делать это «в лоб», то понадобится два пина микроконтроллера. Спрашивается, а можно ли обойтись только одним?
Оказывается, что можно. Рассмотрим следующую схему:
Здесь применен сдвоенный компаратор LM393. Он имеет выход с открытым коллектором и по даташиту [PDF] может пропускать через себя до 20 мА. То что нужно для нашей задачи.
Когда на пине микроконтроллера низкое напряжение, верхний компаратор на схеме притягивает первую катушку к земле. Когда напряжение на пине высокое, нижний компаратор притягивает к земле вторую катушку. Когда пин находится в состоянии высокого импеданса (high-Z), обе катушки обесточены.
Соответствующий код:
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
void switchPinModeToOutput() {
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
void switchRelayToPositionA() {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
switchPinModeToOutput();
HAL_Delay(10);
switchPinModeToInput();
}
void switchRelayToPositionB() {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
switchPinModeToOutput();
HAL_Delay(10);
switchPinModeToInput();
}
void init() {
switchPinModeToInput();
}
void loop() {
switchRelayToPositionA();
HAL_Delay(1000);
switchRelayToPositionB();
HAL_Delay(1000);
}
Для тестирования всего этого дела был использован макет на основе STM32F030:
Все работает как часы. По площади схема занимает столько же, сколько и пара транзисторов в корпусе TO-92 с резисторами на базе. По деньгам получается дороже. Но учитывая общую стоимость самодельного трансивера (или для чего вы намерены применить схему), разница в итоге будет незначительной.
Дополнение: Описанные здесь идеи были применены в трансивере AYN/A.
Метки: STM32, Электроника.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.