Наверное, сколько бы ни было человеку лет, ему все равно будет интересно поиграть
игрушкой на радиоуправлении. К примеру возьмер машинку на радиоуправлении. Нету?
Купи! Понмаю, дорого в магазине. Но на рынке, где я купил этого монстра себе
зимой 2004 года, это обошлось в 270 рублей(без батареек). Батарейки использовать
не рекомендую - лучше аккумуляторы. Себе я поставил никель-кадмиевые на 800млАЧ.
У меня тачка поддерживает рулевое управление - влево/вправо и вперед/назад.
То есть никаких неудобств и ограничений. На ковре не буксует. Преодолевает без
проблем пороги и плинтусы до 2.5 см. Скорость - чуть быстрее шага. Прочность
отличнейшая. Странно, но сборка китайская. За 270 рублей, я считаю ее просто
находкой.
Так вот, просто ей управлять нет никакого драйва. Мой лозунг - "коннектим
все к компу". И радиомашинка, кстати не исключение. И не надо думать что
это будет сложно. Чтобы заставить комп управлять машиной нужно как-нибудь подключить
пульт управления радиомодели к нему через что-нить. Проще всего через LPT, но
это не по-продвинутому. Возьмем COM. Понимаю, вам хотелось USB, но это обойдется
в копеечку, тк микруха переходник стоит 150 рублей. А если вы ее еще и спалите
в процессе сборки, то суецида не избежать. Итак, COM - порт последовательный,
поэтому с передачей сигналов на четыре ветви по двум проводам придется похитрить.
Микруха к561ие10 стоит 8 рублей.
Распиновка COM-порта:

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

Работа происходит следующим образом: компьютер посылает по одному проводу
счетчику сигнал на прибавление единицы. На выходе счетчика (выводы 3.4.5.6)
получаем комбинацию высокого/низкого уровня напряжения, которые идут на транзисторы,
которые припаяны своим эмитером и колектором к пластинкам, либо контактам замыкаемым
рычежками пульта. Стоит появиться на базе транзистора высокому уровню напряжения,
он немедленно откроется "соединив" в пульте "что надо".
Я не знаю насколько моя схема(в смысле пульт) частна. Не думаю, что пульты сильно
отличаются. Скорее все они вообще делаются на одном заводе :). В данном случае
рычажок замыекает минус батарейки пульта на определенную ножку микросхемы пульта.
То есть надо использовать n-p-n транзисторы(обратная проводимость). Если же
надо замыкать плюс на микруху(что маловероятно), то надо испорльзовать(p-n-p)
транзистор например(кт361). Диод перед микросхемой любой выпрямительный малогабаритный.
Не забудьте про DCD провод, который припаивается к выводу №6 микрухи. Это обратная
связь. Без нее комп не сможет обеспечить правильную работу счетчика, а следовательно
и машинки. Ниже приведены исходные процедуры по управлению за тачкой. Но это
не голимый делфи - здесь используестся компонент которого у вас наверняка нет.
Называется он ComDrv32. Это для последовательного порта. Можете просто вникнуть
в суть таботы драйвера. А для управления моделью можете скачать прогу SashRRC[200
kb WinRAR3] (это конечно альфа версия но со своей основной обязанностью
справляется на ура во всех ОС). Стоит только правильно подключить танзисторы
в пульте с микросхемой(не спутайте ножки) а то когда нажмете вперед машина поедет
назад. Программаа 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