Текст книги "Создаем робота-андроида своими руками"
Автор книги: Джон Ловин
Жанр:
Педагогика
сообщить о нарушении
Текущая страница: 8 (всего у книги 22 страниц) [доступный отрывок для чтения: 9 страниц]
Монокристальный PIC микроконтроллер
B настоящее время снабжение «интеллектом» небольшого робота или роботизованной системы представляет собой достаточно простую задачу. Существует целое семейство однокристальных компьютеров (более известных как микроконтроллеры), способных выполнять разнообразную работу.
Как следует из названия, однокристальный компьютер представляет собой цельное компьютерное устройство, заключенное в корпус ИС. Микроконтроллер, выполненный на миниатюрной подложке из кремния, заключает в себе свойства и возможности обычного персонального компьютера (ПК). Прежде всего, микроконтроллер способен хранить и выполнять программы, что является его наиболее важным свойством. Контроллер содержит центральный процессор (ЦПУ), оперативную память (ОП), постоянное запоминающее устройство (ПЗУ), шины ввода-вывода, последовательный и параллельный порты, таймеры и некоторые другие периферические устройства типа АЦП и ЦАП.
Причины использования микроконтроллера
Способность микроконтроллера к хранению и выполнению уникальной (заданной пользователем) программы обусловливает гибкость его применения. Например, можно запрограммировать микроконтроллер на принятие решений (исполнение функций) на основе определенных заранее состояний шин ввода-вывода и показаний датчиков. Его способность производить математические и логические операции позволяет моделировать сложные логические цепочки и работу цифровых электронных схем. Программы другого рода позволяют имитировать работу нейронных сетей и устройств с нечеткой логикой.
Микроконтроллер способен управлять работой двигателей постоянного тока (используется управление по напряжению или ШИМ), сервомоторов, шаговых двигателей и т. д. Если запрограммировать реакции микроконтроллера на показания чувствительных датчиков и команды ДУ, то робот приобретет способность «интеллектуального» реагирования. В настоящее время все наиболее «умные» электронные устройства на потребительском рынке снабжены микроконтроллерами, которые, очевидно, могут быть использованы и в наших роботах.
Подробности программирования PIC микроконтроллера
Программирование PIC микроконтроллера происходит в три этапа. Однако прежде чем приступить к собственно программированию, вам необходимо приобрести две вещи: программу компилятор PICBASIC и программатор EPIC (плата, куда помещается микроконтроллер). Сам PIC микроконтроллер и его дополнительные части не относятся к этим компонентам. Я рекомендую начать с PIC микроконтроллера типа 16F84, поскольку он представляет собой достаточно универсальное устройство в корпусе с 18 выводами, имеющий 13 шин ввода-вывода и перезаписываемую flash-память. Flash-память позволяет произвести до 1000 циклов перепрограммирования. Это окажется достаточно полезным при тестировании и отладке программ и электрических схем.
Компилятор PICBASIC (рис. 6.1) может быть установлен на стандартный ПК. Программа работает под DOS или в окне «MS-DOS Prompt» при установленных Windows. Для краткости MS-DOS Prompt мы далее будем обозначать просто как окно DOS. Программа DOS может быть запущена на любом ПК, начиная от PC XT с версией DOS 3.3 или выше. Компилятор поддерживает широкий ассортимент PIC микроконтроллеров. Компилятор генерирует шестнадцатеричный машинный код, который может быть использован и с другими программаторами. Цена программного обеспечения компилятора PICBASIC порядка $99,95.
Рис. 6.1. Компилятор PICBASIC
Плата программатора EPIC (см. рис. 6.2) имеет панельку для вставки ИС PIC контроллера и соединение с ПК через порт принтера для осуществления программирования. Плата программатора присоединяется к компьютеру с помощью кабеля DB25, вставленного в порт принтера (параллельный порт). Если в компьютере имеется единственный параллельный порт, в который уже вставлен кабель принтера, то для программирования PIC этот кабель должен быть предварительно отсоединен. В паре с компилятором PICBASIC плата программатора EPIC поддерживает программирование многих типов PIC микроконтроллеров. Цена платы программатора вместе с прилагаемой дискетой составляет $59,00.
Рис. 6.2. Плата программирования EPIC
Микроконтроллер PIC 16F84 изображен на рис. 6.3. Он представляет собой универсальное устройство, снабженное flash-памятью. Flash-память, как было отмечено выше, является памятью с возможностью перезаписи. Память допускает минимум 1000 циклов стирание-запись, поэтому вы можете перепрограммировать и вновь использовать микроконтроллер до 1000 раз. Время сохранения памяти без перезаписи составляет примерно 40 лет. Из 18 выводов ИС 16F84 13 представляют собой шины ввода-вывода. Изменение состояния шин ввода-вывода можно легко осуществить из программы. Другие функции включают управление питанием по перезапуску, режим энергосберегающей моды, таймер включения и защиту кодов. Другие функции архитектуры PIC 16F84 будут приведены по ходу изложения.
Рис. 6.3. Микроконтроллер 16F84
Загрузка программного обеспеченияПрежде всего необходимо загрузить матобеспечение компилятора PICBASIC и программатора EPIC согласно инструкциям, приведенным в их описаниях. Для загрузки я создал директорию на жестком диске под названием APPLICS. Для того чтобы вызывать компилятор и программатор из одной и той же директории, я использовал указатель пути DOS. Все необходимые текстовые файлы я создал и сохранил в той же директории APPLICS. Для полной установки программного обеспечения, включая полный список команд DOS, наряду с руководством по программированию микроконтроллеров PIC прочитайте мою книгу PIC Microcontroller Project Book (McGraw-Hill, New York, 2000).
Шаг 1: Написание программы на языке BASICПрограммы на языке PICBASIC должны быть написаны в текстовом редакторе, способным создавать текстовые файлы формата ASCII или DOS text. Все современные редакторы, которые я использовал, имеют эту функцию. Используйте команду Save as и выберете расширение MS-DOS text, DOS text или ASCII text. Готовый текст компилируется с помощью PICBASIC. Если у вас нет текстового редактора, то воспользуйтесь программой Windows Notepad, которая имеется в версиях Windows 3.x, 95, 98 для того, чтобы написать исходный файл на BASIC. (В Windows смотрите Приложения.) В оболочке DOS вы можете использовать редакторы EDIT.
При сохранении файла необходимо снабдить его расширением. bas. Если вы сохраняете программу под именем Wink, то ее полное имя будет Wink.bas.
Шаг 2: Компилирование программыКомпилятор PICBASIC запускается командной строкой pbc с набором имени необходимого текстового файла. Например, если мы назвали файл wink.bas, то командная строка в DOS command prompt будет:
pbc wink.bas
Компилятор BASIC обрабатывает исходный файл и создает два дополнительных файла:.asm (файл на языке ассемблера) и. hex (файл в шестнадцатеричных машинных кодах).
Файл wink.asm представляет собой трансляцию BASIC файла на язык ассемблера. Файл wink.hex является файлом машинных кодов, записанных в шестнадцатеричном виде. Для программирования PIC загружается файл. hex.
Если при компилировании исходного текста на BASIC компилятор обнаружит ошибки, то он отметит каждую из них в строке, содержащей эту ошибку, и прервет работу. Для успешного завершения компиляции необходимо предварительно исправить все отмеченные ошибки в исходном тексте программы.
Шаг 3: Программирование ИС PICСоедините плату программатора с портом принтера компьютера при помощи кабеля DB25. Перейдите в моду DOS. В командной строке наберите:
EPIC
На рис. 6.4 показан вид экрана монитора. Используйте опцию Open File и выберите файл wink.hex из списка в диалоговом окне. После загрузки файла последовательность чисел отобразится в окне слева. Вставьте PIC 16F84 в панельку и нажмите клавишу Program. Микроконтроллер PIC запрограммируется и будет готов к работе.
Рис. 6.4. Окно программирования EPIC
Первая программа на языке BASICТеперь мы готовы написать нашу первую программу. Введите программу с помощью текстового редактора в точности, как она представлена ниже:
‘Первая программа на BASIC для попеременного мигания двух светодиодов, подключенных к порту В.
Loop: High 0 ‘Включить светодиод, подключенный к порту RB0
Low 1 ‘Выключить светодиод, подключенный к порту RB1
Pause 500 ‘Задержка 0,5 с.
Low 0 ‘Выключить светодиод, подключенный к порту RB0
High 1 ‘Включить светодиод, подключенный к порту RB1
Pause 500 ‘Задержка 0,5 с.
goto loop ‘Переход по метке Loop попеременное мигание светодиодов
End
Посмотрите на рис. 6.5. Сохраните данный текст как текстовый файл при помощи команды Save в файловом меню. Присвойте файлу имя wink.bas (см. рис. 6.6). Если вы случайно сохранили текст как wink.txt, то не расстраивайтесь. Вы можете легко переименовать файл в wink.bas в файловом меню редактора при помощи команды Save as.
Рис. 6.5. Текстовый файл программы PICBASIC
Рис. 6.6. Сохранение текстового файла
Компиляция
Компилятор PICBASIC должен быть запущен под системой DOS или из окна DOS prompt в системе Windows. Я производил запуск компилятора из директории APPLICS. Убедитесь, что файл wink.bas также находится в директории компилятора PICBASIC. Компилятор PICBASIC совместим со многими типами различных PIC микроконтроллеров. Для компиляции программы под имеющийся микроконтроллер необходимо сообщить программе его тип. Для компиляции программы под PIC 16F84 необходимо добавить -p16f84 к команде pbc.
Таким образом, полная команда будет выглядеть: pbc -p16f84 wink.bas. В DOS prompt наберите команду и нажмите клавишу ввода (см. рис. 6.7).
C:APPLICS>pbc –p16f84 wink.bas
Рис. 6.7. Введение команды компиляции
Компилятор выдаст заголовок, содержащий название версии и начнет компилировать исходный текст (см. рис. 6.8). Если исходный текст на BASIC не содержит ошибок, то он создаст два дополнительных файла. Если компилятор найдет ошибки, то он выдаст список ошибок с указанием номера соответствующей строки. Сопоставьте номера строк ошибок со строками исходного текста. Компилятор завершит программу только в том случае, если все ошибки будут исправлены.
Рис. 6.8. Программа компилятора
Вы можете посмотреть полученные файлы с помощью команды dir. Наберите dir в командной строке и нажмите клавишу ввода (см. рис. 6.9).
C:APPLICS> dir
Рис. 6.9. Командная директория
Команда dir отображает все субдиректории и файлы, содержащиеся в данной директории. На рис 6.9 можно заметить появление двух дополнительных файлов. Одним из них является файл wink.asm, являющийся исходным файлом на языке ассемблера, который автоматически запускает макроассемблер для перевода ассемблерного кода в шестнадцатеричный машинный код. Вторым созданным файлом является файл wink.hex, содержащий шестнадцатеричный машинный код.
Программирование ИС PICДля программирования ИС PIC необходимо соединить плату программатора EPIC с компьютером (см. рис. 6.10). Плата EPIC соединяется с портом принтера. Если компьютер содержит единственный порт принтера, то отсоедините принтер, если он был подключен, и подключите плату EPIC при помощи кабеля DB25 длиной 2 метра.
Рис. 6.10. Плата программатора EPIC
При подключении платы обратите особое внимание на то, чтобы PIC микроконтроллер не был вставлен в плату. Если у вас имеется внешний сетевой источник питания для платы программатора, вставьте его в соответствующее гнездо. Если у вас нет сетевого источника питания, то воспользуйтесь двумя новыми батареями на 9 В и переключите джампер «Batt on» для подачи напряжения. Подключение платы к компьютеру и подача питающего напряжения должны производиться до запуска программ. В противном случае компьютер «не увидит» устройство, присоединенное к порту принтера, и выдаст сообщение об ошибке «EPIC programmer not connected».
После подачи напряжения и соединения с портом принтера на плате программатора может зажечься и погаснуть светодиод. До окончания отработки программы установки связи в EPIC программатором не вставляйте PIC микроконтроллер в панельку программатора.
Программное обеспечение платы программатора EPICСуществуют две версии программного обеспечения EPIC: EPIC.exe под систему DOS и EPICWIN.exe под Windows. Матобеспечение под Windows является 32-разрядным и может использоваться под версии Windows 95, 98 и NT, но не подходит для 3.Х.
Использование DOS версии EPIC
При использовании версии Windows 95 или выше вы можете открыть окно MS-DOS prompt или перезагрузить компьютер в DOS моде. Под Windows 3.ХХ необходимо завершить сессию.
Предположим, что мы находимся в DOS моде и только что завершили компилирование wink.bas с помощью компилятора pbc. Скопируйте файл wink.hex в директорию EPIC. В моде DOS prompt наберите «EPIC» и нажмите клавишу ввода для запуска DOS версии программы EPIC (см. рис. 6.11).
Рис. 6.11. Команды EPIC
Отображение программы EPIC на мониторе показано на рис. 6.12. Используйте мышь для нажатия на клавишу Open или нажмите Alt + O на клавиатуре. Выберите файл wink.hex (см. рис. 6.13). Когда hex файл загрузится, вы увидите последовательность чисел в окне слева (см. рис. 6.14). Эта последовательность является машинным кодом программы. На правой стороне экрана высвечиваются параметры конфигурации, которые нам необходимо будет установить перед началом программирования PIC ИС.
Рис. 6.12. Окно программы EPIC
Рис. 6.13. Выбор шестнадцатеричного файла
Рис. 6.14. Шестнадцатеричный файл, загруженный в программу EPIC
Просмотрим в порядке очередности список параметров конфигурации:
• Device: Определение типа устройства. Установим параметр 8Х.
• ROM size (K): Устанавливает емкость памяти ПЗУ. Выберем 1.
• OSC: Установка типа осциллятора. Выберем ХТ для кварцевого резонатора.
• Watchdog timer: Выберем On.
• Code protect: Выберем Off
• Power-up time enable: Выберем High.
После установки параметров вставьте PIC микроконтроллер 16F84 в панельку. Щелкните по Program или нажмите Alt + P на клавиатуре для запуска программирования. Прежде всего программа EPIC определяет, является ли память ИС микроконтроллера «пустой». В этом случае EPIC программа инсталлирует заданную вами программу в микроконтроллер. Если память микроконтроллера не пуста, то выдается опция прервать выполнение программы или записать новую программу поверх существующей. Если в памяти микроконтроллера уже существует какая-то программа – записывайте поверх нее. По мере программирования PIC рабочие строки машинного кода подсвечиваются. После окончания процесса микроконтроллер запрограммирован и полностью готов к работе.
Проверка PIC микроконтроллераНа приведенной схеме видно, что для обеспечения работы микроконтроллера требуется очень небольшое количество дополнительных деталей. Прежде всего необходим резистор смещения, присоединенный к выводу 4 (MCLR), кварцевый резонатор на частоту 4 МГц с двумя конденсаторами по 22 пФ и источник питания 5 В.
На выходе устройства подключены два светодиода, соединенные последовательно с ограничительными резисторами. Они позволят оценить нам правильность работы микроконтроллера. Соедините компоненты без помощи пайки на макетной плате в соответствии со схемой на рис. 6.15. Готовое устройство будет иметь вид, подобный изображенному на рис. 6.16.
Рис. 6.15. Схема
Рис. 6.16. Схема, смонтированная на макетной плате
Хотя спецификация на ИС 16F84 утверждает, что микроконтроллер способен работать в интервале напряжений от 2 до 6 В, я предпочел использование стабилизированного источника питания 5 В. Стабилизатор напряжения включает регулятор напряжения на ИС 7805 и два конденсатора фильтра.
МиганиеПодайте напряжение питания на схему. Светодиоды, подключенные к ИС, начнут попеременно включаться и выключаться, поочередно мигая… Теперь вы знаете, что для программирования микроконтроллера и его запуска требуются совсем небольшие усилия.
По мере накопления опыта использование компилятора и программатора станет вашей «второй натурой». Процедура перестанет быть для вас «пошаговой», и все ваше внимание сосредоточится на создании наиболее эффективных программ на PICBASIC. Так должно быть и так будет.
Проверка неисправностейВ данной простой схеме ошибки практически не встречаются. Если Светодиоды не включаются, то необходимо проверить полярность их включения. Если они включены с обратной полярностью, то они не будут зажигаться.
Компилятор PICBASIC ProСуществует старшая версия компилятора PICBASIC, которая имеет название PICBASIC Professional компилятор. Версия Pro компилятора гораздо бо-: лее дорогая и стоит порядка $249,95. Версия Pro имеет гораздо больший и развернутый набор команд, чем стандартная версия компилятора. Некоторые из таких команд, которые содержатся в Pro версии, могут управлять прерываниями, обеспечивают прямое управление ЖК-дисплеем, генерируют тоны DTMF и выдают команды Х-10.
Хотя данная версия является в целом более совершенной, она не поддерживает две из моих любимых (и очень полезных) команд: команду Peek (прочитать байт по адресу) и команду Poke (записать байт по адресу). Хотя в описании эти команды отмечены как «полезные», подчеркивается, что для версии PICBASIC Pro они не могут быть использованы. Если отбросить эмоции, такое решение представляется неудачным хотя бы потому, что оно разрушает вертикальную совместимость компиляторов PICBASIC, если в программе используются команды Peek или Poke.
Новые возможности интегрированной среды обработки (IDE)
С недавнего времени компиляторы PICBASIC и PICBASIC Pro комплектуются дополнительной дискетой, содержащей интерфейс интегрированной среды обработки информации (integrated development environment IDE), который имеет название CodeDesigner Lit (см. рис. 6.17). CodeDesigner Lite позволяет составлять и компилировать программы PICBASIC в оболочке Windows. Каждый оператор выделяется цветом, что позволяет с большей наглядностью выделять ошибки и вычитывать коды. Демонстрационная версия позволяет писать программы длиной до 150 строк и одновременно открывать до трех файлов с целью облегчения их перемещения и копирования.
Рис. 6.17. CodeDesigner Line
Наиболее важной чертой интерфейса CodeDesigner IDE является возможность сперва ввести исходный текст программы, потом компилировать программу в машинный код и, наконец (теоретически), запрограммировать микроконтроллер в пределах одного окна Windows. Такая компоновка уменьшает время работы программы. Обычно я пишу программу в DOS моде или использую окно MS-DOS Prompt под Windows. После окончания я выхожу из режима редактора и вручную компилирую программу. Если программа содержит ошибки (что чаще всего и происходит), я опять вхожу в редактор и произвожу отладку программы. Когда программа полностью отлажена, я загружаю ее в микроконтроллер с помощью программатора и программы EPIC. После этого производится тестирование микроконтроллера и остальной схемы. Если все работает правильно, то задача решена; в противном случае я начинаю переписывать программу.
При использовании CodeDesigner легкость написания и отладки программы на PICBASIC, а также загрузки ее в микроконтроллер сильно повышают производительность работы. Мой опыт показывает, что оптимальным является создание и отладка программы под Windows, но программирование лучше осуществляется в DOS моде.
Демонстрационной версии CodeDesigner Lite для большинства случаев оказывается достаточно, но по желанию можно расширить ее до полной версии CodeDesigner. CodeDesigner имеет любительскую версию за $45,00 и стандартную версию за $75,00.
Любительская версия CodeDesigner может работать только с компилятором PICBASIC. Стандартная версия поддерживает оба компилятора: PICBASIC и PICBASIC Pro. Некоторые отличительные характеристики CodeDesigner приведены ниже:
• Автодополнение текста: CodeDesigner делает написание текста программы более простым с помощью всплывающих окон Windows, автоматически заполняемых необходимыми операторами и данными.
• Поддержка работы с несколькими файлами.
• Подсвечивание строк, содержащих ошибки: CodeDesigner во время компиляции текста PICBASIC считывает информацию об ошибках и подсвечивает соответствующие строки программы.
• Синтаксическая поддержка: Опция оперативной синтаксической поддержки отображает синтаксис операторов среди допустимых операторов PICBASIC.
• Описание оператора: Если оператор является допустимым для PICBASIC, дескриптор оператора появляется в поле строки состояния.
• Разъяснения функций операторов: Достаточно поставить курсор на оператор PICBASIC, чтобы получить разъяснения его функции.
• Список меток: Окно списка меток высвечивает текущую метку и позволяет вам выбрать нужную метку из списка для осуществления перехода.
• Выделение цветом в PICBASIC: Возможно выделять различным цветом различные слова, строки, данные, комментарии, определения и т. д. Подобное выделение позволяет более легко читать текст программы PICBASIC.
• Закладки: Для отметки нужных мест в программе CodeDesigner имеет систему закладок.
• Возможность отмены/назначения предыдущего действия: Если вы по ошибке удалили строку, то для ее восстановления необходимо нажать клавишу «отменить».
• Система окон просмотра: Наличие нескольких окон просмотра позволит вам легко редактировать текст программы.
• Печать текста программы.
• Перемещение и вставка текста.
• Возможность вставки, удаления и копирования по строкам и столбцам.
• Поиск и замена в тексте.
• Компиляция и запуск устройства программатора.