Меню

Как подать питание по com порту

Arduino. Работа с COM-портом

Для связи микроконтроллера с компьютером чаще всего применяют COM-порт. В этой статье мы покажем, как передать команды управления из компьютера и передать данные с контроллера.

Подготовка к работе

Большинство микроконтроллеров обладают множеством портов ввода-вывода. Для связи с ПК наиболее пригоден из них протокол UART. Это протокол последовательной асинхронной передачи данных. Для его преобразования в интерфейс USB на плате есть конвертор USB-RS232 – FT232RL.
Для выполнения примеров их этой статьи вам будет достаточно только Arduino-совместимая плата. Мы используем EduBoard. Убедитесь, что на вашей плате установлен светодиод, подключенный к 13му выводу и есть кнопка для перезагрузки.

Таблица ASCII

Для примера загрузим на плату код, выводящий таблицу ASCII. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов.

Переменная symbol хранит код символа. Таблица начинается со значения 33 и заканчивается на 126, поэтому изначально переменной symbol присваивается значение 33.
Для запуска работа порта UART служит функция Serial.begin(). Единственный ее параметр – это скорость. О скорости необходимо договариваться на передающей и приемной стороне заранее, так как протокол передачи асинхронный. В рассматриваемом примере скорость 9600бит/с.
Для записи значения в порт используются три функции:

  1. Serial.write() – записывает в порт данные в двоичном виде.
  2. Serial.print() может иметь много значений, но все они служат для вывода информации в удобной для человека форме. Например, если информация, указанная как параметр для передачи, выделена кавычками – терминальная программа выведет ее без изменения. Если вы хотите вывести какое-либо значение в определенной системе исчисления, то необходимо добавить служебное слово: BIN-двоичная, OCT – восьмеричная, DEC – десятичная, HEX – шестнадцатеричная. Например, Serial.print(25,HEX).
  3. Serial.println() делает то же, что и Serial.print(), но еще переводит строку после вывода информации.

Для проверки работы программы необходимо, чтобы на компьютере была терминальная программа, принимающая данные из COM-порта. В Arduino IDE уже встроена такая. Для ее вызова выберите в меню Сервис->Монитор порта. Окно этой утилиты очень просто:

Теперь нажмите кнопку перезагрузки. МК перезагрузится и выведет таблицу ASCII:

Обратите внимание на вот эту часть кода:

Она останавливает выполнение программы. Если вы ее исключите – таблица будет выводиться бесконечно.
Для закрепления полученных знаний попробуйте написать бесконечный цикл, который будет раз в секунду отправлять в последовательный порт ваше имя. В вывод добавьте номера шагов и не забудьте переводить строку после имени.

Отправка команд с ПК

Прежде чем этим заниматься, необходимо получить представление относительного того, как работает COM-порт.
В первую очередь весь обмен происходит через буфер памяти. То есть когда вы отправляете что-то с ПК устройству, данные помещаются в некоторый специальный раздел памяти. Как только устройство готово – оно вычитывает данные из буфера. Проверить состояние буфера позволяет функция Serial.avaliable(). Эта функция возвращает количество байт в буфере. Чтобы вычитать эти байты необходимо воспользоваться функцией Serial.read(). Рассмотрим работу этих функций на примере:

Читайте также:  Бодибилдинг питание для эндоморфа

После того, как код будет загружен в память микроконтроллера, откройте монитор COM-порта. Введите один символ и нажмите Enter. В поле полученных данных вы увидите: “I received: X”, где вместо X будет введенный вами символ.
Программа бесконечно крутится в основном цикле. В тот момент, когда в порт записывается байт функция Serial.available() принимает значение 1, то есть выполняется условие Serial.available() > 0. Далее функция Serial.read() вычитывает этот байт, тем самым очищая буфер. После чего при помощи уже известных вам функций происходит вывод.
Использование встроенного в Arduino IDE монитора COM-порта имеет некоторые ограничения. При отправке данных из платы в COM-порт вывод можно организовать в произвольном формате. А при отправке из ПК к плате передача символов происходит в соответствии с таблицей ASCII. Это означает, что когда вы вводите, например символ “1”, через COM-порт отправляется в двоичном виде “00110001” (то есть “49” в десятичном виде).
Немного изменим код и проверим это утверждение:

После загрузки, в мониторе порта при отправке “1” вы увидите в ответ: “I received: 110001”. Можете изменить формат вывода и просмотреть, что принимает плата при других символах.

Управление устройством через COM-порт

Очевидно, что по командам с ПК можно управлять любыми функциями микроконтроллера. Загрузите программу, управляющую работой светодиода:

При отправке в COM-порт символа “H” происходит зажигание светодиода на 13ом выводе, а при отправке “L” светодиод будет гаснуть.
Если по результатам приема данных из COM-порта вы хотите, чтобы программа в основном цикле выполняла разные действия, можно выполнять проверку условий в основном цикле. Например:

Если в мониторе порта отправить значение “1” светодиод будет мигать с частотой 5Гц. Если отправить “0” – частота изменится на 1Гц.

Источник



Как подать питание по com порту

Здравствуйте. Возможно ли сделать программку, которая будет включать и выключать подачу напряжения на USB или COM порт?
Особоенно не важно на какой порт. главное чтобы работало.


Anatoly Podgoretsky © ( 2006-12-18 00:36 ) [1]

> Шоломицкий С. А. (17.12.2006 23:55:00) [0]

На СОМ порт питание не подается, только сигналы.


Шоломицкий С. А. ( 2006-12-18 00:50 ) [2]

Спасибо
ну тогда на USB, говорю же, мне пофигу.
Ну короче, ьтпа надо лампочку подключить к проводам и уметь включать и выключать её. Это реально?


Германн © ( 2006-12-18 00:56 ) [3]


> Шоломицкий С. А. (18.12.06 00:50) [2]
>
> Спасибо
> ну тогда на USB, говорю же, мне пофигу.
> Ну короче, ьтпа надо лампочку подключить к проводам и уметь
> включать и выключать её. Это реально?
>

Чукча не читатель?
Совсем ведь рядом ветка:
http://delphimaster.net/view/4-1166124336/

Читайте также:  Как рассчитать детодни для расчета питания


Шоломицкий С. А. ( 2006-12-18 01:01 ) [4]

да нашёл уже позже. я тему создала в «основная»..её перенесли


> Шоломицкий С. А. (18.12.06 01:01) [4]
>
> да нашёл уже позже. я тему создала.

Вы уж разберитесь наконец, кто вы 🙂


Шоломицкий С. А. ( 2006-12-18 02:42 ) [6]


Германн © ( 2006-12-18 02:46 ) [7]


> Шоломицкий С. А. (18.12.06 02:42) [6]
>
> ладно придераться-то
>

Тогда давай по сути. Есть вопросы?


medved_68 © ( 2006-12-18 08:36 ) [8]


> ну тогда на USB, говорю же, мне пофигу.

Шоломицкий С. А. По USB почитай книгу Агурова — особенно раздел по корневым хостам, и, возможно, поймешь что за глупость с подачей питания ты морозишь. :)))


Шоломицкий С. А. ( 2006-12-18 12:24 ) [9]

ну я понял. что он постоянно включен (USB), а откючить как-нито можно?


> Anatoly Podgoretsky © (18.12.06 00:36) [1]
> > Шоломицкий С. А. (17.12.2006 23:55:00) [0]На СОМ порт
> питание не подается, только сигналы.

Подаёться, вроде на толи 1-ю то ли 9 -ю ногу точно +12 В можно подавать. Используется в некоторых устройствах как источник питания. Можно просто с CTS/DTR +12 В получить, но там ампер маловато.


Германн © ( 2006-12-18 13:20 ) [11]


> Подаёться, вроде на толи 1-ю то ли 9 -ю ногу точно +12
> В можно подавать. Используется в некоторых устройствах
> как источник питания.

На 9-pin разъеме есть только два выхода DTR и RTS. Остальные входы.


tesseract © ( 2006-12-18 13:42 ) [12]


> На 9-pin разъеме есть только два выхода DTR и RTS. Остальные
> входы.

а TxD — не выход? 🙂

А как я сканеры к кассовым аппаратам подключал или весы Петровес, они точно питание для драйвера с компа снимают? Питание на DB-9 100% есть. Но не факт что оно может подаваться с компового разъёма.


medved_68 © ( 2006-12-18 15:08 ) [13]


> ну я понял. что он постоянно включен (USB), а откючить
> как-нито можно?

Да можно, вот только обратно потом включить без перегрузки. хм.. несколько сложновато. :)))


medved_68 © ( 2006-12-18 15:12 ) [14]


> Питание на DB-9 100% есть. Но не факт что оно может подаваться
> с компового разъёма.

tesseract Врешь батенька. Нет там питания как такового с блока питания компа. Тем более на 9 пиновом разъеме (стандартном). Есть только уровень выходного сигнала +-12В. :))) И в этом Подгоретский прав на все 100%. :)))

> medved_68 (18.12.2006 15:12:14) [14]

Читайте также:  План питания для похудения таблица

Главное и никогда не было.


tesseract © ( 2006-12-18 15:42 ) [16]


> tesseract Врешь батенька. Нет там питания как такового с
> блока питания компа. Тем более на 9 пиновом разъеме (стандартном).
> Есть только уровень выходного сигнала +-12В. :)))

+12 В не питание? Я и не говорю что он во всех случаях пригоден, и что большинство компов там не 500 Ма выдают, тоже указал. Но то что, я лично использовал его для питания — факт, и что оборудование использует DB-9 для питания — факт.

Из руководства по RS232:

This can cause problems when using pin powered widgets — line drivers, converters, modems etc. These type of units need enough voltage & current to power them self»s up. Typical URART (the RS-232 I/O chip) allows up to 50ma per output pin — so if the device needs 70ma to run we would need to use at least 2 pins for power. Some devices are very efficient and only require one pin (some times the Transmit or DTR pin) to be high — in the «SPACE» state while idle.

An RS-232 port can supply only limited power to another device. The number of output lines, the type of interface driver IC, and the state of the output lines are important considerations.

The types of driver ICs used in serial ports can be divided into three general categories:

Drivers which require plus (+) and minus (-) voltage power supplies such as the 1488 series of interface integrated circuits. (Most desktop and tower PCs use this type of driver.)
Low power drivers which require one +5 volt power supply. This type of driver has an internal charge pump for voltage conversion. (Many industrial microprocessor controls use this type of driver.)
Low voltage (3.3 v) and low power drivers which meet the EIA-562 Standard. (Used on notebooks and laptops.)

RS-232 Specs.
SPECIFICATIONS
RS232

Mode of Operation
SINGLE
-ENDED

Total Number of Drivers and Receivers on One Line
1 DRIVER
1 RECVR

Maximum Cable Length
50 FT.

Maximum Data Rate
20kb/s

Maximum Driver Output Voltage
+/-25V

Driver Output Signal Level (Loaded Min.)
Loaded
+/-5V to +/-15V

Driver Output Signal Level (Unloaded Max)
Unloaded
+/-25V

Driver Load Impedance (Ohms)
3k to 7k

Max. Driver Current in High Z State
Power On

Max. Driver Current in High Z State
Power Off
+/-6mA @ +/-2v

Slew Rate (Max.)
30V/uS
Adjustable

Receiver Input Voltage Range
+/-15V

Receiver Input Sensitivity
+/-3V

Receiver Input Resistance (Ohms)
3k to 7k


Германн © ( 2006-12-19 01:57 ) [17]

Источник