Отключаемые счетчики электроэнергии на пульте. Все с документами пломбами, гарантией и без посредников!

Реле на COM-порт

Реле на COM-порт

Из приведенной статьи вы узнаете как управлять реле через COM-порт компьютера. Для переключения реле используется DTR-сигнал, находящийся на 4 ножке 9-ти контактного разьема D-SUB 9.

Как видно из вышеприведенной схемы, реле подключен не напрямую к последовательному интерфейсу, а через составной (дарлингтоновский) транзистор. Для лучшей защиты COM-порта, рекомендуется заменить транзисторы оптопарой (IC ≥ 100 mA). Разумеется, тогда резистор R2 нужно будет подобрать к оптопаре.

Транзистор BC517 можно заменить отечественным КТ645А.

Причиной присутствия в схеме транзистор (оптопары) является то, что выходная мощность COM-порта недостаточна для переключения катушки реле и требуется дополнительно питание. Напряжения питания 5В здесь будет достаточно, плюс его можно взять с блока питания компьютера. Только не рекомендую брать питание от USB! Это может привести к выходу из строя USB-порта или контроллера.

В Windows системах есть небольшой недостаток: во время загрузки винды реле будет щелкать несколько раз. Количество переключений зависит от версии Windows, к примеру в XP щелкает около 7 раз.

После того, как вы собрали конструкцию, возникает резонный вопрос: а как же управлять реле?

В операционных системах Windows прямой доступ к регистрам запрещен, поэтому для управления последовательным портом, мы пойдем другим путем. В C++ можно использовать функции Windows API. Для примера приведу несколько строчек кода:

// Объявление переменных HANDLE hcom; DCB dcb; // “DCB” – структура, в которой содержится статус порта char *portname; portname=”COM1″; // Открываем дескриптор порта hcom=CreateFile(portname, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); // Считываем статус порта GetCommState(hcom, &dcb); // Устанавливаем DTR в “HIGH” dcb.fDtrControl=DTR_CONTROL_ENABLE; // Записываем новый статус SetCommState(hcom, &dcb); // Закрываем дескриптор (Это установит DTR в “LOW”!) CloseHandle(hcom);

В Linux системах можно использовать функции модема:

#include #include #include // Открываем порт (в моем случае это порт ttyS0) int fd = open(“/dev/ttyS0”, O_RDWR); // Устанавливаем DTR в “HIGH” int state = TIOCM_DTR; ioctl(fd, TIOCMSET, &state); // Устанавливаем DTR в “LOW” state = ~TIOCM_DTR; ioctl(fd, TIOCMSET, &state); // Закрываем порт close(fd);

Исходники и программы можно скачать здесь


Категория: Электроника и компьютер

Написать коментарий

*
= 5 + 8

Добавить изображение

Последние статьи