Реклама ⓘ
Главная » Компьютерная электроника
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

USB управляемая розетка

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

USB был выбран потому что, во первых я хотел поэкспериментировать с микроконтроллером PIC18F4550, а во вторых, мощностью USB-порта (500 мА) хватает для питания катушки реле.

Фото USB-розетки

Программное обеспечение МК основывается на SIXCA USBDAQ, который в свою очередь базируется на microchip CDC. USBDAQ очень прост в использовании и позволяет посылать ASCII команды для включения/выключения цифровых выходов, которые используются для управления двумя реле. Мне нужно было только установить значение bMaxPower, чтобы можно было использовать ток в 500 мА и поменять данные "vendor ID" и "name".

Внимание! Хотя в устройстве и предусмотрена изоляция низковольтовой и силовой части, всегда есть риск механического и др. повреждений. Поэтому соблюдайте осторожность!

Принципиальная схема USB-розетки

За основу взята схема USBDAQ, добавлены лишь 2 дополнительных каскада для управления реле. В схеме используется составной транзистор BC517 (аналог КТ645А). Схемы управления реле были взяты отсюда: управление реле через COM-порт.

Печатная плата разделена на 3 части. 2 платы управления можно легко поместить в корпус внешней розетки, колодки или удлинителя.

Печатная плата и расположение элементов

PIC-микропрограмма

Опишу только то, что нужно изменить в оригинальной SIXCA USBDA:

Вначале я установил значение переменной bMaxPower на 250 мА. Файл, который необходимо модифицировать: fw/cdc/autofiles/usbdsc.c:

/* Configuration 1 Descriptor */
CFG01=
{
/* Configuration Descriptor */
sizeof(USB_CFG_DSC),    // Size of this descriptor in bytes
DSC_CFG,                // CONFIGURATION descriptor type
sizeof(cfg01),          // Total length of data for this cfg
2,                      // Number of interfaces in this cfg
1,                      // Index value of this configuration
0,                      // Configuration string index
_DEFAULT,               // Attributes, see usbdefs_std_dsc.h
250,                    // Max power consumption (2X mA) 250 = 500mA
 
...

В этом же файле я изменил Vendor ID, Product ID

/* Device Descriptor */
rom USB_DEV_DSC device_dsc=
{
sizeof(USB_DEV_DSC),    // Size of this descriptor in bytes
DSC_DEV,                // DEVICE descriptor type
0x0200,                 // USB Spec Release Number in BCD format
CDC_DEVICE,             // Class Code
0x00,                   // Subclass code
0x00,                   // Protocol code
EP0_BUFF_SIZE,          // Max packet size for EP0, see usbcfg.h
0xAF01,                 // Vendor ID
0xAF0A,                 // Product ID: CDC RS-232 Emulation Demo
0x0000,                 // Device release number in BCD format
0x01,                   // Manufacturer string index
0x02,                   // Product string index
0x00,                   // Device serial number string index
0x01                    // Number of possible configurations
};
 
...
 
rom struct{byte bLength;byte bDscType;word string[16];}sd001={
sizeof(sd001),DSC_STR,
'a','l','f','e','r','s','o','f','t','.',
'c','o','m','.','a','r'};
 
rom struct{byte bLength;byte bDscType;word string[21];}sd002={
sizeof(sd002),DSC_STR,
'A','l','f','e','r','S','o','f','t',' ',
'U','S','o','c','k','e','t',' ','1','.','0'};

Также отредактировал файл driver/win2k_winxp/mchpcdc.inf, чтобы совпадали данные vendor, product ID и описание:

[DeviceList]
%DESCRIPTION%=DriverInstall, USB\VID_AF01&PID_AF0A
 
...
 
;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------
 
[Strings]
MCHP="alfersoft.com.ar"
MFGNAME="alfersoft.com.ar"
DESCRIPTION="Communications Port"
SERVICE="AlferSoft USocket 1.0"

Прошивка PIC

Для программирования PIC я использовал WinPic800. На скриншоте ниже параметры.

WinPic800

Команды

Я не модифицировал какие-либо команды USBDAQ. Они все доступны, но мне необходимы только 4 команды:
*A01 (включить реле 1)
*A00 (выключить реле 1)
*A11 (включить реле 2)
*A10 (выключить реле 2)
После каждой команды возврат каретки (chr(13) or '\n').

Установка ПО под Windows

1. Подключите устройство к USB, Windows должна его определить по иконке в трее:

Найденно новое оборудование

2. Windows предложит установить драйвера, соединившись с сервисом Windows Update, нажмите "нет" и перейдите к следующему шагу.

Установка драйверов

3. Выберите пункт "Установка из указанного места" и нажмите Next.

Установка драйверов

4. Выберите пункт "Включить следующее место поиска" и укажите директорию с .inf файлом driver\win2k_winxp:

Установка драйверов

5. Windows обнаружит и установит драйвер:

Установка драйверов

Тестирование (Windows)

1. Откройте диспетчер устройств и посмотрите на какой COM-порт у вас установилось устройство. У меня это был COM10

COM-порт детектед

2. Откройте терминал и задайте имя:

Hyperterminal

3. Выберите COM-порт:

Выбор COM-порта

4. Скорость обмена установите в 115200:

Установка скорости обмена COM-порта

5. Этот шаг необязательный. Для того, чтобы мы видели, что мы набираем, выберите ASCII Setup:

ASCII Setup

6. Поставьте галочку на опции "Echo typed characters locally".

ASCII Setup

7. Настройки готовы. Теперь можно соединиться и попробовать подать какую-нибудь команду на наше USB-устройство:

Команды в терминал

Установка ПО под Linux (Ubuntu)

1. Подключите устройство к компьютеру. Это все! Новое устройство вероятнее всего будет называться /dev/ttyACM0

Тестирование под Linux (Ubuntu)

1. Откройте gtkterm, если у вас этот пакет не установлен, то установите его командой "sudo apt-get install gtkterm"

2. Переходим к Configuration -> Port, устанавливаем порт /dev/ttyACM0, скорость 115200 и нажимаем ОК.

gtkterm

3. Выберите Configuration -> Local echo

4. Теперь можно набирать команды для управления реле.

Фотографии собранного устройства:

Фото USB-розетки

Фото USB-розетки

Фото USB-розетки

Ниже вы можете скачать драйвера, исходники, прошивку, файлы для Eagle

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

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
IC1 МК PIC 8-бит
PIC18F4550
1 Поиск в магазине ОтронВ блокнот
Q1, Q3 Биполярный транзистор
BC517
2 КТ645АПоиск в магазине ОтронВ блокнот
Q2 Кварц20 МГц1 Поиск в магазине ОтронВ блокнот
D1-D4 Выпрямительный диод
1N4004
4 КД243ГПоиск в магазине ОтронВ блокнот
LED1, LED2 Светодиод2 Поиск в магазине ОтронВ блокнот
C1, C2 Конденсатор22 пФ2 Поиск в магазине ОтронВ блокнот
C3 Конденсатор470 пФ1 Поиск в магазине ОтронВ блокнот
R1 Резистор
4.7 кОм
1 Поиск в магазине ОтронВ блокнот
R2 Резистор
1 мОм
1 Поиск в магазине ОтронВ блокнот
R3, R5 Резистор
150 Ом
2 Поиск в магазине ОтронВ блокнот
R4, R6 Резистор
100 кОм
2 Поиск в магазине ОтронВ блокнот
K1, K3 РелеFRS1B2 5 ВольтПоиск в магазине ОтронВ блокнот
X1 Mini-USB разъемType B1 Поиск в магазине ОтронВ блокнот
Добавить все

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

Оригинал статьи

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

Теги:

Колтыков А.В. Опубликована: 2011 г. 0 0
Я собрал 0 0
x

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

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

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

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

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

МиниПК MK809V - 4 ядра, Android 4.4.2
МиниПК MK809V - 4 ядра, Android 4.4.2
Программатор Pickit3 Мини гравер 125 Ватт
вверх