Устройства управления роботами, схемотехника и программирование (М. Предко, 2004). Устройства управления роботами, схемотехника и программирование. Устройствауправления роботамисхемотехника и микроконтроллеров picmicro
Скачать 6.79 Mb.
|
ГЛАВА б ПРОЕКТИРОВАНИЕ АВТОМАТИЧЕСКИХ УСТРОЙСТВ Тот факт, что эта глава находится в конце может некоторое удив- ление. Но нам нужно было обсудить много важных вещей, прежде чем присту- пать к проектированию настоящих роботов. В предыдущих главах мы рассмотрели, как реализуются различные интерфей- сы и как программируется процесс принятия решений на верхнем уровне. Теперь пришла пора выяснить, как можно заставить все эти отдельные части работать совместно. Но перед тем, как начать разработку автоматического устройства, надо спро- сить себя, для чего конкретно оно будет предназначено. Мало сказать: «Я хочу сконструировать робота, чтобы разобраться, как он работает». Надо сформулиро- вать свои намерения более точно, например: <<Я хочу сконструировать двухколес- ного робота, каждое колесо которого управляется отдельным двигателем и кото- рый двигается по прямой линии, пока не встретит на своем пути препятствие, после чего объезжает его и снова продолжает движение в прежнем направлении». После того как вы четко определите, что же хотите получить, можно присту- пать к проектированию. По мере своего продвижения вперед вы, вероятно, захо- тите кое-что изменить в исходной формулировке, но главное, чтобы у вас была отправная точка. Иначе вам даже не удастся толком описать, что необходимо до- бавить к первоначальному замыслу. Важно, чтобы ваш первоначальный замысел был не слишком фантастичен. Многие радиолюбители поначалу хотят достичь результатов, в погоне за которы- ми даже целые коллективы профессиональных разработчиков безрезультатно потратили много лет и миллионы долларов. Классическим примером такого без- умного проекта может служить робот, который по приказу своего хозяина умел бы приносить пиво из холодильника. Здесь сначала надо придумать, как робот откроет дверцу холодильника, как отыщет там бутылку с пивом, возьмет ее, за- кроет дверцу и, наконец, как найдет своего хозяина, чтобы отдать ему пиво. А если хозяин и холодильник находятся на разных этажах? И это только некоторые из самых очевидных вопросов. Уверен, немного поразмыслив, вы придумаете еще кучу других, не менее заковыристых. Но на главные вопросы надо найти ответ прежде, чем начинать работу над проектом. Иначе лучше и не начинать. Я нисколько не преувеличиваю, говоря, что ученые потратили кучу време- ни и денег на подобные разработки. В самом деле, если робот должен уметь Проектирование автоматических устройств 355 при необходимости подняться вверх по лестнице, значит, это умение не долж- но зависеть от ширины и высоты ступенек, а также материала, из которого они сделаны. В главе 4 мы рассмотрели множество различных интерфейсов; они были раз- работаны таким образом, чтобы в максимальной степени облегчить их интегра- цию друг с другом в пределах одного большого проекта. Тем не менее очень часто при проектировании сложных автоматических устройств на основе микрокон- троллеров бывает весьма нелегко достичь устойчивой работы всех подсистем. То не хватает объема памяти для размещения всех подпрограмм, то слишком долго выполняется биологический код, вследствие чего робот не успевает вовремя сре- агировать на все изменения окружающей обстановки, то один интерфейс мешает работе других... Эти проблемы по возможности лучше решать с самого начала, так как намного сложнее вносить изменения в почти готовое приложение. Здесь стоит упомянуть такое явление, как «журнальная зависть». Часто, про- читав интересную статью в радиолюбительском журнале, понимаешь, что именно эту идею надо использовать в своей новой разработке, но проблема в том, что многим советам, которые дает автор статьи, нельзя последовать в точности. Неко- торые комплектующие могут оказаться слишком дорогими или вовсе недоступ- ными, поэтому придется искать им замену, и не всегда равноценную. Описание каких-либо особенностей конструкции в статье может быть опущено. В результа- те, даже повторяя чужую разработку, вы получаете нечто отличное от нее — и не обязательно с тем же результатом. Разумеется, в любом случае вы только выигра- ете, если постараетесь перенять опыт других радиолюбителей и использовать по- нравившиеся вам находки в своих проектах. В конце концов, сконструировать робота довольно просто. Сложнее заставить делать в точности то, что вы задумали. Поэтому в данной главе мы рассмот- рим несколько полезных приемов отладки приложений, которые помогут вам понять, что на самом деле происходит с роботом в тех или иных случаях. Я под- черкиваю, что любые решения разработчик должен принимать, опираясь на дан- ные экспериментов, а не на свои предположения по поводу того, что обусловлива- ет неправильное поведение робота. ТЕХНИЧЕСКОЕ Хочу дать вам хороший совет: записывайте все! Заведите привычку носить с со- бой блокнот, и как только у вас появится стоящая идея, запишите ее. На самом деле человеческая память не так надежна, как многие склонны полагать. Должен признаться, не раз я часами - и безуспешно! - пытался вспомнить гениальную идею, которая осеняла меня во время завтрака. Всегда старайтесь начинать с малого. Если вы задумали сконструировать ро- бота-слугу, который всюду следует за вами и с готовностью выполняет любые ваши поручения, то разумнее начать с создания небольшой тележки (но с боль- шим запасом места для добавления новых электронных блоков), которая только и умеет, что передвигаться по горизонтальной поверхности. 356 Устройства управления роботами Планируя свою работу, всегда прогнозируйте самый худший случай (поверь- вы с ним довольно скоро столкнетесь). Никогда не предполагайте, что первый же пришедший вам в голову способ реализации той или иной функции окажется удачным. Как правило, для достижения небольшого успеха требуется перепробо- вать несколько возможностей. Возьмем для примера одну из программ, представленных в этой книге, - управ- ление светодиодным индикатором. Пытаясь добиться того, чтобы микроконтрол- лер включал и выключал светодиод с заданной периодичностью, я был вынужден рассмотреть следующие возможности: • программная реализация задержек; • программный опрос таймера • часы реального времени на основе прерываний от таймера TMRO (именно этот метод и был использован); • широтно-импульсная модуляция сигнала с применением таймера TMR2. Какой из этих методов является наилучшим? Какие дополнительные возмож- ности обеспечивает тот или иной способ реализации заданной функции? Какое решение наиболее простое и не затрудняет дальнейшую модернизацию устрой- ства? Помните о том, что метод, прекрасно показавший себя на лабораторном столе, может оказаться совершенно ненадежным, работая в реальных условиях, поэтому вы всегда должны иметь пространство для маневра. К сожалению, многие светлые мысли приходят слишком поздно, когда работа над проектом уже близится к Поэтому иногда разумнее зафиксировать новую идею на бумаге, чтобы опробовать ее в будущем, вместо того чтобы без конца переделывать уже почти готовое устройство. Лучше руководствоваться правилом: «Если не сломано - не следует исправлять». И последнее: не бойтесь заимствовать чужие идеи. Разумеется, я не подстре- каю вас к плагиату или похищению чужих чертежей, но свежие мысли и решения, почерпнутые вами у других разработчиков, иногда оказываются единственным выходом из тупика, в который вы зашли. К тому же чужие идеи всегда можно применить совершенно новым способом. В сети Internet найдете огромное количество информации по микрокон- троллерам и методам конструирования автоматических устройств, готовые схемы, идеи, документацию по различным комплектующим и многие другие сведения, кото- рые будут для вас чрезвычайно полезными или, напротив, никогда не пригодятся. Используйте эту информацию. Но должен предостеречь: не все, что вы найдете в Сети, имеет практическую ценность. Многие данные могут быть не вполне коррект- ными, а некоторые и вовсе неверными. Разумеется, это касается любой области, не только робототехники. И дело здесь не только в том, что разместить страничку в сети Internet может любой желающий. Нередко я встречал на разных сайтах так называе- мые «бесплатные» программы и проекты, которые были доступны для свободного скачивания, но на поверку оказывались неработоспособными, а лишь играли роль приманки, вынуждая вас приобрести более «продвинутый» проект или обратиться к его автору за консультацией - разумеется, тоже не бесплатной. Проектирование автоматических устройств 357 Итак, вы хотите приступить к проектированию нового автоматического устрой- ства. Начать следует с технического задания. Звучит несколько официально, но имеется в виду всего лишь список требований, которым должно удовлетворять разрабатываемое устройство. Начните с простых утверждений, поясняющих, что и как должен делать робот. Далее пункт «как» надо конкретизировать. Приведем примерный список ос- новных вопросов: Какую аппаратную платформу следует использовать? Каковы должны быть размеры и вес устройства? Какая необходима скорость передвижения? Какие двигатели будут использоваться? Что послужит источником питания? Какие меры безопасности надо предусмотреть? Какие контроллеры будут использованы? На каком языке программирования будет разрабатываться управляющее про- граммное обеспечение? Какие датчики будут снабжать робота информацией об окружающей обстановке? Какие будут применены исполнительные (выходные) устройства? Какие методы ручного управления необходимы? Каким должен быть интерфейс пользователя? Какова будет стоимость На такие вопросы нельзя формально ответить «нет» или «без ограничений». Вы можете считать робота совершенно безопасным (потому что он маленький), но если в нем используются свинцовые, кислотные или бата- рейки, то они вредны для окружающей среды. А если робот весит несколько де- сятков килограммов, то трудно представить, что он может натворить, если выйдет из-под контроля из-за неправильной работы управляющего устройства. Кроме списка аппаратных требований надо подготовить список требований к программному обеспечению. Следует определить: • язык программирования; • средства отладки приложения (эмулятор, симулятор); • доступность средств загрузки программы в микроконтроллер (наличие спе- циального программатора); • используемые в программе векторы прерываний; • программные интерфейсы, встроенные в систему; • используемые в программе структуры данных. Следует отметить, что оба списка требований взаимосвязаны. Выбор того или иного микроконтроллера ограничивает ваши возможности по выбору средств программирования и отладки. Заметьте, что здесь не учтены такие важные требования, как, например, пред- положительный размер программы и данных. Знание этих параметров может суще- ственно повлиять на выбор контроллера и методов программирования, но на началь- ных этапах проектирования очень трудно оценить, сколько памяти потребуется для 358 Устройства управления роботами всего приложения. Я уже много лет занимаюсь такими вещами, но до сих пор ча- сто выходит, что реальный объём готового приложения оказывается раза в два больше того, который был запланирован исходно. Ничто не оказывает такого впечатления на зрителей, как быстрота передвиже- ния робота. Как ни странно, ваша конструкция произведет впечатление более сложной и «умной», если будет двигаться быстро. Однако за это приходится рас- плачиваться, используя более мощные двигатели и, соответственно, источники питания. Кроме того, двигаясь с большой скоростью, робот должен уметь быстро реагировать на окружающую обстановку. Поэтому в погоне за высокими скорос- тями разработчик рискует приобрести себе кучу неприятностей в будущем, когда захочет модернизировать свой проект, так как зачастую ни малейшего запаса прочности уже не остается. Чуть ниже мы обсудим, как составлять список требований к будущему проек- ту. Если вы радиолюбитель, а не профессиональный разработчик, то, возможно, все это покажется вам пустой тратой времени, но уверяю вас, что дело обстоит иначе. Хорошо составленное техническое задание существенно облегчит дальней- шую работу по проектированию автоматических устройств. По мере того как вы будете продвигаться вперед, может возникнуть необходи- мость внесения тех или иных изменений в уже составленное техническое задание (например, если окажется, что выбранный вами микроконтроллер не поддержи- вает какую-либо возможность, которую вы предусмотрели в самом начале, или вам так и не удастся достать нужный элемент, а возможные варианты его замены не позволяют обойтись без некоторых переделок). Ничего страшного - смело вносите изменения в первоначальный список требований! 6.2. ВЫБОР ПЕРИФЕРИЙНЫХ УСТРОЙСТВ После того как будут определены и перечислены все функции, которые должен выполнять робот, можно приступить к выбору периферийных устройств. Если выбор окажется не оптимальным, вы рискуете потратить кучу времени на безус- пешные попытки найти ошибку в программе, в то время как истинным виновни- ком неправильной работы является какое-нибудь устройство ввода-вывода. Например, может оказаться, что некоторое входное устройство слишком мед- лительно или требует сложного программирования; в результате процедура обра- ботки прерываний будет отнимать слишком много командных циклов работы процессора и не оставит достаточно времени для выполнения биологического кода. Или некоторые интерфейсы в борьбе за общий аппаратный ресурс проявят плохую совместимость друг с другом, и приложение будет пропускать некоторые внешние события (скажем, команды дистанционного управления или моменты столкновений с окружающими предметами). Продемонстрированный в данной книге подход, основанный на разделении функ- ций механического, электронного и биологического уровней и реализации проце- дур первых двух уровней в виде обработчика прерываний от таймера, позволяет све- сти к минимуму вероятность подобных проблем, однако следует понимать, что Проектирование автоматических устройств 359 такое решение не является панацеей - вполне возможны случаи, когда разработчи- ку придется проявить изобретательность, пытаясь увязать друг с другом различные интерфейсы. В любом случае при проектировании следует стремиться к тому, что- бы отдельные функции механического и электронного уровней как можно меньше взаимодействовали друг с другом. Кроме того, не следует забывать, что для правильной работы биологического кода необходимо оставить достаточно процессорного времени на его выполнение. Поэтому надо стремиться к наиболее простой реализации механических и элект- ронных интерфейсов, избегая использования в обработчике прерываний сложных вычислений, чисел в формате с плавающей точкой, операций в цикле и т.п. Все трудоемкие вычисления следует производить в главной программе (то есть с по- мощью биологического кода). Только тогда будет гарантия, что во время их вы- полнения не нарушится работа какого-либо периферийного устройства. Таким образом, можно сформулировать следующие основные рекомендации по разработке функций механического и электронного уровней: • используйте конечные автоматы для реализации механических и электрон- ных интерфейсов. Это может несколько замедлить их работу, но зато не по- мешает работе других интерфейсов; • не используйте переменные с плавающей точкой и массивы; • старайтесь избегать сложных математических операций (умножение, деле- ние, вычисление логарифмов и тригонометрических функций); • используйте микроконтроллер с наиболее широким набором встроенных функций. 6.3. ВЫБОР ЭЛЕКТРОННЫХ КОМПОНЕНТОВ И МЕТОДОВ ПРОГРАММИРОВАНИЯ При разработке технического задания пригодится следующий список вопросов, ответы на которые определят выбор электронных компонентов, требуемых создании робота. Какой микроконтроллер желательно использовать? Какого типа будет тактовый генератор? Каким быть источник питания? Какие потребуются датчики и другие устройства ввода информации? Какие потребуются двигатели и другие устройства вывода? Нужно ли использовать запоминающие устройства (кроме памяти, встроенной в микроконтроллер)? Насколько доступны необходимые электронные компоненты? Последний вопрос особенно важен, если вы хотите опубликовать схему своего устройства и надеетесь, что другие радиолюбители смогут ее Например, в самом начале работы над программатором El Cheapo я использовал МОП тран- зистор с каналом р-типа, считая, что он широко распространен и вряд ли у кого- то возникнут трудности с приобретением или заменой достаточно близким 360 Устройства управления роботами аналогом. К сожалению, мое предположение не подтвердилось: многие радиолюби- тели стали жаловаться на то, что не могут достать полевой транзистор, так что его пришлось заменить распространенным биполярным p-n-р транзистором 2N3906. Следует помнить, что в радиолюбительских конструкциях в первую очередь важна доступность элементов — зачастую она более значима, чем стоимость. По- этому перед тем, как опубликовать свою схему в сети Internet или в радиолюби- тельском журнале, стоит просмотреть каталоги ведущих производителей радио- элементов. Рано или поздно те элементы, которые вы на протяжении многих лет исполь- зовали в своих конструкциях, устаревают. Это большая проблема, но часто толь- ко психологическая: во многих случаях среди новых элементов можно подыскать достаточно близкий аналог. Ну, а если нет, то приходится вносить изменения в устройство и в управляющую программу. Чтобы обезопасить себя от возможных проблем, желательно уже в самом нача- ле работы над проектом стараться использовать только самые распространенные и стандартные электронные компоненты. Для примера рекомендую: • диоды 1N4001, 1N4192 (1N915); • транзисторы 2N3904/2N3906, ВС547/ВС557; • полевые транзисторы IRF510/IRF9510; • керамические резонаторы ECS/Panasonic; • инфракрасные светоизлучающие диоды и детекторы фирмы Watrony; • логические элементы ТТЛ серии 74LS; • интегральные стабилизаторы напряжения 78(L)xx; • таймер (7)555. Каких-либо проблем с резисторами и конденсаторами, как правило, не возни- кает. Иногда трудно найти конденсаторы, используемые для фильт- рации напряжения питания логических микросхем, но их можно заменить кера- мическими. Ключевой вопрос - выбор микроконтроллера. Обычно разработчики основывают свое решение не столько на объективном сравнении требований технического зада- ния и характеристик того или иного микроконтроллера, сколько на своих пристрас- тиях и опыте предыдущих проектов. Не последними доводами служат доступность микроконтроллера и разнообразие программного обеспечения для него. Разумеется, не следует останавливать свой выбор на микроконтроллере, для работы которого требуются еще какие-то дополнительные элементы кроме источника питания 5 В, генератора тактовых импульсов и «подтягивающего» резистора для входа сброса. . Что касается быстродействия микроконтроллера (его максимальной тактовой частоты), этот параметр обычно не является существенным. Наоборот, для умень- шения мощности, потребляемой от источника питания, а также для снижения уровня помех я рекомендую вам выбирать для своих конструкций не слишком высокую частоту работы тактового генератора. Гораздо более важная характери- стика контроллера - его устойчивость к помехам и работоспособность при поме- хах от периферийных устройств, входящих в конструкцию робота. Проектирование автоматических 361 Наиболее оптимальным решением при конструировании электронных управля- ющих устройств мобильных роботов является использование печатного монтажа. Разрабатывая печатную плату электронного блока, следует иметь в виду, что при работе автоматических устройств всегда присутствуют следующие мешаю- щие факторы: • электрические помехи; • электромагнитные наводки; • механические вибрации; • акустические шумы; • колебания температуры и влажности окружающей среды. Кроме того, не следует забывать, что у мобильных автоматических устройств есть подвижные части, на которые могут наматываться провода, поэтому все со- единения надо производить очень аккуратно. Я советую использовать монтажные провода минимальной длины и паяные соединения; всегда заботьтесь о качестве заземления и надежности крепления механических узлов. При размещении элементов схемы на печатной плате учтите, что в дальней- шем может возникнуть необходимость модернизации схемы или добавления но- вых блоков. Не старайтесь компоновать все элементы слишком плотно - остав- ляйте место для дополнительных элементов. Следует подчеркнуть, что макетные платы, которые используются в проектах, описанных в главе 4, являются наихудшим решением с точки зрения надежности конструкции и возможности модернизации схемы. Они облегчают проверку не- сложных схем, но вы можете на собственном опыте убедиться, как нелегко оказы- вается разобраться в переплетении проводов, чтобы найти неисправность или подключить новый блок. Для размещения микроконтроллера всегда необходимо использовать специ- альный разъем, который его перепрограммирования или замены. |