В аналоговой технике данный результат достигается легко, однако она требует установки нескольких корпусов операционных усилителей и резисторов, что увеличивает вес конструкции. Кроме того, в ходе экспериментов может потребоваться программно расширить область значений (например, до ±20 или ±30). В аналоговой технике для этого потребуется изменить схему, что трудоемко и неоправданно сложно. В нашем же варианте робота программа может меняться сколько угодно под разные задачи и требования, но конструкция РОС остается прежней.
Следующий этап — переход ко второму алгоритму (см. рис. 9.7), анализирующему препятствия на пути следования. В соответствующей подпрограмме проверяется состояние контактных датчиков S1 и S2. Если сработал датчик S2 (спереди), то РОС делает четыре шага назад, небольшой поворот влево и четыре шага вперед, после чего опять опра-
Робот "Охотник за светом"
219
шиваются датчики S1 и S2. Если ситуация повторилась четыре раза, то РОС останавливается на одну минуту для восстановления заряда аккумулятора.
Как только ситуация с S1 и S2 исправилась, и контакты не замкнуты, подпрограмма выходит в основную программу. Далее повторяются шаги РОС, пока их количество не достигнет десяти. Это число можно изменить во время экспериментов с маневренностью РОС. Оптимальный диапазон — от двух до 20 шагов. Как только отсчет шагов завершен, программа переходит в начало, и весь цикл повторяется. Для повышения точности движения РОС можно увеличить количество фотодатчиков или разместить фотодатчик на поворотной платформе.
В рассматриваемой конструкции заложена программа с задержкой между импульсами, подаваемыми на ШД, около 3 мс. Это обеспечивает постоянное, довольно быстрое движение РОС.
Программа на ассемблере представлена в листинге 9.1, а шестна-дцатеричный код — в листинге 9.2. Соответствующие файлы ros2 . asm и ros2. hex находятся на прилагаемом к книге компакт-диске в папке Программы - Робот.
.include "c:\Program Files\Atmel\AVR Studio\Appnotes\tn26def. inc"
;Автор: Кравченко А.В.
;Дата: 14.08.2008
;Версия: 1.1.2
;Имя файла: ROS2.asm
.•Микроконтроллер: AVR tiny26.
/Тактовая частота: 4,194мГц
;Питание: нестабилизированное 4,8 В
.list
def |
adr |
rO |
• Рабочий |
регистр |
|
def |
adcl |
= |
r27 |
• Рабочий |
регистр |
def |
prgl |
= |
r24 |
• Рабочий |
регистр |
def |
prg2 |
= |
r25 |
• Рабочий |
регистр |
def |
dl |
= |
rl6 |
Рабочий |
регистр |
def |
d2 |
= |
rl7 |
Рабочий |
регистр |
def |
tmp2 |
= |
rl8 |
Рабочий |
регистр |
def |
tmp3 |
= |
r2 8 |
Рабочий |
регистр |
def |
tmp |
= |
r20 |
Рабочий |
регистр |
def |
adc2 |
= |
r21 |
Рабочий |
регистр |
def |
F |
= |
r22 |
Рабочий |
регистр |
def |
Fl |
= |
r23 |
Рабочий |
регистр |
def |
par |
= |
r26 |
Рабочий |
регистр |
220
Глава 9
Листинг 9 1 Продолжение
.def SI = rl9 ; Рабочий регистр .def S2 = r29 ; Рабочий регистр
. cseg . org 0
rjmp RESET
nop ;rjmp EXT_INT0 - прерывание не используется
nop ;rjmp EXT_PCINT- прерывание не используется
nop ;rjmp TIME_CMPA - прерывание от таймера
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |