Предыдущая Следующая

В аналоговой технике данный результат достигается легко, однако она требует установки нескольких корпусов операционных усилителей и резисторов, что увеличивает вес конструкции. Кроме того, в ходе экспериментов может потребоваться программно расширить область значений (например, до ±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 ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz