|
1. Выбор электромеханической
части робота.
Электромеханическую часть было решено взять,
по возможности, готовую. В качестве "кандидата" был рассмотрен
радиоуправляемая машинка с давным-давно потерянным пультом. Машинка
имеет задний привод, движение задних колес и поворота передних осуществляется
электродвигателями. При прекращении работы рулевого двигателя колеса
пружиной возвращаются в среднее положение. Питание осуществлялось от
6 элементов АА, расположенных в двух отсеках (4 + 2). "Вскрытие
показало", что оба двигателя - ходовой и поворота, - находятся
в рабочем состоянии, что и решило судьбу кандидата.
Управление обоими двигателями построено на одной микросхеме L293D (отечественный
аналог - КР1128КТ4А). Предусмотрена возможность раздельного питания
электронной части системы управления.
2. Микроконтроллер. Какой лучше?
Основной критерий при выборе микроконтроллера
в данном случае - простота использования для решения наших задач (с
точки зрения быстродействия, объема памяти, энергопотребления и пр.
здесь может быть использован практически любой современный микроконтроллер),
поэтому останавливаемся на семействе AVR фирмы Atmel AT90S2313-10PI:
корпус DIP20, Flash-память 2К, 15 портов ввода-вывода, напряжение питания
4.0-6.0 В.
Контроллер AT90S2313-10PI имеет 20 выводов из которых пять "заняты":
два - питание (VCC и GND), два - для подключения "кварца"
(XTAL1 и XTAL2) и "Сброс" (RESET). Остальные 15 могут быть
использованы для ввода/вывода информации и представляют два порта -
B (PB7..PB0) и D (PD6..PD0).
Порт В - это 8-битный двунаправленный порт ввода/вывода. PB0 и PB1 могут
также использоваться как положительный (AIN0) и отрицательный (AIN1)
входы встроенного аналогово компаратора, PB3 - для получения сигнала
широтно-импульсной модуляции (OC1). Порт D имеет семь двунаправленных
линий ввода/вывода PD6..PD0. В то же время, PD0 может использоваться
как ресивер (RXD), а PD1 - как трансивер (TXD) интерфейса обмена данными
(UART), PD2 и PD3 - как входы для сигналов внешних прерываний (INT0
и INT1), PD4 и PD5 - в качестве входов таймеров/счетчиков (TO и T1),
а PD6 - для управления ими (ICP). Линии PB5-PB7 используются для внутрисхемного
программирования контроллера (MOSI, MISO, SCK). Все, что нужно, чтобы
контроллер начал работать - подсоединить к тактовому генератору кварцевый
кристалл и установить разъем для подключения программатора.
Для управления двигателями нам требуется четыре линии: "вперед",
"назад","вправо", "влево". Исходя из того,
что нужно оставить незанятыми вводы, которые могут понадобиться в перспективе,
берем для управления двигателями линии PB4..PB7. Чтобы подключение линий
PB5..PB7 к драйверу двигателей (микросхема L293D) не отражалось на работе
внутрисхемного программатора, питание драйвера во время программирования
лучше отключать.
Порт В не трогаем: входы аналогового компаратора (AIN0, AIN1) резервируем
на будущее, три оставшихся линии PB2..PB7 могут понадобиться для подключения
дополнительных выходных устройств, например, индикатора, пьезодинамика
и пр.
Входы таймеров/счетчиков (Т0 и Т1) лучше использовать по прямому назначению,
а вот входы внешних прерываний (INT0, INT1) удобно назначить для получения
сигналов от контактных датчиков ("бамперов"). Соответственно
линии FD0 и FD1 можно выделить для датчиков освещенности.
Убедившись, что управление двигателями работает правильно, можно переходить
к написанию управляющей программы.
3. Создание печатных плат.
Для создания схемы робота и программатора
мы использовали программу Layout 4.0. С её возможностями можно легко
и быстро создать печатную плату любого устройства. С помощью компьютера
и этой программы мы спроектировали и разработали схемы робота и программатора.
|