Найти в Дзене
Старый радиолюбитель

Сделано в радиокружке. Управление через LPT.

Это наша первая работа в рамках конференции "Шаг в будущее". Демонстрировалась на программно-компьютерном салоне в МГТУ им. Н.Э. Баумана и отмечена на нем дипломом третьей степени.

Основными задачами, которые решались в ходе этой работы были:

· анализ различных видов каналов связи для передачи команд управления;

· создание действующей модели, управление движением которой осуществляется командами, формируемыми компьютером;

· разработка программы на языке программирования Quick Basic, формирующей управляющие импульсы как в режиме реального времени (с заданием команд с клавиатуры), так и с помощью предварительно заданных данных о траектории движения.

В настоящее время реализованы следующие этапы проекта:

· создана компьютерная программа;

· создана действующая модель вездехода с управлением по проводной линии;

· подготовлено теоретическое обоснование и схемотехнические решения по модернизации модели с заменой проводной линии радиоканалом.

Перспективы проекта: создание беспроводных систем управления для ТСО старого образца (диапроекторы, кинопроекторы и т.д.), а также разработка кибернетического вездехода, который может двигаться на свет или на звук.

Описание устройства: устройство состоит из игрушечного гусеничного вездехода с независимым электрическим приводом на каждую гусеницу, устройства сопряжения с компьютером и проводной линии передачи.

Устройство сопряжения с компьютером состоит из усилителей, управляемых логическими сигналами с LPT – порта компьютера, которых включают реле, осуществляющих коммутацию питания электродвигателей. Компьютер выдает на согласующее устройство команды «левый вперед», «левый назад», «правый вперед», «правый назад» и «стоп».

Оба блока управлениями левым и правым двигателем вездехода идентичны.

Рис. 4. Схема блока управления двигателем.
Рис. 4. Схема блока управления двигателем.

Сигнал с LPT (высокий логический уровень) поступает на вход 1 и через согласующий резистор R1 на базу транзистора VТ1, на котором собран эмиттерный повторитель, который уменьшает нагрузку на LPT. С эмиттерного повторителя сигнал поступает на базу VТ2, в коллектор которого включено реле К1. Две пары переключающих контактов этого реле изменяют полярность питания на клеммах электрического двигателя М1, включенного в коллекторную цепь транзистора VТ4.

Высокий логический уровень на входе 1 переключает двигатель на движение вперед, низкий логический уровень – на движение назад (реверс).

Подача высокого уровня на вход 2 включает движение, а низкий уровень – выключает. Движение вездехода вперед осуществляется комбинацией (правый – вперед, левый - вперед), движение назад – комбинацией правый – реверс, левый – реверс, разворот влево: правый вперед, левый – реверс, разворот вправо: левый вперед, правый – реверс.

Остановка вездехода осуществляется путем подачи низкого логического уровня на вход 2 обоих каналов.

Программа написана на языке Quick Basic 4.5, имеет блочную структуру и позволяет управлять вездеходом как вручную, с помощью клавиатуры, так и с помощью предварительно введенной программы.

Алгоритм и листинг программы приводится ниже.

Рис. 5. Алгоритм программы.
Рис. 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

Многие скажут - ну это просто, мы из ЛЕГО это в первом классе делали. Но тут не ЛЕГО, тут все своими руками делать приходилось. И ребята справились. Гоняли вездеход и вручную и по программе, которую заказывали зрители. Единственный недостаток - это передача команд шла не по радиоканалу, а по жгуту проводов.

Всем здоровья и успехов.

Что-то пошло не так, и нам не удалось загрузить комментарии. Попробуйте ещё раз
Документы, вакансии и контакты