|
||||
|
Глава 6 Интеллект «Интеллект», заключенный в роботе, принимает одну из двух форм: программно поддерживаемый интеллект (экспертная система) и интеллект в форме нейронной сети. Возможно одновременное функционирование этих форм интеллекта. Такой синтез со временем будет широко использоваться в роботах для создания систем развитого ИИ. Экспертные программы ИИ, основанные на системе решающих правил, хорошо известны большинству пользователей ПК. Это программы, написанные на языке высокого или низкого уровня типа С++, Basic или ассемблере. С другой стороны, нейронные системы используют искусственные, электронные нейроны для управления и генерации поведения робота. Подобная архитектура построения нейронных сетей, управляющих поведением роботов, была впервые предложена Вильямом Грей Вальтером в конце 40-х начале 50-х годов. Позднее Родни Брукс из Массачусетского технологического института разработал поведенчески ориентированную структуру сетей роботов под названием предикативной (условной) архитектуры. Мы рассмотрим работу поведенчески ориентированных роботов в гл. 8. В этой главе мы остановимся на программируемых системах и микроконтроллерах. Помните, что работу нейронных сетей возможно имитировать с помощью специальных программных систем. Заслуживает внимания тот факт, что практически все матобеспечение по нейронным сетям функционирует на обычных программируемых компьютерах, используя специальные программы для имитации работы сетей. Монокристальный 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 имеет систему закладок. • Возможность отмены/назначения предыдущего действия: Если вы по ошибке удалили строку, то для ее восстановления необходимо нажать клавишу «отменить». • Система окон просмотра: Наличие нескольких окон просмотра позволит вам легко редактировать текст программы. • Печать текста программы. • Перемещение и вставка текста. • Возможность вставки, удаления и копирования по строкам и столбцам. • Поиск и замена в тексте. • Компиляция и запуск устройства программатора. Установка программного обеспечения В процессе установки компонент CodeDesigner создает поддиректорию в директории Program Files и устанавливается туда. Ярлык CodeDesigner помещается в меню программ Windows. Первая программа на PICBASIC PRO Данная программа аналогична по функции программе wink.bas для PICBASIC, но текст ее имеет отличия. Запустите программу CodeDesigner (Lte) – см. рис. 6.18 – и введите следующий текст: ‘ Программа мигалка ‘ Попеременное мигание двух светодиодов, подключенных к порту В Loop: High PORTB.0 ‘Включить светодиод, подключенный к порту RB0 Low PORTB.1 ‘Выключить светодиод, подключенный к порту RB1 Pause 500 ‘Задержка Ѕ с Low PORTB.0 ‘Выключить светодиод, подключенный к порту RB0 High PORTB.1 ‘Включить светодиод, подключенный к порту RB1 Pause 500 ‘Задержка Ѕ с got Loop ‘Переход по метке Loop для непрекращающегося мигания светодиодов Рис. 6.18. Программа PICBASIC Pro, написанная с помощью CodeDesigner CodeDesigner по умолчанию создает выходной код под микроконтроллер PIC 16F84. Это тип микроконтроллера, с которого я рекомендовал бы начать. Для изменения типа устройства вызовите меню устройств и выберите в нем подходящий тип микроконтроллера. Для компиляции программы необходимо выбрать команду компиляции в соответствующем меню или нажать клавишу F5. CodeDesigner автоматически загрузит компилятор PICPASIC Pro для осуществления компиляции. Перед началом компиляции необходимо выбрать соответствующие опции в меню компилятора. CodeDesigner «попросит» выбрать директорию, в которой находится программа PICBASIC Pro и директорию для сохранения исходного и компилированного файлов. После завершения компиляции мы можем приступить к следующему этапу – загрузке программы в микроконтроллер с помощью программатора EPIC. Необходимо следовать порядку, изложенному ранее в инструкции для компилятора PICBASIC. CodeDesigner и программатор EPIC По желанию вы можете запрограммировать ИС также с помощью CodeDesigner. Выберите опцию «загрузить программатор» в меню программатора или нажмите F6. CodeDesigner автоматически запустит EPICWIN.exe под Windows. Когда программа EPIC под Windows запущена, необходимо установить параметры конфигурации в меню опций: • Device: Установите тип устройства. Поставьте опцию 16F84 (по умолчанию). • Memory size (K): Устанавливает емкость ПЗУ. Поставьте 1. • OSC: Установка типа осциллятора. Установите ХТ – кварцевый резонатор. • Watchdog timer: Таймер режима ожидания. Установите On. • Code protect: Защита кода. Установите Off. • Power-up timer enable: таймер режима включения. Установите High. После установки параметров конфигурации вставьте микроконтроллер PIC 16F84 в панельку платы программатора EPIC. В случае если CodeDesigner при запуске программы EPIC выдает ошибку «программатор EPIC не найден» (см. рис. 6.19), вы можете либо произвести диагностику программы, либо попробовать запустить EPIC в DOS моде. Инструкции по запуску матобеспечения EPIC под DOS приведены в разделе описания PICBASIC. Схема тестового устройства аналогична схеме для компилятора PICBASIC. Рис. 6.19. Запуск программы EPIC из CodeDesigner Мигание Включите питание схемы. Светодиоды, подключенные к микроконтроллеру, будут попеременно включаться и выключаться. Движемся дальше – приложения использования микроконтроллера Сейчас настало время продемонстрировать вам, как используются микроконтроллеры в различных схемах. Вы уже обладаете начальным опытом программирования микроконтроллера 15F84. В этой главе приведены некоторые основные функции использования микроконтроллеров в различных устройствах. Эти функции повсеместно реализуются в микроконтроллерах, используемых в различных схемах и разработках. Для начала посмотрим, как микроконтроллер может определить замыкание цепи. Для этой цели могут быть использованы любые из 13 шин ввод/вывод, которые работают в логике TTL. Для определения замыкания мы будем использовать эти логические уровни в соединении с выключателями (см. рис. 6.20). Выключатели низкого уровня На рис. 6.20 выключатель с меткой А выдает на шину ввода/вывода сигнал высокого логического уровня до момента замыкания. После замыкания шина «садится» на землю, т. е. получает сигнал низкого уровня. Когда микроконтроллер получает сигнал замыкания, он может произвести ряд операций или функций управления. В нашем случае замыкание контакта выключателя вызовет мигание светодиода. Понятно, что светодиод может быть заменен транзистором, преобразователем, электронной схемой или другим микроконтроллером или компьютером. Рис. 6.20. Переключатели логических уровней Программа на PICBASIC имеет следующий вид: ‘PICBASIC компилятор ‘REM проверка выключателя низкого уровня ‘ Инициализация переменных input 4 ‘Назначить шину PB4 для определения состояния выключателя start: if pin4 = 0 then blink ‘Если выключатель выдает низкий уровень – све тодиод мигает goto start ‘Если нет – проверить состояние выключателя blink: ‘Процедура мигание high 0 ‘Высокий уровень на шине RB0 для зажигания светодиода pause 250 ‘Задержка ј с low 0 ‘Низкий уровень на шине RB0 для гашения светодиода pause 250 ‘Задержка ј с goto start ‘Проверка состояния выключателя Программу на PICBASIC Pro можно составить следующим образом: ‘REM BASIC Pro компилятор ‘Rem проверка выключателя низкого уровня input portb.4 ‘Назначить шину PB4 для определения состояния выключателя start: if port.b = 0 then blink ‘Если выключатель выдает низкий уровень – све тодиод мигает goto start ‘Если нет – проверить состояние выключателя blink: ‘Процедура мигание high 0 ‘Высокий уровень на шине RB0 для зажигания светодиода pause 250 ‘Задержка ј с low 0 ‘Низкий уровень на шине RB0 для гашения светодиода pause 250 ‘Задержка ј с goto start ‘Проверка состояния выключателя Схема устройства для выключателя низкого уровня приведена на рис. 6.21. Выключатель соединен с шиной ввода/вывода, помеченной RB4. Светодиод соединен с шиной RB0 через ограничительный резистор 470 Ом. Рис. 6.21. Схема ключа низкого уровня Выключатели высокого уровня Программы и схемные решения для данного случая комплементарны предыдущему примеру. Посмотрим снова на рис. 6.20 – вариант В. Если переключатель с меткой В находится в положении «выключено», то шина выхода имеет низкий логический уровень. При замыкании переключателя на шину поступает сигнал высокого логического уровня. Программа на PICBASIC имеет следующий вид: ‘PICBASIC компилятор ‘REM проверка выключателя высокого уровня ‘ Инициализация переменных input 4 ‘Назначить шину PB4 для определения состояния выключателя start: if pin4 = 1 then blink ‘Если выключатель выдает высокий уровень – све тодиод мигает goto start ‘Если нет – проверить состояние выключателя blink: ‘Процедура мигание high 0 ‘Высокий уровень на шине RB0 для зажигания светодиода pause 250 ‘Задержка ј с low 0 ‘Низкий уровень на шине RB0 для гашения светодиода pause 250 ‘Задержка ј с goto start ‘Проверка состояния выключателя Программу на PICBASIC Pro можно составить следующим образом: ‘REM BASIC Pro компилятор ‘Rem проверка выключателя высокого уровня input portb.4 ‘Назначить шину PB4 для определения состояния выключателя start: if port.b = 0 then blink ‘Если выключатель выдает высокий уровень — светодиод мигает goto start ‘Если нет – проверить состояние выключателя blink: ‘Процедура мигание high 0 ‘Высокий уровень на шине RB0 для зажигания светодиода pause 250 ‘Задержка ј с low 0 ‘Низкий уровень на шине RB0 для гашения светодиода pause 250 ‘Задержка ј с goto start ‘Проверка состояния выключателя Схема устройства для выключателя высокого уровня показана на рис. 6.22. Выключатель соединен с шиной ввода/вывода, обозначенной RB4. Светодиод подключен к шине RB0 через ограничительный резистор 470 Ом. Рис. 6.22. Схема ключа высокого уровня Считывание данных компаратора Микроконтроллер может также считывать данные логических уровней с других микроконтроллеров, схем и ИС. В качестве примера рассмотрим схему на рис. 6.23. В этой схеме микроконтроллер считывает данные выхода компаратора. Выход компаратора LM339 построен по схеме NPN транзистора, поэтому для создания сигнала высокого уровня необходимо использовать резистор смещения. Микроконтроллер считывает данные выхода компаратора аналогично алгоритму выключателя низкого уровня. Рис. 6.23. Схема чтения компаратора Считывание данных резистивных датчиков Микроконтроллер может непосредственно считывать данные резистивных датчиков в диапазоне от 5 до 50 кОм. К микроконтроллеру может быть подсоединен резистивный датчик любого типа: фоторезистор (элемент на основе сульфида кадмия CdS), термистор с положительным или отрицательным ТК, датчик наличия ядовитого газа, датчик изгиба или влажности. Микроконтроллер измеряет сопротивления по времени разряда конденсатора в RC цепочке (см. рис. 6.24). Рис. 6.24. Схема команды РОТ Командой для чтения данных резистивного датчика является: Pot pin, scale, var Pot представляет собой имя команды, а pin – номер шины, к которой подключен датчик. Переменная scale используется для задания времени RC цепочки. При большом времени RC цепочки значение scale должно быть низким, а для малого времени RC цепочки scale должно быть установлено на максимальное значение, составляющее 225. Если значение scale установлено правильно, то значение переменной var будет близким к нулю при минимальном сопротивлении и достигать 225 – при максимальном. Значение переменной scale может быть определено экспериментально. Для того чтобы найти подходящее значение scale, необходимо определить максимальное рабочее сопротивление датчика и считать показания var при установке параметра scale равным 225. При этом условии значение переменной var будет представлять собой хорошее приближение значения scale. Основная схема изображена на рис. 6.25. Для имитации резистивного датчика в схему включен переменный резистор 50 кОм. При изменении сопротивления переменного резистора в зависимости от значения переменной В0 будет загораться один из двух светодиодов. Если значение сопротивления превысит 125 – загорится светодиод 1, в противном случае будет гореть светодиод 2. Рис. 6.25. Схема команды РОТ Программа на PICBASIC имеет следующий вид: ‘Компилятор PICBASIC ** считывание данных резистивных датчиков ** ‘Тест?программа для фотосопротивлений ‘Установка start: pot 2,255,b0 ‘Считать показания датчика на шине RB2 if b0 > 125 then l1 ‘Если значение больше 100, включить светодиод 1 if b0 <= 125 then l2 ‘Если значение меньше 100, включить светодиод 2 l1: ‘Процедура включения светодиода 1 high 0 ‘Включить светодиод 1 low 1 ‘Выключить светодиод 2 goto start ‘Повторение l2: Процедура включения светодиода 2 high 1 ‘Включить светодиод 2 low 0 ‘Выключить светодиод 1 goto start ‘Повторение Программу для компилятора PICBASIC Pro можно составить следующим образом: ‘Компилятор PICBASIC Pro ** считывание данных резистивных датчиков ** ‘Тест?программа для фотосопротивлений ‘Установка output portb.0 ‘Установка шины RB0 как выходной output portb.1 ‘Установка шины RB1 как выходной b0 var byte start: portb.2,255,b0 ‘Считать показания датчика на шине RB2 if b0 > 125 then l1 ‘Если значение больше 100, включить светодиод 1 if b0 <= 125 then l2 ‘Если значение меньше 100, включить светодиод 2 l1: ‘Процедура включения светодиода 1 high 0 ‘Включить светодиод 1 low 1 ‘Выключить светодиод 2 goto start ‘Повторение l2: Процедура включения светодиода 2 high 1 ‘Включить светодиод 2 low 0 ‘Выключить светодиод 1 goto start ‘Повторение Можно сделать демонстрацию более интересной, заменив переменное сопротивление фоторезистором на основе CdS. При правильном подборе резистора, темновое сопротивление которого составляет от 50 до 100 кОм и сопротивление светового насыщения порядка 10 кОм или ниже, при закрывании резистора или в темноте будет зажигаться светодиод 1. На ярком свете будет гореть светодиод 2. Возможен последовательный вывод численного значения переменной pot на ЖК дисплей, соединенный с микроконтроллером через последовательный порт, или в ПК через последовательный порт RS232. Для организации последовательного порта необходима команда: Serout Pin, Mode, Var Сейчас мы не будем рассматривать соединение через последовательный порт; важно то, что вы получили об этом представление. Сервомоторы Сервомоторы представляют собой двигатели постоянного тока с редуктором, снабженные системой обратной связи, которая позволяет позиционировать положение ротора сервомотора с высокой точностью. Вал большинства сервомоторов для любительского конструирования может быть позиционирован в интервале поворота не менее 90° (±45°). Сервомотор имеет три вывода. Два вывода подключаются к источнику питания, как правило, от 4,5 до 6 В и к земляному проводу. По третьему проводу подается сигнал обратной связи, позиционирующий ротор мотора. Сигнал позиционирования представляет собой цепочку импульсов переменной длительности. Обычно длительность импульсов варьирует в интервале от 1 до 2 мс. Своей длительностью импульсы управляют положением вала сервомотора. Команда pulsout генерирует на заданной шине импульс заданной длительности с шагом 10 мкс. Таким образом, команда pulseout 1, 150 будет выдавать импульсы длиной 1,5 мс на шине 1. Импульс длиной 1,5 мс повернет вал сервомотора в среднее положение. Программа качания сервомотора Демонстрационная программа будет качать вал сервомотора из левого положения в правое и обратно аналогично качанию параболической антенны радара. Схема устройства приведена на рис. 6.26. Рис. 6.26. Схема включения сервомотора Ниже приведена программа для компилятора PICBASIC: ‘Программа качания сервомотора ‘Компилятор PICBASIC ‘Программа осуществляет качание из левого положения в правое и обратно b0 = 100 ‘Инициализация левого положения sweep: ‘Процедура прямого прохода pulsout 0,b0 ‘Посылка импульса в сервомотор pause 18 ‘Ожидание 18 мс (от 50 до 60 Гц) b0 = b0 + 1 ‘Увеличение длины импульса if b0 > 200 then sweepback ‘Конец прямого хода? goto sweep ‘Нет, продолжение прямого прохода sweepback: ‘Процедура обратного прохода b0 = b0 – 1 ‘Уменьшение длины импульса pulsout 0,b0 ‘Посылка импульса в сервомотор pause 18 ‘Ожидание 18 мс (от 50 до 60 Гц) if b0 < 100 then sweep ‘Конец обратного хода? goto sweepback ‘Нет Программа для компилятора PICBASIC Pro: ‘Программа качания сервомотора ‘Компилятор PICBASIC Pro ‘Программа осуществляет качание из левого положения в правое и обратно b0 var byte b0 = 100 ‘Инициализация левого положения sweep: ‘Процедура прямого прохода pulsout portb.0,b0 ‘Посылка импульса в сервомотор pause 18 ‘Ожидание 18 мс (от 50 до 60 Гц) b0 = b0 + 1 ‘Увеличение длины импульса if b0 > 200 then sweepback ‘Конец прямого хода? goto sweep ‘Нет, продолжение прямого прохода sweepback: ‘Процедура обратного прохода b0 = b0 – 1 ‘Уменьшение длины импульса pulsout portb.0,b0 ‘Посылка импульса в сервомотор pause 18 ‘Ожидание 18 мс (от 50 до 60 Гц) if b0 < 100 then sweep ‘Конец обратного хода? goto sweepback ‘Нет Нечеткая логика и нейронные датчики При интерпретации данных сенсорных датчиков можно воспользоваться некоторыми интересными возможностями. С помощью микроконтроллера мы можем имитировать работу нейронных сетей и/или устройств с нечеткой логикой. Нечеткая логика Первые работы по нечеткой логике были опубликованы в 1965 году профессором Калифорнийского университета в Беркли Лотфи Заде. С самого начала принципы нечеткой логики как усиленно рекламировались, так и подвергались критике. В сущности нечеткая логика пытается имитировать подход человека к определению групп и классов явлений. Определение «нечеткости» можно пояснить некоторыми примерами. Например, на основе какого критерия теплый солнечный день может быть определен, не как «теплый», но как жаркий и кем? Основанием, на котором кто-то определяет теплый день как жаркий, может служить персональное ощущение тепла, которое в свою очередь зависит от его или ее окружения (см. рис. 6.27). Рис. 6.27. Изменение температуры от теплой до жаркой: плавно или скачком Не существует универсального термометра, который «утверждает», что 26,9 С° это тепло, а 27 С° уже жарко. Если рассмотреть этот пример шире, то люди, населяющие Аляску, будут иметь иной интервал температур для «теплых дней» в сравнении с жителями Нью-Йорка, и оба эти значения будут отличаться от соответствующих значений для жителей Флориды. При этом еще не нужно забывать о временах года. Теплый зимний день отличается по температуре от летнего. Все сводится к тому, что основой классификации (например, понятия «теплый день») может служить интервал температур, определенных мнением группы людей. Дальнейшая классификация может быть проведена сравнением мнений различных групп людей. Для любой температуры мы можем найти группу, в температурный интервал которой она попадает. В некоторых случаях температура может попасть в две пересекающиеся группы. Четкая принадлежность к группе может быть определена по отклонению значения от среднего по группе. Идея групповой или интервальной классификации может быть расширена на многие другие вещи, такие как ориентирование, скорость или рост. Давайте используем понятие роста для еще одного примера. Если мы построим график роста 1000 людей, его форма будет напоминать первую кривую на рис. 6.28. Мы можем использовать этот график для формирования групп людей маленького, среднего и высокого роста. Если мы применим жесткое решающее правило считать всех ниже 170 см людьми низкого роста и всех выше 180 людьми высокого роста, то график примет форму 2 на рис. 6.28. Такое правило считает рост 178 см «средним», хотя в действительности человек такого роста находится ближе к группе «высоких» (от 180 см и выше). Рис. 6.28. Группировка людей по росту на основании различных правил Вместо правил жесткой «быстрой» логики, обычно используемой в компьютерах, человек, как правило, использует более «мягкую», неточную логику или нечеткую логику. Для введения нечеткой логики в компьютер мы определим сами группы и степень принадлежности к группе. Таким образом, человек ростом 178 см почти не будет принадлежать группе людей среднего роста (слабое присутствие) и уверенно принадлежать группе высокого роста (сильное присутствие). Нечеткая логика представляет собой альтернативу оцифрованному графику, представленному под номером 3 на рис. 6.28. График, оцифрованный с высоким разрешением, позволяет измерять рост с такой же точностью. Какова причина применения нечеткой логики вместо использования оцифрованной модели? Дело в том, что методы нечеткой логики требуют более простых форм математического обеспечения и функций научения. Для моделирования нечеткой логики в PIC микроконтроллере для групп необходимо создать численные интервалы значений. Этим мы займемся в следующем проекте. Устройство нечеткой логики – система слежения за направлением источника света Сейчас мы приступим к изготовлению устройства – системы слежения за направлением источника света, использующего принцип нечеткой логики. Система отслеживает направление на источник света, применяя нечеткую логику. Для конструкции системы слежения нам потребуются два CdS фотоэлемента, которые представляют собой светочувствительные резистивные датчики (см. рис. 6.29). Сопротивление такого элемента изменяется пропорционально интенсивности светового потока, падающего на чувствительную поверхность фотоэлемента. В условиях темноты элемент имеет наибольшее сопротивление. Рис. 6.29. Электрические характеристики CdS фотоэлемента В продаже имеется много различных типов CdS фотоэлементов. Выбор подходящего элемента основывается на темновом сопротивлении элемента и сопротивлении светового насыщения. Термин «сопротивление светового насыщения» означает минимальное сопротивление элемента, которое перестает уменьшаться при повышении уровня освещенности, т. е. становится насыщенным. Я использую CdS фотоэлементы, имеющие темновое сопротивление порядка 100 кОм и сопротивление светового насыщения порядка 500 Ом. При средних условиях освещенности сопротивление варьирует в пределах 2,5-10 кОм. Для проекта потребуется два CdS фотоэлемента. Необходимо проверить каждый элемент по отдельности, поскольку внутри элементов одного типа наблюдается разброс параметров, что потребует изменения коэффициента шкалирования. Для команды pot я использовал емкость 0,022 мкФ и параметр множителя шкалы 225. Принципиальная схема устройства изображена на рис. 6.30. CdS фотоэлементы подключены к шине порта В (физические номера выводов 8 и 9). Рис. 6.30. Схема системы слежения за источником света Фотоэлементы закреплены на небольшой пластине из пластика или дерева (см. рис. 6.31). Для выводов фотоэлементов в пластине просверлены небольшие отверстия. С обратной стороны к выводам подпаяны проводники, соединенные с выводами PIC микроконтроллера. Рис. 6.31. Конструкция блока датчиков Для закрепления вала редуктора двигателя просверлено отверстие от 2,4 мм до 3 мм. Вал редуктора пропущен через отверстие в блоке датчиков и закреплен клеем (см. рис. 6.32). Рис. 6.32. Фотография блока датчиков, закрепленных на редукторе двигателя Работа системы слежения показана на рис. 6.33. При одинаковом освещении обоих датчиков, их соответствующие сопротивления примерно одинаковы. В пределах ±10 единиц PIC программа считает их одинаковыми и не включает устройство поворота. Иными словами, образуется группа «одинаковости» с размахом 20 единиц. Подобная группа и есть группа нечеткой логики. Рис. 6.33. Работа блока датчиков в зависимости от направления на источник света Когда один из датчиков попадает в зону тени, т. е. разность показаний датчиков превышает диапазон 20 единиц, PIC микроконтроллер запускает двигатель, поворачивающий блок сенсоров в сторону источника света (т. е. равной освещенности датчиков). Управление двигателем постоянного токаДля поворота блока датчиков в сторону источника света устройство использует двигатель постоянного тока с редуктором (см. рис. 6.34). Коэффициент замедления редуктора 4000:1. Вал редуктора имеет скорость примерно 1 оборот в минуту. При повторении конструкции для поворота блока датчиков рекомендуется использовать двигатель с редуктором, имеющим подобные характеристики. Рис. 6.34. Фотография конструкции устройства слежения в сборе Блок датчиков прикреплен (приклеен) к валу редуктора двигателя. Двигатель через редуктор может поворачивать блок по часовой стрелке или против часовой стрелки в зависимости от направления тока, протекающего через двигатель. Для обеспечения реверсирования направления вращения двигателя необходимо устройство, обеспечивающее протекание тока в обоих направлениях. Для этой цели мы используем мостовую схему. В мостовой схеме используются четыре транзистора (см. рис. 6.35). Рассмотрим каждый транзистор как простой ключ, как показано в верхней части рисунка. Схема названа мостовой, поскольку транзисторы (ключи) включены нее в виде моста. Рис. 6.35. Работа мостовой схемы и ее устройство При замыкании ключей SW1 и SW4 двигатель вращается в одном направлении. При замыкании ключей SW2 и SW3 двигатель вращается в противоположном направлении. Если ключи разомкнуты, то происходит остановка двигателя. Управление мостом осуществляется с помощью PIC микропроцессора. Мостовая схемы включает в себя четыре NPN транзистора типа 120 Darlington, четыре диода типа 1N514 и два резистора 10 кОм 0,25 Вт. Вывод 0 подключен к транзисторам Q1 и Q4. Вывод 1 подключен к транзисторам Q2 и Q3. Сигналами на выводах 0 и 1 открываются соответствующие транзисторы и двигатель вращается по или против часовой стрелки соответственно данным блока датчиков. Обратите внимание на правильность подключения резисторов 10 кОм, в противном случае схема не будет работать. Транзисторы TIP 120 Darlington изображены на схеме как обычные NPN транзисторы. Во многих схемах моста в «верхней» части используются транзисторы PNP проводимости. Сопротивление PNP транзисторов немного выше. Таким образом, если мы используем только NPN транзисторы, то КПД устройства несколько увеличится. ДиодыДля предотвращения выбросов напряжения, которые могут привести к сбросу или зависанию PIC микропроцессора, используются защитные диоды, включенные между эмиттером и коллектором каждого транзистора (от Q1 до Q4). Эти диоды гасят всплески напряжения, возникающие при включении и выключении обмоток двигателя. Программа на PICBASIC имеет следующий вид: ‘Программа нечеткой логики для системы слежения start: low 0 ‘Низкий уровень шины 0 low 1 ‘Низкий уровень шины 1 pot 2,255,b0 ‘Чтения показаний фотоэлемента 1 pot 3,255,b1 ‘Чтение показаний фотоэлемента 2 if b0 = b1 then start ‘Если показания равны, то ничего не делать if b0 > b1 then greater ‘Если больше, то насколько if b0 < b1 then lesser ‘Если меньше, то насколько greater: ‘Процедура больше b2 = b0 – b1 ‘Определение разницы показаний if b2 > 10 then cw ‘Внутри границ? Если нет, перейти на cw goto start: ‘Если внутри границ, измерять снова lesser: ‘Процедура меньше b2 = b1 – b0 ‘Определение разницы показаний if b2 > 10 then ccw ‘Внутри границ? Если нет, перейти на ccw goto start: ‘Если внутри границ, измерять снова cw: ‘Поворот блока по часовой стрелке high 0 ‘Включить мост pause 100 ‘Вращение 0,1 с goto start ‘Новая проверка сcw: ‘Поворот блока против часовой стрелки high 1 ‘Включить мост pause 100 ‘Вращение 0,1 с goto start: ‘Новая проверка Работа устройстваПри работе система слежения поворачивается вслед за перемещением источника света. Если оба CdS фотоэлемента освещены примерно одинаково, то поворота не происходит. Для проверки работы устройства закройте пальцем один из CdS датчиков. Это должно вызвать включение двигателя и поворот вала редуктора. Если вал вращается в направлении, противоположном заданному, то поменяйте либо входные проводники датчиков, либо выходные проводники управления мостовой схемой, но не обе операции одновременно. Выход, не использующий нечеткую логикуУстройство системы слежения с нечеткой логикой имеет двоичный выход. Двигатель может находиться в трех состояниях: выключено и вращение по и против часовой стрелки. Во многих случаях требуется плавное (градуальное) изменение выходного сигнала. Допустим, вы проектируете устройство управления двигателем лифта. Необходимым условием в данном случае будет постепенное, а не резкое ускорение или остановка лифта (двигатель не должен просто включаться и выключаться). Возможно ли подобное изменение схемы нашего устройства? Да, конечно. Вместо простого включения двигателя, мы можем запитывать его сигналом ШИМ, который управляет скоростью его вращения. В идеале скорость вращения двигателя должна быть пропорциональна разнице показаний (сопротивлений) двух CdS датчиков. Большая разница будет приводить к большей скорости вращения. По мере вращения датчика и приближения его к положению равновесия скорость вращения двигателя будет динамически изменяться. Такая программа управления выходом может быть иллюстрирована графиками, разбиениями на группы и принадлежностью к группе в терминах нечеткой логики. В данном случае использование подобной программы для системы слежения является избыточным. В целях эксперимента вы можете использовать команды pulsout и pwm для управления скоростью вращения двигателя. Нейронные датчики (логика)При помощи простой программы мы можем превратить датчики нечеткой логики (CdS фотоэлементы) в нейронные датчики. Нейронные сети представляют собой обширную область, мы же ограничимся одним небольшим примером. Для тех, кто решил углубленно изучить строение нейронных сетей, я рекомендую собственную книгу Understanding Neural Networks (Prompt, Indianapolis, 1998, ISBN 0-7906-1115-5). Для создания нейронного датчика мы возьмем численные значения каждого датчика, умножим их на соответствующие весовые коэффициенты и суммируем результирующие величины. Полученный результат затем будет сравниваться со значением трехуровневого порогового значения (см. рис. 6.36). Рис. 6.36. Схема трехуровневого нейрона Наша небольшая программа и датчики могут выполнять все функции, присущие нейронной сети. Более того, введение многоуровневых пороговых значений является нашей оригинальной разработкой. Существуют ли многопороговые системы в природе (биологические системы)? Да, несомненно. Зуд или чесотка представляет собой очень незначительную по уровню боль, а жжение может ощущаться как жары, так и от действия холода. Многоуровневые пороговые значенияКак правило, отдельные нейроны нейронной сети имеют единственный порог (положительный или отрицательный). Если значение превышает пороговое, то нейрон активируется. В нашем случае выходной сигнал сравнивается с несколькими пороговыми значениями и попадает, таким образом, в соответствующую группу. Вместо того чтобы рассматривать группы выхода как диапазоны численных значений, воспользуемся геометрической интерпретацией. Рассмотрим группы как группы круга, квадрата и треугольника соответственно. При накоплении значения «на нейроне» его выходом будет служить геометрическая форма, а не численное значение. Выходные нейроны (светодиоды) могут быть собраны в матрицы соответствующей формы. При попадании сигнала в определенную группу загорается соответствующая матрица. В нашем случае каждый из уровней выхода нейрона мы будем относить к трем группам характерного «поведения»: спячке, охоте и кормлению, которые отражают основные типы поведения «выживания» для робота «охотника за светом». Выбор типа «поведения» основывается на текущем уровне освещенности. При низком уровне освещенности робот-охотник прекращает охоту и поиски пищи (света). Включается режим сна или спячки. При средних уровнях освещенности робот «охотится» и выискивает места с наибольшим уровнем света. При высоких уровнях освещенности «охотник» останавливается и «питается», подзаряжая солнечные батареи. В этой главе мы не будем изготовлять полную модель робота-охотника, лишь ограничимся использованием светодиодов как индикаторов типа соответствующего поведения (см. рис. 6.37). Можно обозначить светодиоды как «спячка», «охота» и «питание». Каждый из светодиодов зажигается в зависимости от интенсивности светового потока, принимаемого CdS фотоэлементами. Рис. 6.37. Схема основной нейронной цепочки Программа на PICBASIC имеет следующий вид: ‘Демонстрация работы нейрона ‘Установка параметров low 0 ‘Светодиод 1 «спячка» выключен low 1 ‘Светодиод 2 «охота» выключен low 2 ‘Светодиод 3 «питание» выключен start: pot 3,255,b0 ‘Считывание показаний первого датчика pot 4,255,b1 ‘Считывание показаний второго датчика w2 = b0 * 3 ‘Умножение на весовой коэффициент w3 = b1 * 2 ‘Умножение на весовой коэффициент w4 = w2 + w3 ‘Сложение результатов ‘Установка пороговых значений if w4 < 40 then feed ‘Много света. Питание if w4 <= 300 then hunt ‘Света среднее количество. Охота If w4 > 300 then snooze ‘Света мало. Спячка ‘Действия feed: ‘Кормление low 0 low 1 high 2 goto start: hunt: ‘Охота low 0 high 1 low 2 goto start: snooze: ‘Спячка * не использовать ключ sleep * goto start Список необходимых частей для программирования микроконтроллера • компилятор PSIBASIC • компилятор PSIBASIC Pro (включая CodeDesignerLit) • программатор EPIC • компилятор PICBASIC и программатор EPIC • CodeDesigner любительская версия • CodeDesigner стандартная версия • 16F84-4 1 шт. • кварцевый резонатор 4,0 МГц • конденсатор 22 пФ 2 шт. • конденсатор 0,1 мкФ • конденсатор 100 мФ 12 В • резистор 4,7 кОм 0,25 Вт • резистор 470 Ом 0,25 Вт • стабилизатор напряжения 7805 • светодиод миниатюрный • плата макетная • Набор для экспериментов PIC–LED-02 (Включает: PIC16F84 (1), кварц 4,0 МГц (1), конденсатор 22 пФ (2), резистор 10 кОм 0,25 Вт (1), регулятор напряжения 7805 (1), макетная плата (2,1" х 3,6", 270 монтажных отверстий)(1), резистор 470 Ом (8), миниатюрный светодиод (8), кнопка-выключатель (1), руководство по двоичному коду, логике и портам ввода/вывода А и В) • Сервомотор с усилием 1,3 кгс Список деталей для системы слежения за направлением источника света и демонстрационного нейрона • (2) CdS фотоэлемент • (1) датчик изгиба (номинальное сопротивление 10 кОм) • (2) конденсатор 0,22 мкФ • (1) конденсатор 0,01 мкФ • (4) транзистор NPN TIP 120 Darlington • (2) резистор 10 кОм • (б) диод 1N514 • (2) резистор 1 кОм • двигатель с редуктором 4000:1 Детали можно заказать в: Images Company James Electronics JDR MicroDevices Radio Shack Images SI, Inc. 39 Seneca Loop Staten Island, NY 10314 (718) 698-8305 (718) 982-6145 (fax) • (1) Макетная плата – Radio Shack PN# 276-175 • (1) конденсатор 0,1 мкФ – Radio Shack PN# 272-1069 • (8) Светодиод красный – Radio Shack PN# 276-208 • (8) Резистор 470 Ом – Radio Shack PN# 270-1115 • (1) Резистор 4,7 кОм – Radio Shack PN# 271-1124 • (8) Резистор 10 кОм – Radio Shack PN# 271-1126 • (1) Регулятор напряж. 7805 – Radio Shack PN# 276-1770 • (2) Выключатель 4 позиц. – Radio Shack PN# 275-1301 • Зажим батареи 9 В – Radio Shack PN# 270-325 Детали можно заказать в: Radio Shack James Electronics JDR MicroDevices |
|
||
Главная | Контакты | Прислать материал | Добавить в избранное | Сообщить об ошибке |
||||
|