Наверное, сколько бы ни было человеку лет, ему
все равно будет интересно поиграть игрушкой на радиоуправлении. К
примеру возьмем машинку на радиоуправлении. Батарейки
использовать не рекомендую - лучше аккумуляторы. Себе я поставил
никель-кадмиевые на 800млАЧ. У меня тачка поддерживает рулевое
управление - влево/вправо и вперед/назад. То есть никаких неудобств
и ограничений. На ковре не буксует. Преодолевает без проблем пороги
и плинтусы до 2.5 см. Скорость - чуть быстрее шага. Прочность
отличнейшая.
Чтобы заставить компьютер управлять машиной нужно как-нибудь подключить пульт управления
радиомодели к нему . Проще всего через LPT но это не
по продвинутому. Возьмем COM. Понимаю, вам хотелось
USB, но это
обойдется в копеечку. Итак, COM - порт последовательный, поэтому с передачей сигналов на четыре
ветви по двум проводам придется похитрить. Распиновка COM-порта
приведена на Рис.1.

Рис.1. Управление при помощи компьютера. Схема распайки
COM-порта.
Дело в том что мы же можем нажимать на рычаги
пульта в различных комбинациях. С компьютера же подается только
питание +12вольт, один управляющий сигнал , провод
"земля" и провод обратной связи. Я решил эту проблему так. Поставил
двоичный счетчик К561ИЕ10. Взгляните на схему на рис.2

Рис.2. Управление при помощи компьютера. Схема .
Работа происходит следующим образом: компьютер
посылает по одному проводу счетчику сигнал на прибавление единицы.
На выходе счетчика (выводы 3.4.5.6) получаем комбинацию
высокого/низкого уровня напряжения, которые идут на транзисторы,
которые припаяны своими эмиттером и коллектором к пластинкам, либо
контактам замыкаемым рычажками пульта. Стоит появиться на базе
транзистора высокому уровню напряжения, он немедленно откроется
"соединив" в пульте "что надо". Я не знаю насколько моя схема
оригинальна. Не думаю, что пульты сильно отличаются. Скорее
все они вообще делаются на одном заводе :). В данном случае рычажок
замыкает минус батарейки пульта на определенную ножку микросхемы
пульта. То есть надо использовать n-p-n транзисторы.
Если же надо замыкать плюс , то надо использовать
p-n-p транзистор
например(кт361). Диод перед микросхемой любой выпрямительный
малогабаритный. Не забудьте про DCD провод, который припаивается к
выводу №6 микросхемы. Это обратная связь. Без нее компьютер не
сможет обеспечить правильную работу счетчика, а следовательно и
машинки. Ниже приведены исходные процедуры по управлению за тачкой.
Здесь используется компонент которого у вас
наверняка нет. Называется он ComDrv32. Это для последовательного
порта. Можете просто вникнуть в суть работы драйвера. А для
управления моделью можете скачать программу (это конечно альфа версия но со своей
основной обязанностью справляется на ура во всех ОС). Стоит только
правильно подключить транзисторы в пульте с микросхемой (не спутайте
ножки) . Программа rrc
написана мною только под эту схему:
procedure ResetCar;
//полностью останавливает машину
var CycleCount:Integer;
begin
if(rrcwindow.Com.Connected=false)then
exit;
if(lsCD in
rrcwindow.Com.GetLineStatus=True)then
begin
CycleCount:=0;
while(lsCD in rrcwindow.Com.GetLineStatus=True)do
begin
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
CycleCount:=CycleCount+1;
if(CycleCount>MaxCycleCount)then begin exit;end;
end
end
else
begin
CycleCount:=0;
while(lsCD in rrcwindow.Com.GetLineStatus=False)do
begin
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
CycleCount:=CycleCount+1;
if(CycleCount>MaxCycleCount)then begin exit;end;
end;
CycleCount:=0;
while(lsCD in rrcwindow.Com.GetLineStatus=True)do
begin
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
CycleCount:=CycleCount+1;
if(CycleCount>MaxCycleCount)then begin exit;end;
end;
end;
end;
procedure SendCommandToCar(chUp:boolean;chDown:boolean;chLeft:boolean;chRight:boolean);
// задаем нужную команду тачке
var Checksuma:Integer;
x:Integer;
begin
Checksuma:=0;
ResetCAR;
if(rrcwindow.Com.Connected=false)then
exit;
{добавь сист защиты от непр действий}
if (chUp = True) then
Checksuma:=Checksuma+2;
if (chDown = True) then Checksuma:=Checksuma+1;
if (chLeft = True) then Checksuma:=Checksuma+8;
if (chRight = True) then Checksuma:=Checksuma+4;
for x:=1 to Checksuma do
//накрутим до нужного значения
begin
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(False); //
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
rrcwindow.Com.ToggleRTS(True); //Такт на счетчик
end;
end;
Скачать программу.
Будут вопросы - пишите на
sash_g87
{собака} mail.ru