отпусканием крепежных гаек. После установки бампера, при касании или столкновении робота с препятствием бампер будет отклоняться назад и замыкать контакты выключателя.
Рис. 8.10. Боковой вид крепления верхней скобы к основанию робота при
Для изготовления выключателя использованы центральные отверстия в верхней скобе и основании робота. Как видно из рис. 8.10, в центральное отверстие скобы вставлен винт 3 мм, затянутый обычной оцинкованной гайкой и дополнительной латунной контргайкой. К латунной гайке припаян контактный провод. Такая конструкция обеспечивает надежный электрический контакт между проводом и скобой бампера. Латунная гайка используется потому, что к ней легко надежно припаять проводник. Обычные оцинкованные гайки с трудом поддаются пайке, что снижает надежность электрического контакта.
Другая половина выключателя состоит из пластмассового винта 3 мм длиной 25 мм и трех гаек, одна из которых латунная и к которой припаивается второй контактный провод выключателя (см. рис. 8.11). На рис. 8.12 изображен чертеж выключателя в сборе. Регулировка выключателя заключается в том, чтобы расположить нижнюю контактную латунную гайку непосредственно под верхней алюминиевой скобой, но без взаимного касания. Когда верхняя скоба наклоняется вперед, то она касается латунной гайки, замыкая, таким образом, электрический контакт.
Рис. 8.11. Боковой вид датчика «касания» (половина датчика на основании робота), пластиковый винт с верхней латунной гайкой
Рис. 8.12. Детальная фотография крепления датчика «касания» и пружинной подвески верхней скобы
В моем прототипе устройства использованы CdS фоторезисторы с темновым сопротивлением порядка 100 кОм и сопротивлением на свету порядка 10 кОм. Наилучшим местом для закрепления фоторезисторов является верхняя часть 100:1 редуктора ходового двигателя (см. рис. 8.13). Для крепления фоторезисторов я использовал небольшую пластиковую пластинку, закрепленную под углом 45° вверх и светонепроницаемый козырек, помещенный между фоторезисторами (см. рис. 8.14). Закрепление фоторезисторов на площадке переднего колеса автоматически обеспечивает совпадение направления приема светового излучения с направлением движения. Такой тип повторяет конструкцию оригинальной черепахи робота.
Рис. 8.13. Детальная фотография конструкции узла переднего ведущего колеса, содержащая противовес, ведущее колесо, двигатель с редуктором и датчики освещенности
Рис. 8.14. Изометрический вид блока датчиков
Использование двух CdS фоторезисторов сильно облегчает вычисления, необходимые для решения задачи следования за источником света. Для этого требуется алгоритм, аналогичный алгоритму действия устройства системы слежения за направлением источника света, описанный в гл. 6. Работа блока фоторезисторов проиллюстрирована на рис. 8.15. Когда оба датчика освещены одинаково, то их сопротивления приблизительно равны. Если разность показаний каждого их датчиков не превышает ±10 единиц, программа PIC полагает их равными и не отдает команду на устройство поворота. Когда один из датчиков попадает в тень источника света, то разность сопротивлений превышает ±10 единиц. Соответственно PIC микроконтроллер включает устройство поворота для обеспечения равной освещенности датчиков. При этом переднее колесо поворачивается, и робот движется прямо к источнику света. Если освещенность превышает пороговую, то робот переходит в режим «избегания».
Рис. 8.15. Функциональное реагирование блока датчиков
Принципиальная схема робота изображена на рис. 8.16. «Интеллект» робота обеспечивается работой двух микроконтроллеров PIC16F84. Сигнал для управления рулевым механизмом сервомотора снимается с шины RB3 PIC микроконтроллера 2. Ходовой двигатель с редуктором 100:1 соединен с мостовой схемой, состоящей из компонентов Q1-Q4, D1-D4 и R1-R4. Мостовая схема управляется с шин входа/выхода RB1 и RB2. Показатели световых CdS датчиков считываются шинами RB6 и RB7 микроконтроллера 1. Показания датчика касания считываются шиной RB5, что сигнализирует о наличии препятствия. Монтаж устройства я осуществил на двух небольших макетных платах без применения пайки. Макетные платы закреплены на основании робота на крышке батарейного отсека.
Рис. 8.16. Принципиальная электрическая схема робота-черепахи
Для точного моделирования функций исходной конструкции (точного повторения поведения оригинального робота-черепахи конструкции Вальтера) необходимо два микроконтроллера. Распределение вычислительных функций между двумя процессорами обеспечивает более четкую и слаженную работу робота.
Основной причиной использования второго микроконтроллера является задача управления рулевым механизмом сервомотора. Мощности одного микропроцессора оказалось недостаточно для считывания показаний двух CdS фоторезисторов и одновременного управления рулевым механизмом. Если бы я использовал для руления обычный двигатель с редуктором, то и одного микропроцессора оказалось бы достаточно. Если оптимистично смотреть на вещи, преимуществом такого подхода к решению проблемы является возможность создания робота с двумя процессорами, работающими в паре (т. е. системы с разделением времени).
Одному микроконтроллеру, названному микроконтроллером 1, я назначил функции отслеживания направления источника света и контроля датчика столкновений. Управление двигателями хода и поворота обеспечивается вторым микроконтроллером, имеющим номер 2. Чтобы схема работала, необходимо обеспечить связь между микроконтроллерами. В данном случае двухсторонняя связь не требуется: один микроконтроллер подает управляющие сигналы, а второй – «слушает».
Микроконтроллер 1. Микроконтроллер 1 считывает информацию со световых CdS датчиков и с датчика столкновений. Его связь с микроконтроллером 2 осуществляется с помощью трех шин ввода/вывода.
• Шина ввода/вывода 1 отображает состояние CdS датчика 1. Если сила света, попадающего на CdS 1 больше, чем на CdS 2, то на шине появляется сигнал низкого уровня. Если сила света на обоих датчиках равна, то на выходе присутствует сигнал высокого уровня.
• Шина ввода/вывода 2 отображает состояние CdS датчика 2. Если сила света, попадающего на CdS 2, больше, чем на CdS 1, то на шине появляется сигнал низкого уровня. Если сила света на обоих датчиках равна, то на выходе присутствует сигнал высокого уровня.
• Шина ввода/вывода 3 отображает либо состояния датчика столкновений, либо слишком большую засветку CdS датчиков. В обоих случаях на выходе появляется сигнал высокого уровня.
Микроконтроллер 2. Микроконтроллер 2 проверяет состояние трех шин ввода/вывода и на основании полученной информации управляет движением и поворотом согласно таблице:
Соответственно шины 1 и 2 отражают состояние датчиков CdS, а шина 3 – состояние датчика столкновений.
Я добавил состояние «спячки», соответствующее общему низкому уровню освещенности. Если оба CdS датчика освещены примерно одинаково, то робот движется вперед. Если датчики освещены в разной степени, то робот поворачивается соответственно направо или налево. Если поступает слишком много света или срабатывает датчик столкновений, то робот переходит в режим избегания.
Батарейный отсек робота содержит четыре элемента АА, обеспечивая напряжение питания 6 В. При проверке функционирования робота есть основания предполагать, что истощение батарей происходит достаточно быстро.
Программа
Блок-схема программы изображена на рис. 8.17. После включения питания ходовой двигатель отключен, и микроконтроллер начинает искать наиболее яркий источник света, поворачивая сервомотор. Если источник света имеет слишком большую яркость, то включается режим избегания. В режиме избегания ходовой двигатель включается в режим реверса; при этом ведущее колесо поворачивает направо или налево. Если освещенность не достигает уровня режима избегания, то робот поворачивается в направлении источника света и движется вперед. При замыкании датчика столкновений робот