9zip.ru Инструкции Робот
После того как был скопирован первый робот сразу возникло желание сделать своего. При разработке своего робота решено было делать его из отдельных модулей, чтобы удобно было его переконфигурировать для различных экспериментов. А когда в процессе поисков будет найдена оптимальная конструкция можно будет разместить все модули на одной плате.
Платы для модулей решил травить хлорным железом. Первые платы рисовал перманентным маркером, а сейчас осваиваю лазерно-утюговый метод. Платы очень удобно разводить в программе Sprint-Layout 4.0 (Русская версия). Затем распечатываем схему лазерным принтером на глянцевой бумаге (обложке журнала например), прикладываем к заготовке из фольгированного текстолита и нагреваем утюгом. После этого размачиваем бумагу в воде, отделяем от заготовки и вытравляем в растворе хлорного железа. Через несколько часов вся лишняя медная фольга вытравится. Промываем заготовку в проточной воде и смываем тонер от лазерного принтера жидкостью для снятия лака. Осталось просверлить отверстия и плата готова.
Первым модулем стал модуль центрального процессора. За основу взят контроллер AT90S2313 оставшийся от первого робота. Я решил вывести на разъемы все ноги контроллера, чтобы в процессе создания робота можно было свободно добавлять или переставлять устройства. Так же установлены фильтрующие конденсаторы на питание, кнопка RESET, выход на программатор и выведены дополнительные разъемы питания, чтобы запитывать подключаемые устройства.
Программировать контроллер решил на ассемблере (что-то с Си как то не сложилось). Очень понравилась программка Алгоритм билдер. Начал программировать на ней. Очень удобно, быстро, наглядно, но есть ограничение - в бесплатной версии размер программы не более 1Kb. Кряков на нее не нашел, а платить 70$ неохота (если бы для дела, а не для игрушек). Я правда этот объем еще не превысил, но в будущем надеюсь, а переходить потом на другую программу будет сложно. Начал разбираться с AVRStudio. Сначала было трудновато, но когда разобрался, оказалась тоже очень даже ничего. И отладка там есть. Контроллер программирую с помощью PonyProg2000 (русская версия) отлично работает даже в Windows XP. Спаяв первый модуль я получил возможность быстро собирать различные тестовые схемки для своих первых программ (типа мигнуть светодиодом)))).
Вторым модулем стал модуль управления двигателями. Основой также стал драйвер от первого робота L293D. Здесь я тоже вывел все выводы, так как я решил использовать для двигателей отдельное питание и аппаратный ШИМ имеющийся в AT90S2313. На выводы двигателей установил фильтрующие керамические конденсаторы по 0,1Мф и на питание двигателей конденсатор 1000Мф. В первом роботе при длительной эксплуатации драйвер очень нагревался. Для устранения этого я отрезал кусок радиатора от видеокарты и установил с термопастой на корпус контроллера. После этого проблема исчезла. Собрав этот модуль и подключив его к двигателям и центральному процессору я начал экспериментировать с ШИМ-ом. Поспрашивал в различных форумах, но вразумительного ответа не получил. Тогда обратился к старому доброму Даташиту на AT90S2313 (русская версия). Оказалось все очень просто. Он использует таймер/счетчик 1. В регистре TCCR1A управления счетчика выставляется разрядность ШИМ, в регистре TCCR1B выставляется делитель и режим работы ШИМ. После этого занесением в регистр совпадения OCR1A большего или меньшего числа регулируем скважность импульсов поступающих на вывод PB3 микроконтроллера. Подключил вывод PB3 к выводам ENABLE драйвера, написал программку которая перебирает по очереди все режимы от 0 до 100% и двигатели заработали как надо. Этим я разгрузил процессор от необходимости постоянно генерировать частоту ШИМ, для выполнения более интеллектуальных задач.
Для первых ходовых экспериментов собрал на базе Монстра тестовый стенд. К шасси сверху вместо кабины прикрепил половинку от пластиковой упаковки жесткого диска и свалил туда аккумуляторы и платы. Получилось удобно, только надо следить чтобы не переворачивался, а то потом тянет за собой кишки по полу :)
Третьим модулем стал модуль инфракрасных локаторов. За основу взята схема с сайта Робоклуб на микроконтроллере Attiny12. Я добавил второй локатор. Первую плату сделал под обычные резисторы, но сразу пожалел об этом (локатор не хотел работать). Во второй раз поставил подстроечные резисторы, как на robo.com.ua. Дело сдвинулось с мертвой точки. Локаторы начали срабатывать, но работают как то не стабильно, пока разбираюсь с этой проблемой.
Ездил на радиорынок. Увидел в одном месте продаются ЖКД дисплеи. Не удержался приобрел ЖКД С16252 NRB/R.
Там были и графические, но они показались мне очень сложными и я решил начать с азов. Документации на мой ЖКД у продавщицы не оказалось, да я особо и не настаивал (думал потом из интернета вытащу). Начал искать в инете даташит, но на всех найденных рисунок ЖКД не совпадал с моим. У моего контакты для подключения с двух сторон. Потом подумал, что если питание 5 вольт, сигналы тоже 5 вольт, то если я даже не так подключу, дисплей сгореть не должен. Так и получилось. Подключил к контроллеру AT90S2313 по четырем проводам плюс три управляющих линии и тем самым занял последние свободные выходы (4 на двигатели, 1 на ШИМ, 1 на пищалку, 2 на ИК локаторы, 7 на ЖКД).
Описание команд, примеры подключения и программирования ЖКД очень хорошо освещены здесь. Я взял прямо оттуда необходимые процедуры и начал ваять. Таблица кодировки символов стандартная. Datasheet на русском в файлах.
Нарисовал схему робота с помощью программы SPLAN 5.0 (русская версия). Схема здесь (165Kb).
Занялся написанием программы. Начали проявляться недостатки модульной структуры робота. Чем больше модулей тем большее количество соединяющих проводов. Уходит много времени на контроль правильности и качества подключения. К тому же на подвижной платформе отлаживать программу неудобно. Надо постоянно бегать за ним и комнаты не всегда хватает чтобы отработать все режимы.
Решил сделать отладочный стенд. Чтобы вместо двигателей светодиоды мигали и все модули стационарно установить и подключить. Работать стало намного удобнее. Скоро выложу первую приемлемую версию программы.
Ну вот и первая версия программы для публикации. Она пока просто перебирает все направления движения при все возможных уровнях мощности двигателей. При этом она постоянно отслеживает состояние инфракрасных локаторов и если сработка локаторов корректна то делает отъезд. В противном случае просто попискивает при сработке (например если при движении вперед срабатывает задний локатор). На старте задержка на 5 секунд. Все режимы работы отражаются на ЖКД.
Основная работа проделана не над основной программой, а над разработкой подпрограмм основных действий робота. Теперь из них как из кирпичиков можно складывать более сложные поведения, а данная программа пока просто перебирает их для проверки. В дальнейшем из этой программы я сделаю подпрограмму "Тест системы".
Файл программы.
Для того чтобы управлять мощностью двигателей роботу нужна обратная связь, чтобы он знал какую мощность устанавливать. Например робот дал 20% мощности, а этого мало и он не будет знать что стоит на месте. Для этого нужен датчик оборотов колес, а точнее два датчика на каждую сторону, чтобы при танковых разворотах тоже поступали импульсы с одного из датчиков. Имея такие датчики робот будет повышать мощность до тех пор пока от датчиков не пойдет информация о движении.
Теперь займусь их изготовлением. Подключать датчики некуда, так как все выводы микроконтроллера заняты. Поэтому когда я их сделаю придется отказаться от пищалки. Подключать датчики буду оба на один вывод, потому что пока меня интересует только движется робот или нет.
Разыскиваются схема и программа
11 нравится?
9 09.11.2015 ©
9zip.ru Авторские права охраняет Роскомнадзор
| Понравилась статья? Екатерина говорит: поделись с друзьями! |
|
, Необычные и неявные неисправности и дефекты магнитол и методы их решения, проверенные опытом.