Создаем робота-андроида своими руками
Шрифт:
Транзисторы 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. Схема трехуровневого нейрона
Наша небольшая программа и датчики могут выполнять все функции, присущие нейронной сети. Более того, введение многоуровневых пороговых значений является нашей оригинальной разработкой. Существуют ли многопороговые системы в природе (биологические системы)? Да, несомненно. Зуд или чесотка представляет собой очень незначительную по уровню боль, а жжение может ощущаться как жары, так и от действия холода.
Как правило, отдельные нейроны нейронной сети имеют единственный порог (положительный или отрицательный). Если значение превышает пороговое, то нейрон активируется. В нашем случае выходной сигнал сравнивается с несколькими пороговыми значениями и попадает, таким образом, в соответствующую группу.
Вместо того чтобы рассматривать группы выхода как диапазоны численных значений, воспользуемся геометрической интерпретацией. Рассмотрим группы как группы круга, квадрата и треугольника соответственно. При накоплении значения «на нейроне» его выходом будет служить геометрическая форма, а не численное значение. Выходные нейроны (светодиоды) могут быть собраны в матрицы соответствующей формы. При попадании сигнала в определенную группу загорается соответствующая матрица.
В нашем случае каждый из уровней выхода нейрона мы будем относить к трем группам характерного «поведения»: спячке, охоте и кормлению, которые отражают основные типы поведения «выживания» для робота «охотника за светом». Выбор типа «поведения» основывается на текущем уровне освещенности. При низком уровне освещенности робот-охотник прекращает охоту и поиски пищи (света). Включается режим сна или спячки. При средних уровнях освещенности робот «охотится» и выискивает места с наибольшим уровнем света. При высоких уровнях освещенности «охотник» останавливается и «питается», подзаряжая солнечные батареи.