Шлюз-контроллер GATE-A8D8M2 — различия между версиями
=DeaD= (обсуждение | вклад) (→Назначение) |
Vooon (обсуждение | вклад) м (→Формат обмена данными) |
||
Строка 17: | Строка 17: | ||
=== Формат обмена данными === | === Формат обмена данными === | ||
− | При обмене данными ПК и шлюз-контроллера ПК считается управляющим, а шлюз-контроллер управляемым устройством. Единственное сообщение отсылаемое по инициативе шлюз-контроллера - сообщение "Ready!\n" о готовности выполнять команды при включении, все остальные сообщения шлюз-контроллера являются ответами на команды ПК. | + | При обмене данными ПК и шлюз-контроллера ПК считается управляющим, а шлюз-контроллер управляемым устройством. Единственное сообщение отсылаемое по инициативе шлюз-контроллера - сообщение <code>"Ready!\n"</code> о готовности выполнять команды при включении, все остальные сообщения шлюз-контроллера являются ответами на команды ПК. |
− | Команды, отдаваемые ПК все имеют одну и ту же форму | + | Команды, отдаваемые ПК все имеют одну и ту же форму <code>'''Q'''{AA}{RR}[{WW}*]</code>, в которой '''{AA}''' - адрес, '''{RR}''' - сколько байт хотим получить обратно, '''{WW}*''' - отсылаемые нами байты. Подробнее использование этой универсальной команды расписано ниже: |
{| class="standard" | {| class="standard" | ||
− | !Команда | + | ! Команда |
− | !Формат | + | ! Формат |
− | !Входные параметры | + | ! Входные параметры |
|- | |- | ||
− | |Отправить по i2c несколько байт и получить несколько байт в ответ | + | | Отправить по i2c несколько байт и получить несколько байт в ответ |
− | | | + | | <code>'''Q'''aarr{w}</code> |
− | |aa - адрес 00h..7Fh устройства на шине i2c | + | | |
− | + | * '''aa''' - адрес 00h..7Fh устройства на шине i2c | |
− | rr - сколько байт получить от устройства | + | * '''rr''' - сколько байт получить от устройства |
− | + | * '''ww''' - байты которые нужно передать устройству | |
− | ww - байты которые нужно передать устройству | ||
|- | |- | ||
− | |Установить режим работы порта ввода-вывода | + | | Установить режим работы порта ввода-вывода |
− | | | + | | <code>'''QFF00'''ppmm</code> |
− | |pp - номер порта 00h..0Fh увеличенный на 20h (например, для порта 0Fh это будет 2Fh) | + | | |
− | + | * '''pp''' - номер порта 00h..0Fh увеличенный на 20h (например, для порта 0Fh это будет 2Fh) | |
− | mm - режим работы (0 - цифровой вход, 1 - цифровой выход, 2 - управление сервоприводом, 3 - аналоговый вход - последний режим будет работать только для портов в которых есть эта возможность) | + | * '''mm''' - режим работы (0 - цифровой вход, 1 - цифровой выход, 2 - управление сервоприводом, 3 - аналоговый вход - последний режим будет работать только для портов в которых есть эта возможность) |
|- | |- | ||
− | |Установить значение на выходе порта | + | | Установить значение на выходе порта |
− | | | + | | <code>'''QFF00'''ppvv</code> |
− | |pp - номер порта 00h..0Fh | + | | |
− | + | * '''pp''' - номер порта 00h..0Fh | |
− | vv - значение (для цифровых выходов - 0/1, для управления сервоприводом - 17h..85h | + | * '''vv''' - значение (для цифровых выходов - 0/1, для управления сервоприводом - 17h..85h |
|- | |- | ||
− | |Получить значение со входа порта | + | | Получить значение со входа порта |
− | | | + | | <code>'''QFF01'''pp</code> |
− | |pp - номер порта 00h..0Fh увеличенный на 80h (например, для порта 0Ch это будет 8Ch) | + | | |
+ | * '''pp''' - номер порта 00h..0Fh увеличенный на 80h (например, для порта 0Ch это будет 8Ch) | ||
обратно получим 1 байт - 0/1, если цифровой вход, либо 00h..FFh - если аналоговый (00h соответствует 0V, FFh соответствует 5V), либо если тип порта - выход - получим то, что туда отправляли. | обратно получим 1 байт - 0/1, если цифровой вход, либо 00h..FFh - если аналоговый (00h соответствует 0V, FFh соответствует 5V), либо если тип порта - выход - получим то, что туда отправляли. | ||
|- | |- | ||
− | |Установить направление вращения двигателя | + | | Установить направление вращения двигателя |
− | | | + | | <code>'''QFF00'''mmdd</code> |
− | |mm - номер двигателя 00h..01h умноженный на 2 и увеличенный на 10h (например, для двигателя 1 это будет 12h) | + | | |
− | + | * '''mm''' - номер двигателя 00h..01h умноженный на 2 и увеличенный на 10h (например, для двигателя 1 это будет 12h) | |
− | dd - направление вращения 00h - СТОП, 01h - ВПЕРЕД, 02h - НАЗАД | + | * '''dd''' - направление вращения 00h - СТОП, 01h - ВПЕРЕД, 02h - НАЗАД |
− | |||
|- | |- | ||
− | |Установить скорость вращения двигателя | + | | Установить скорость вращения двигателя |
− | | | + | | <code>'''QFF00'''mmss</code> |
− | |mm - номер двигателя 00h..01h умноженный на 2 и увеличенный на 11h (например, для двигателя 1 это будет 13h) | + | | |
− | + | * '''mm''' - номер двигателя 00h..01h умноженный на 2 и увеличенный на 11h (например, для двигателя 1 это будет 13h) | |
− | ss - скорость от 00h до FFh, в точности соответствует скважности выдаваемого на двигатели ШИМ-сигнала. | + | * '''ss''' - скорость от 00h до FFh, в точности соответствует скважности выдаваемого на двигатели ШИМ-сигнала. |
|} | |} | ||
Версия 15:34, 10 марта 2008
Содержание
Шлюз-контроллер GATE-A8D8M2 версии 0.9 - Применение
Назначение
Взаимодействие ПК\Ноутбука\КПК с низкоуровневыми устройствами (двигателями постоянного тока, модельными сервоприводами, ИК-дальномерами, бамперами, сонарами, компасом и т.п.). Подключение шлюз-контроллера к ПК выполняется через стандартный последовательный COM-порт (скорость 9600Кбит). Исторически этот модуль является развитием модуля Шлюз-контроллер GATE-A8D16 и следствием смены приоритетов разработчика на компактных роботов. Разумеется допустимо автономное использование контроллера без какой-либо связи с ПК, в этом случае непосредственно программируем его через стандартные средства разработки и прошивки МК.
Основные параметры
- Габариты: 64х64мм
- МК: ATMega16/32/644
Возможности
- 8 цифровых входов-выходов (доступны 3 режима работы - цифровой вход, цифровой выход, управление сервоприводом);
- 8 аналоговых входов / цифровых выходов (доступны 4 режима работы - аналоговый вход, цифровой вход, цифровой выход, управление сервоприводом);
- 2 выхода для управления двигателями с обратной связью по сдвоенным энкодерам;
- i2c шина (взаимодействие с любыми i2c устройствами с ПК);
Формат обмена данными
При обмене данными ПК и шлюз-контроллера ПК считается управляющим, а шлюз-контроллер управляемым устройством. Единственное сообщение отсылаемое по инициативе шлюз-контроллера - сообщение "Ready!\n"
о готовности выполнять команды при включении, все остальные сообщения шлюз-контроллера являются ответами на команды ПК.
Команды, отдаваемые ПК все имеют одну и ту же форму Q{AA}{RR}[{WW}*]
, в которой {AA} - адрес, {RR} - сколько байт хотим получить обратно, {WW}* - отсылаемые нами байты. Подробнее использование этой универсальной команды расписано ниже:
Команда | Формат | Входные параметры |
---|---|---|
Отправить по i2c несколько байт и получить несколько байт в ответ | Qaarr{w}
|
|
Установить режим работы порта ввода-вывода | QFF00ppmm
|
|
Установить значение на выходе порта | QFF00ppvv
|
|
Получить значение со входа порта | QFF01pp
|
обратно получим 1 байт - 0/1, если цифровой вход, либо 00h..FFh - если аналоговый (00h соответствует 0V, FFh соответствует 5V), либо если тип порта - выход - получим то, что туда отправляли. |
Установить направление вращения двигателя | QFF00mmdd
|
|
Установить скорость вращения двигателя | QFF00mmss
|
|
Шлюз-контроллер GATE-A8D8M2 версии 0.9 - Внутреннее устройство
Недостатки модуля
К основным недостаткам можно отнести:
- Допущенная ошибка при разработке печатной платы - пропущена дорожка, поэтому при пайке требуется на обратной стороне платы припаивать перемычку длиной 5мм. Абсолютно некритичная ошибка, в следующей версии будет исправлено.
- На плате не предусмотрены подтягивающие резисторы для шины i2c. Так же некритичная ошибка, в следующей версии будет исправлено.
- Не сделана кнопка сброса. Для планируемых целей не критично, теоретически можно вывести кнопку припаяв пару проводков в соответствующие места платы, в следующей версии будет исправлено.
Принципиальная схема и печатная плата
Доступны к скачке схема и разведенная печатная плата в формате EAGLE (включая подготовленные файлы Gerber и Excellon для производства печатной платы): Скачать.
Прошивка шлюз-контроллера
Файл прошивки реализующий указанные выше в протоколе функции работы с двигателями, портами ввода-вывода и шлюза i2c:
Используемые компоненты
Наименование | Кол-во |
---|---|
Контроллер ATMega16/32/644 [2] в DIP корпусе | 1 |
Драйвер двигателей L293D в DIP корпусе | 1 |
Кварц 16МГц[3] | 1 |
Диоды шоттки 1N5817 или 1N5818 или 1N5819 | 16 |
ЧИП-Конденсаторы размера 1206 керамические 27пФ | 2 |
Конденсаторы 25V, 100мкФ | 2 |
ЧИП-Резисторы размера 1206 на 5.1кОм | 2 |
Разъемы штыревые сдвоенные, 20x2 контактов | 1 |
Разъемы штыревые одинарные, 34x2 контактов | 1 |
Разъем IDC10 | 1 |