Это наша первая работа в рамках конференции "Шаг в будущее". Демонстрировалась на программно-компьютерном салоне в МГТУ им. Н.Э. Баумана и отмечена на нем дипломом третьей степени.
Основными задачами, которые решались в ходе этой работы были:
· анализ различных видов каналов связи для передачи команд управления;
· создание действующей модели, управление движением которой осуществляется командами, формируемыми компьютером;
· разработка программы на языке программирования Quick Basic, формирующей управляющие импульсы как в режиме реального времени (с заданием команд с клавиатуры), так и с помощью предварительно заданных данных о траектории движения.
В настоящее время реализованы следующие этапы проекта:
· создана компьютерная программа;
· создана действующая модель вездехода с управлением по проводной линии;
· подготовлено теоретическое обоснование и схемотехнические решения по модернизации модели с заменой проводной линии радиоканалом.
Перспективы проекта: создание беспроводных систем управления для ТСО старого образца (диапроекторы, кинопроекторы и т.д.), а также разработка кибернетического вездехода, который может двигаться на свет или на звук.
Описание устройства: устройство состоит из игрушечного гусеничного вездехода с независимым электрическим приводом на каждую гусеницу, устройства сопряжения с компьютером и проводной линии передачи.
Устройство сопряжения с компьютером состоит из усилителей, управляемых логическими сигналами с LPT – порта компьютера, которых включают реле, осуществляющих коммутацию питания электродвигателей. Компьютер выдает на согласующее устройство команды «левый вперед», «левый назад», «правый вперед», «правый назад» и «стоп».
Оба блока управлениями левым и правым двигателем вездехода идентичны.
Сигнал с LPT (высокий логический уровень) поступает на вход 1 и через согласующий резистор R1 на базу транзистора VТ1, на котором собран эмиттерный повторитель, который уменьшает нагрузку на LPT. С эмиттерного повторителя сигнал поступает на базу VТ2, в коллектор которого включено реле К1. Две пары переключающих контактов этого реле изменяют полярность питания на клеммах электрического двигателя М1, включенного в коллекторную цепь транзистора VТ4.
Высокий логический уровень на входе 1 переключает двигатель на движение вперед, низкий логический уровень – на движение назад (реверс).
Подача высокого уровня на вход 2 включает движение, а низкий уровень – выключает. Движение вездехода вперед осуществляется комбинацией (правый – вперед, левый - вперед), движение назад – комбинацией правый – реверс, левый – реверс, разворот влево: правый вперед, левый – реверс, разворот вправо: левый вперед, правый – реверс.
Остановка вездехода осуществляется путем подачи низкого логического уровня на вход 2 обоих каналов.
Программа написана на языке Quick Basic 4.5, имеет блочную структуру и позволяет управлять вездеходом как вручную, с помощью клавиатуры, так и с помощью предварительно введенной программы.
Алгоритм и листинг программы приводится ниже.
Листинг программы.
DECLARE SUB ruka ()
DECLARE SUB auto ()
SCREEN 12
CLS
OUT &H378, 0 ‘(Отсутствие команды порта ‘компьютера.)
‘Вывод на экране дисплея возможных вариантов ‘управления:
LOCATE 3, 10
PRINT "Ручное управление – клавиша R, автоматическое управление – А. "
‘Цикл(ku:…goto ku)-цикл ожидания выполнения ‘условия перехода к подпрограммам ручного или ‘автоматического управлений.
ku:
a$ = INKEY$
‘При выполнении условия (a$ = "r") выполняется ‘программа:
IF a$ = "r" THEN
COLOR 12
LOCATE 6, 30
PRINT "Ручное управление. "
CALL ruka ‘Переход к подпрограмме ручного ‘управления.
END IF
‘При выполнении условия (a$ ="a" ) выполняется ‘программа:
IF a$ = "a" THEN
COLOR 12
LOCATE 6, 30
PRINT " Автоматическое управление."
CALL auto ‘Переход к подпрограмме ‘автоматического управления.
END IF
GOTO ku
‘Подпрограмма автоматического управления.
SUB auto
COLOR 2
LOCATE 10, 1
PRINT "Чтобы включить разведчик, нажмите на ‘клавишу "пробел". "
LOCATE 11, 1
PRINT "Чтобы выключить разведчик, нажмите на ‘клавишу "Enter"."
‘Цикл(11:…goto11)-цикл ожидания выполнения ‘условия перехода к
‘подпрограмме ручного управления или движению "разведчика".
11 :
OUT &H378, 0 ‘Отсутствие команды порта ‘компьютера.
b$ = INKEY$
a = INP(&H60)
IF b$ = "r" THEN GOTO op ‘При выполнении условия ‘осуществляется переход к подпрограмме ручного ‘управления.
IF a = 57 GOTO 10 ‘При выполнении условия ‘"разведчик" включается.
s$ = INKEY$
GOTO 11
‘Цикл(10:…goto10)-цикл движения "разведчика" и ‘ожидания выполнения условия ‘перехода к ‘подпрограмме ручного управления , к ‘циклу(11:…goto11).
a = INP(&H60)
b$ = INKEY$
IF b$ = "r" THEN GOTO op ‘При выполнении условия ‘осуществляется переход к подпрограмме ручного ‘управления.
OUT &H378, 3 ‘Команда порта компьютера – ‘двигаться вперёд.
SLEEP 2
OUT &H378, 7 ‘Команда порта компьютера – ‘двигаться влево.
SLEEP 2
IF a = 28 THEN OUT &H378, 0: GOTO 11 ‘При ‘выполнении условия осуществляется переход к ‘циклу(11:…goto11).
s$ = INKEY$
GOTO 10
op:
LOCATE 6, 30
PRINT " "
LOCATE 10, 1
PRINT " "
LOCATE 11, 1
PRINT " "
END SUB
‘Подпрограмма ручного управления.
SUB ruka
‘Цикл(1:…goto1)-цикл ожидания выполнения ‘перехода к подпрограмме
‘автоматического управления и различных команд ‘пользователя компьютера.)
1 :
OUT &H378, 0 ‘Отсутствие команды порта ‘компьютера.
b$ = INKEY$
IF b$ = "a" THEN GOTO o ‘При выполнении условия ‘осуществляется переход к подпрограмме ‘автоматического управления.
4 :
a = INP(&H60)
’При выполнении условия пользователь компьютера ‘даёт команду -двигаться вперёд.
IF a = 72 THEN
OUT &H378, 3
s$ = INKEY$
GOTO 4
END IF
‘При выполнении условия пользователь компьютера ‘даёт команду –двигаться назад.
IF a = 80 THEN
OUT &H378, 15
s$ = INKEY$
GOTO 4
END IF
‘При выполнении условия пользователь компьютера ‘даёт команду – поворачивать влево.
IF a = 75 THEN
OUT &H378, 7
s$ = INKEY$
GOTO 4
END IF
‘При выполнении условия пользователь компьютера ‘даёт команду – поворачивать вправо.
IF a = 77 THEN
OUT &H378, 11
s$ = INKEY$
GOTO 4
END IF
s$ = INKEY$
GOTO 1
o:
LOCATE 6, 30
PRINT " "
END SUB
Многие скажут - ну это просто, мы из ЛЕГО это в первом классе делали. Но тут не ЛЕГО, тут все своими руками делать приходилось. И ребята справились. Гоняли вездеход и вручную и по программе, которую заказывали зрители. Единственный недостаток - это передача команд шла не по радиоканалу, а по жгуту проводов.
Всем здоровья и успехов.