Управление несколькими реле от порта RS -232 (COM-порта)
Расшифровку посылок интерфейса RS-232 удобно выполнять с помощью микроконтроллера (однокристального микрокомпьютера). К счастью, можно обойтись и без самостоятельного написания программ для него, пользуясь микроконтроллером PIC 16С54А, запрограммированным для решения подобных задач фирмой Stone Mountain Instruments. Приведенная схема и программа на языке BASIC демонстрируют его работу. Каждый модуль SMI101B имеет 8 логических выходов. Кроме того, к одному последовательному порту можно подключить до 7 модулей SMI101B. Три вывода группы N позволяют присвоить каждому модулю определенный идентификационный номер: от 0 до 6.
Если все три вывода заземлены, идентификационным номером будет 0; если вывод N1 соединен с шиной +5 В, то 1, и т. д. (в двоичном коде). При включении питания все выходы неактивны (находятся в состоянии лог. 0). Для включения выхода надо послать команду в формате вида xNy, где х есть идентификационный номер соответствующего модуля SMI101B, а у определяет, какой из выходов модуля будет включен Для выключения выхода надо использовать символ F вместо N (то есть, например, 0F3). Связь должна производиться в формате 8 бит данных и без битов контроля четности. Скорость передачи может составить 9600 бод, если модуль работает с кварцевым резонатором на 4 МГц, или 1200 бод с керамическим резонатором 500 кГц. На рисунке показано, что для управления каждым реле требуется транзистор, резистор и защитный диод. Для сокращения общего количества элементов схемы можно использовать специальную микросхему, управляющую нагрузками индуктивного характера (в частности, реле), например типа UDN2987 производства компании Allegro; в ней есть все необходимое для управления восемью малогабаритными реле от сигналов со стандартными логическими уровнями.
Аналоги зарубежных деталей можно найти в разделе
Источник
Реле на 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. Для примера приведу несколько строчек кода:
В Linux системах можно использовать функции модема:
Источник
Реле с управлением по rs 232
(язык — visual basic 6.0)
1. Суть метода
Часто в конференциях от радиолюбителей можно услышать вопрос:»Я сделал (хочу сделать) какое-то внешнее устройство и имею желание подключить его к компьютеру по СОМ порту, чтобы им как-то управлять, но не знаю как». СОМ порт более предпочтителен для таких экспериментов, так как у него выше, чем у LPT нагрузочная способность, и поэтому меньше шансов спалить порт.
Если у вас установлен Visual Basic и есть какие-то навыки программирования на нём, то наиболее простой, по-моему, путь- использовать компонент управления (контрол) MSComm Control, который вызывается Project->Components->и поставить галочку на MSComm Control. Далее необходимо поместить этот контрол на форме и написать код программы для него.
Сложность заключается в том, что приём-передача через СОМ порт требуют строгого соблюдения протокола RS-232, и не всем радиолюбителям под силу разработка контроллера, который бы этот протокол поддерживал. Между тем этот контрол MSComm позволяет считывать и управлять отдельными выводами СОМ порта и тем самым напрямую управлять какими-то внешними устройствами без формирования временных последовательностей RS-232 протокола.
В качестве примера такого внешнего устройства можно привести популярный программатор PonyProg (правда он написан не на VB, но принцип одинаковый). Если внимательно посмотреть на его схему, то видно, что в некоторых случаях (например, при программировании микросхем 24хх), главные информационные сигналы СОМ порта Rx (2) и Tx (3) не используются вообще. Весь обмен идет через вспомогательные выводы CTS(8), DSR (6), DTR (4), RTS (7) (хотя кое-где используется 3-й вывод Tx, об этом мы тоже поговорим).
Для того чтобы считать состояние вывода, достаточно на вход порта компьютера подать однополярные положительные сигналы и обойтись без преобразователей уровня TTL-RS232. Вообще-то это не соответствует стандарту RS-232, однако большинство портов с такими уровнями замечательно работают.
Итак, три вывода СОМ порта — CD, CTS, DSR можно опросить. Команда, которая позволяет считать состояние например вывода CTS (8), выглядит примерно так:
То есть этой командой мы опрашиваем 0 или 1 присутствует на выводе CTS.
На два вывода СОМ порта — DTR и RTS можно вывести (+12В) или (-12В), и тем самым зажечь светодиод, включить реле или какой-то другой исполнительный механизм. Например, для вывода RTS, это команды:
На основе этих команд (1)-(4) можно организовать как простой обмен данными с компьютером, так и довольно сложные протоколы, например I2C, SPI, MiсroWire и т.д. В качестве примера можете посмотреть DS1621 pc thermometer, и как, используя эти команды, Альберто Риччи организовал I2C протокол обмена с микросхемой термометра DS1621.
Рис.1. Схема для проверки
Если в качестве практики вы не поленитесь за 10 мин собрать схему рис.1 (можно прямо навесным монтажом на разъёме DB9), и запустить программу Com_device, то сможете увидеть как реагирует программка на замыкание кнопки и включает-выключает светодиод (кнопкой LED) с помощью именно тех команд, о которых я говорил выше (на кнопку »Ввод» пока не обращайте внимания).
Если же вашему устройству требуется импульсный сигнал, то и его несложно получить. Правда для этого всё же придётся познакомится с временной диаграммой протокола RS-232 (рис.2).
Рис.2. Временная диаграмма RS-232
Как видно, первым идёт старт-бит, затем биты данных, затем стоп-бит (обратите внимание, что 0- это +12В, 1- это -12В) . Предположим, мы посылаем старт-бит, затем сразу же за ним какое-то число нулей, например, в битах 0-1-2-3. Получим такой импульс
Рис.3. Формирование импульса
Меняя число импульсов вслед за стартовым, мы сможем менять длительность импульса (правда с шагом в длительность бита). Для этого на порт необходимо посылать одно из следующих чисел: FF, FE, FC, F8, F0, E0, C0, 80, 00. Причём при FF длительность импульса будет минимальная, при 00- максимальная. На рис.3 код импульса — F0.
Чтобы компьютер выдал на COM порт такой сигнал нужно всего-то выполнить команду
Этой командой на порт выдается ASCII код символа. А как нам послать на порт, например, число F0 (240 в десятичном виде)? Вот таким нехитрым способом:
То есть мы сперва преобразуем число 240 в какой-то символ (я даже не знаю какой, можете посмотреть по таблице ASCII кодов) и этот символ отправляем на выход порта.
Таким образом мы можем из компьютера сделать 8-уровневый формирователь ШИМ сигнала и управлять, например, скоростью вращения какого-нибудь моторчика постоянного тока, вентилятора и т.д. Только сигнал этот придется усилить по току и без внешнего питания вы вряд ли обойдётесь, так как макс. ток, который может выдать СОМ порт- что-то около 25мА. Можете это питание взять с блока питания компьютера. Возможно, придётся ещё и усреднить этот ШИМ сигнал RC-цепочкой или интегрирующим усилителем, это зависит от вашего устройства.
Теперь пришло время нажать кнопку «Ввод» в программе Com_device. Вы увидите окно ввода чисел. Если вы введёте одно из десятичных числел 255, 254, 252, 248, 240, 224, 192, 128, 0 , то вы получите гладкий импульс на 3(Tx) выводе DB9. Если же у вас нет осциллографа, подключите вольтметр постоянного тока между 5(GND) и 3(Tx) выводами и посмотрите, как меняется напряжение. У меня получилась такая зависимость:
Как видно, довольно линейная картинка.
Посмотрите, как изменится сигнал при изменении свойства Interval таймера Timer2, а также попробуйте в строке MSComm1.Settings = «1200,N,8,1» изменять скорость обмена (параметр baud rate- в этой строке= 1200).
Если 8 уровней вам не хватает, можете посылать подряд 2 байта:
Получится уже 16 уровневый формирователь. С помощью его уже можно организовать 4-разрядный ЦАП, а если его дополнить внешним компаратором, выход которого опрашивать с помощью команд (1),(2) одним из выводов CD, CTS, DSR; то можно и получить 4-разрядный АЦП, например последовательного приближения.
Com_device.rar(5,2 Kb) — архив с исходным текстом программы на VB.
Схема ниже показывает как можно управлять скоростью вращения вентилятора с помощью ШИМ сигнала, сформированного из Тх-сигнала СОМ-порта. Вентилятор можно использовать от блока питания компьютера.
Рис.4. Схема управления скоростью вращения вентилятора
Заметьте, что выводы 2 и 3 разъёма DB9 в ней объединены.
Запустив программу FunControl (рис.5) и щёлкая по радиокнопкам, можно дискретно изменять скорость вращения вентилятора.
Рис.5. Окно программы управления скоростью вращения вентилятора FunControl.
Ехе-файл программы FunControl находится в архиве Exe.rar.
Первый раз сказал Мяу! |
Зарегистрирован: Пн апр 18, 2011 12:55:22
Сообщений: 35
Откуда: Россия, Липецк
Рейтинг сообщения: 0
2. Расширяем число линий вывода Сигналы с СОМ-порта компьютера через разъём DB9 подаются на схемы сопряжения (транзисторы Q1. Q3). Вместо них можно использовать какой-нибудь МАХ232. RTC выступает в качестве входа последовательных данных (serial data input), Тх- в качестве сигнала сдвига (shift register clock input), DTR — в качестве сигнала записи (защёлки) (storage register clock input) — в скобках обозначения по даташиту, который я советую скачать.
На рис.7 показано окно программы. Скачайте исходник на VB6 ехе-файл (52кБ) .
Число линий вывода можно увеличивать наращиванием числа сдвиговых регистров, при этом вывод 9 надо соединить со входом 14 последующего (как, например на схеме ниже). JLCPCB, всего $2 за прототип печатной платы! Цвет — любой! Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc |
Первый раз сказал Мяу! |
Зарегистрирован: Пн апр 18, 2011 12:55:22
Сообщений: 35
Откуда: Россия, Липецк
Рейтинг сообщения: 0
3. Вывод даты-времени на 4-разрядный LED-индикатор Конечно СОМ порт проигрывает LPT по скорости обмена, но часто больших скоростей и не требуется. Но чтобы у вас не сложилось впечатление, что это уж слишком «тормознутый» порт, предлагаю посмотреть, как можно вывести системные дату-время на 4-разрядный LED-индикатор. Причём с динамической индикацией- и без всяких микроконтроллеров! При этом частота регенерации составила около 70Гц и мерцания вообще не видно.
IC1,IC3 — регистры сдвига 74HC595, индикаторы- от старых AT-корпусов компьютеров. На регистр IC1 выводится код цифры, на IC3- позиция включаемого знака.
При нажатии кнопкок «Время» и «Дата» выводится соответственно системное время и дата. VBclock.rar — ехе-файл программы VBclock. Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет |
Первый раз сказал Мяу! |
Зарегистрирован: Пн апр 18, 2011 12:55:22
Сообщений: 35
Откуда: Россия, Липецк
Рейтинг сообщения: 0
4. Вывод бегущей строки
Нажав кнопку «Символ», можно вывести одиночный символ, кнопка «Строка» выводит бегущую строку произвольной длины, которую вы можете ввести в окне ввода строки. Все буквы любого набранного вами текста будут переведены в верхний регистр. В окне программы RunString (рис.11) есть поле 7х7 мнемонических индикаторов, которые дублируют вывод на светодиодную матрицу.
Ехе-файл программы RunString находится в архиве Exe.rar 5. Создание «мультфильма» Следующая программа Film выводит на светодиодную матрицу (схема осталась прежней, рис.10) запрограммированные вами анимированные картинки размером 7х7 элементов изображения.. Нажимая на кружки нарисуйте картинку- это будет кадром. Сохраните его, нажав на одну из кнопок «>» или «|>» (рис.12). Иногда картинку удобнее рисовать «с чистого листа», а иногда следующая картинка — лишь незначительное изменение предыдущей. Кнопка «>» сохраняет предыдущий кадр и переходит к чистому следующему (все светодиоды погашены), кнопка «|>» также сохраняет предыдущий кадр, но следующий кадр будет повторением предыдущего, который вы сможете изменять по своему желанию. Кнопка « Рассмотрим особенности, характеристики и технологии проектирования продукции RECOM: AC/DC-преобразователи для установки на плату и для внешнего монтажа, изолированные DC/DC-преобразователи, импульсные регуляторы и силовые модули, а также средства отладки для поддержки разработчиков и ускорения выхода разработок на рынок. |
Модератор |
Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Создать интеллектуальный пожарный датчик, который будет не только оповещать о возгорании, а способен легко интегрироваться в системы умного дома или предприятия и выполнять ряд дополнительных действий, возможно с компонентами STMicroelectronics: высокопроизводительным радиочастотным трансивером S2-LP и малопотребляющим усилителем TSV629x. Рассмотрим подробнее это решение, отладочные комплекты и программный пакет ST. |
Первый раз сказал Мяу! |
Зарегистрирован: Пн апр 18, 2011 12:55:22
Сообщений: 35
Откуда: Россия, Липецк
Рейтинг сообщения: 0
Мои вопросы: |
Первый раз сказал Мяу! |
Зарегистрирован: Пн апр 18, 2011 12:55:22
Сообщений: 35
Откуда: Россия, Липецк
Рейтинг сообщения: 0
Модератор |
Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Первый раз сказал Мяу! |
Зарегистрирован: Пн апр 18, 2011 12:55:22
Сообщений: 35
Откуда: Россия, Липецк
Рейтинг сообщения: 0
Модератор |
Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Кто сейчас на форумеСейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 Источник Adblockdetector |