Шлюз-контроллер GATE-A8D8M2 — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
м (Принципиальная схема и печатная плата)
м (Прошивка шлюз-контроллера)
Строка 83: Строка 83:
  
 
=== Прошивка шлюз-контроллера ===
 
=== Прошивка шлюз-контроллера ===
Файл прошивки реализующий указанные выше в протоколе функции работы с двигателями, портами ввода-вывода и шлюза i2c: [[http://www.roboforum.ru/download/file.php?id=4284 Скачать]].
+
Файл прошивки реализующий указанные выше в протоколе функции работы с двигателями, портами ввода-вывода и шлюза i2c:  
 
+
* [http://www.roboforum.ru/download/file.php?id=4284 Прошивка].
[[http://www.roboforum.ru/download/file.php?id=4285 Исходники этой прошивки под WinAVR]].
+
* [http://www.roboforum.ru/download/file.php?id=4285 Исходники] ([[WinAVR]]<ref>Статья в AvrFreaks Wiki: [[avrfreaks:Documentation:AVR_GCC/Winavr|Documentation:AVR_GCC/Winavr]]</ref>).
  
 
=== Используемые компоненты ===
 
=== Используемые компоненты ===

Версия 11:27, 9 марта 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}][{WW}][{WW}]", в которой {AA} - адрес, {RR} - сколько байт хотим получить обратно, {WW} - отсылаемые нами байты. Подробнее использование этой универсальной команды расписано ниже:

Команда Формат Входные параметры
Отправить по i2c несколько байт и получить несколько байт в ответ Qaarr{w} aa - адрес 00h..7Fh устройства на шине i2c

rr - сколько байт получить от устройства

ww - байты которые нужно передать устройству

Установить режим работы порта ввода-вывода QFF00ppmm pp - номер порта 00h..0Fh увеличенный на 20h (например, для порта 0Fh это будет 2Fh)

mm - режим работы (0 - цифровой вход, 1 - цифровой выход, 2 - управление сервоприводом, 3 - аналоговый вход - последний режим будет работать только для портов в которых есть эта возможность)

Установить значение на выходе порта QFF00ppvv pp - номер порта 00h..0Fh

vv - значение (для цифровых выходов - 0/1, для управления сервоприводом - 17h..85h

Получить значение со входа порта QFF01pp pp - номер порта 00h..0Fh увеличенный на 80h (например, для порта 0Ch это будет 8Ch)

обратно получим 1 байт - 0/1, если цифровой вход, либо 00h..FFh - если аналоговый (00h соответствует 0V, FFh соответствует 5V), либо если тип порта - выход - получим то, что туда отправляли.

Установить направление вращения двигателя QFF00mmdd mm - номер двигателя 00h..01h умноженный на 2 и увеличенный на 10h (например, для двигателя 1 это будет 12h)

dd - направление вращения 00h - СТОП, 01h - ВПЕРЕД, 02h - НАЗАД

Установить скорость вращения двигателя QFF00mmss mm - номер двигателя 00h..01h умноженный на 2 и увеличенный на 11h (например, для двигателя 1 это будет 13h)

ss - скорость от 00h до FFh, в точности соответствует скважности выдаваемого на двигатели ШИМ-сигнала.

Шлюз-контроллер GATE-A8D8M2 версии 0.9 - Внутреннее устройство

Недостатки модуля

К основным недостаткам можно отнести:

  • Допущенная ошибка при разработке печатной платы - пропущена дорожка, поэтому при пайке требуется на обратной стороне платы припаивать перемычку длиной 5мм. Абсолютно некритичная ошибка, в следующей версии будет исправлено.
  • На плате не предусмотрены подтягивающие резисторы для шины i2c. Так же некритичная ошибка, в следующей версии будет исправлено.
  • Не сделана кнопка сброса. Для планируемых целей не критично, теоретически можно вывести кнопку припаяв пару проводков в соответствующие места платы, в следующей версии будет исправлено.

Принципиальная схема и печатная плата

Доступны к скачке схема и разведенная печатная плата в формате EAGLE (включая подготовленные файлы Gerber и Excellon для производства печатной платы): [Скачать].

Принципиальная схема (25Кб)
Разводка печатной платы (70Кб)
Готовая печатная плата (104Кб)

Прошивка шлюз-контроллера

Файл прошивки реализующий указанные выше в протоколе функции работы с двигателями, портами ввода-вывода и шлюза i2c:

Используемые компоненты

  • Контроллер ATMEGA16/32/644 в DIP-корпусе - 1 шт;
  • Драйвер двигателей L293D в DIP-корпусе - 1 шт;
  • Кварц 16МГц - 1 шт (для ATMEGA644 можно 20МГц);
  • Диоды шоттки {марка} - 16 шт;
  • ЧИП-Конденсаторы размера 1206 керамические 27пФ - 2 шт;
  • Конденсаторы 25V, 100мкФ - 2 шт;
  • ЧИП-Резисторы размера 1206 на 5.1кОм - 2 шт;
  • Разъемы штырьковые сдвоенные - общей длиной 20 контактов;
  • Разъемы штырьковые одинарные - общей длиной 34 контактов;
  • Разъем IDC10 - 1шт;
  • Статья в AvrFreaks Wiki: Documentation:AVR_GCC/Winavr