Главная » Компьютерная электроника
Призовой фонд
на июль 2017 г.
1. Осциллограф DSO138
Паяльник
2. Регулируемый паяльник 60 Вт
Паяльник
3. 200 руб.
От пользователей

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

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

Схема управления реле через COM-порт

Как видно из вышеприведенной схемы, реле подключен не напрямую к последовательному интерфейсу, а через составной (дарлингтоновский) транзистор. Для лучшей защиты 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);

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

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
T1 Биполярный транзистор
BC517
1 Составной транзисторПоиск в FivelВ блокнот
D1, D2 Диод2 Поиск в FivelВ блокнот
R1 Резистор
150 Ом
1 Поиск в FivelВ блокнот
R2 Резистор
100 кОм
1 Поиск в FivelВ блокнот
LED Светодиод1 Поиск в FivelВ блокнот
REL1 РелеG2RE1 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

none Опубликована: 2011 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Findipers #
А как оптопару поставить вместо транзистора?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

МиниПК MK809V - 4 ядра, Android 4.4.2
МиниПК MK809V - 4 ядра, Android 4.4.2
Набор 4WD Kit Bluetooth Конструктор регулируемого преобразователя напряжения LM317
вверх