Схема управления розеткой через USB » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга
    Схема управления розеткой через USB
    Автор публикации: alex Просмотров: 7536 Добавлен: 20-08-2012, 22:44 Комментарии: 0

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

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

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

    Список используемых радиоэлементов:
    IC1 – PIC16F4550 микроконтроллер (datasheet)
    Q2 – кварц 20Mhz
    R1 – резистор 4.7K
    R2 – резистор 1M
    R3, R5 – резистор 150
    R4, R6 – резистор 100K
    K1, K3 – 5v реле.
    D1, D2, D3. D4 – диоды 1N4004 (аналог КД243Г)
    Q1, Q3 – транзистор BC517 (аналог КТ645А)
    LED1, LED2 – светодиоды
    C1, C2 – конденсатор 22pF
    C3 – конденсатор 470pF
    X1 – Mini-USB разъем Type B

    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

    usbrozetka.rar [277,82 Kb] (cкачиваний: 228)

    Комментарии