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

Реле на 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
iMAX B6 - зарядное для Lion, LiPo, LiFe, Pb, NiCd и NiMH аккумуляторов Мультиметр DT9205A
вверх