roboforum.ru

Технический форум по робототехнике.

palindroid

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Re: palindroid

Сообщение Nikitoz » 23 фев 2010, 00:13

В общем то и без резистора тсоп замечательно работает , ошибок нет совсем при передаче
Сейчас во пишу подобие операционки для него , ато больно размашистая программа получается уже.
Мало блен времени им заниматься :(
научился работать с джойстиком PSX, скоро будет печатка и пульт для всего этого
Nikitoz
 
Сообщения: 16
Зарегистрирован: 10 фев 2010, 20:27
Откуда: Екатеринбург
Skype: nikitoz236
прог. языки: Ассемблер, си
ФИО: Куликов Никита Александрович

Re: palindroid

Сообщение Nikitoz » 10 мар 2010, 19:05

Есть прогресс!!!
Сварганил контроллер джойстика.
Теперь умеем ездить по нажатию кнопочек на крестовине в полную скорость, а также плавненько рулить бортами отклоняя аналоговые стики вперед/назад. Ну еще убрал оставшиеся миллиграммы соплей =)
Вложения
P1030534.JPG
красиво закрепил выключатель питания
P1030528.JPG
Контроллер джойстика
P1030532.JPG
Контроллер джойстика
Nikitoz
 
Сообщения: 16
Зарегистрирован: 10 фев 2010, 20:27
Откуда: Екатеринбург
Skype: nikitoz236
прог. языки: Ассемблер, си
ФИО: Куликов Никита Александрович

Re: palindroid

Сообщение MegaBIZON » 10 мар 2010, 22:29

Радуются глазья мои :)
Всё аккуратно, родные колёса, переключатель достойно расположен :good:
В остальном не шарю, ато бы ещё налюбезничал :oops:
.............солнце светит, птички поют, я - зелёный бамбук меня тянет к солнцуЯ - зелёный бамбук, я - зелёный бамбук , меня тянет к солнцу. Я - не огурчик и не лягушка, я - зелёный бамбук. Меня курят...............
Аватара пользователя
MegaBIZON
 
Сообщения: 6285
Зарегистрирован: 12 янв 2007, 00:34
Откуда: Масква

Re: palindroid

Сообщение Nikitoz » 30 мар 2010, 14:03


вот видео как катается с пульта
Nikitoz
 
Сообщения: 16
Зарегистрирован: 10 фев 2010, 20:27
Откуда: Екатеринбург
Skype: nikitoz236
прог. языки: Ассемблер, си
ФИО: Куликов Никита Александрович

Re: palindroid

Сообщение vadinator » 30 мар 2010, 14:39

МОЛОДЦА!!! :good:
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: palindroid

Сообщение TrashVigor » 30 мар 2010, 17:36

Я се тоже такой джойстик сварганил saitec бывший, самое что дешовое в магазине лежало, аналоговые джойстики мне понравились, ускорение на них делать. На тсопах это хорошая идея. :good:
GIRUGAMESH!
Аватара пользователя
TrashVigor
 
Сообщения: 134
Зарегистрирован: 11 июл 2008, 22:43
Откуда: Воронежск
прог. языки: С, Delphi, Asm

Re: palindroid

Сообщение CALLIKA » 30 мар 2010, 18:11

А тсопы чтоли с каждой стороны по одному ?
CALLIKA
 
Сообщения: 41
Зарегистрирован: 25 янв 2009, 00:08
Откуда: Великий Новгород
прог. языки: PHP

Re: palindroid

Сообщение кулер 23 » 30 мар 2010, 18:45

CALLIKA писал(а):А тсопы чтоли с каждой стороны по одному ?

вообще он там один на рооте.....больше нигде не вижу...
Аватара пользователя
кулер 23
 
Сообщения: 798
Зарегистрирован: 17 апр 2009, 19:44
Откуда: Югорск
Skype: rizhykot
ФИО: Аксютин Юрий

Re: palindroid

Сообщение CALLIKA » 03 апр 2010, 15:03

кулер 23 писал(а):
CALLIKA писал(а):А тсопы чтоли с каждой стороны по одному ?

вообще он там один на рооте.....больше нигде не вижу...

я просто думаю так как управление идет по ик-каналу, а робот поворачивается на 360 градусов то 1 тсопа прямо направленного мало будет...
CALLIKA
 
Сообщения: 41
Зарегистрирован: 25 янв 2009, 00:08
Откуда: Великий Новгород
прог. языки: PHP

Re: palindroid

Сообщение Nikitoz » 03 апр 2010, 21:14

тсоп товарищи на роботе всего один :) его хватает чтобы очень хорошо принимать сигнал на дальности метров 15 , а в комнате 3х5 в результате пере отражений очень стабильный прием, ошибок нет, никаких потерь. Вот так то :)
правда в пульте стоит 2 ик светодиода без всякого токоограничения, по 2 канала ULN2003 на каждый светодиод , и протокол я конечно долго мучил ...
Nikitoz
 
Сообщения: 16
Зарегистрирован: 10 фев 2010, 20:27
Откуда: Екатеринбург
Skype: nikitoz236
прог. языки: Ассемблер, си
ФИО: Куликов Никита Александрович

Re: palindroid

Сообщение Vovan » 03 апр 2010, 23:11

2 Nikitoz: а как насчет поделиться протокольчиком? :wink:
всё же не одни сишники тут тусят :oops:
Вообще-то у меня просто не доходили руки до него, не было надобности, но вскоре понадобится и чтоб долго не сидеть над ним, хорошо бы иметь под рукой :) , ну если нет, то нет, без никаких обид канешно :)
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: palindroid

Сообщение Nikitoz » 04 апр 2010, 13:33

на самом деле ничего сложного в протоколе нет :)
по таймеру настроенному ровно на 72 кГц, происходит переключение туда сюда ноги со светодиодом.
таким образом я формирую 64 импульса , а потом жду еще 64 импульса не дергая ногой, так передаю 1 бит
первый бит имеет длину 32 импульса , он стартовый ,чтобы через период бита опрос тсопа был именно в серединке следующего значащего бита.

Код: Выделить всёРазвернуть
;***********************************************************************
;*
;*
;*
;*      Library infrared data resiving and transmitting
;*
;*      file:         ir_data.asm
;*      developer:      Nikitoz
;*
;*      using          TIMER0
;*      
;*      interrupt vector:
;*         rjmp ir_timer         (tim0 ovf)
;*
;*
;***********************************************************************
;*
;*      Prototypes
;*
;*      ir_send            - послать байт из temp по ИК
;*      ir_resive         - при обнаружении сигнала на ноге TSOP принять байт
;*      ir_resive_wait      - одидать приема байтаи
;*
;*
;***********************************************************************

;.equ irport = portB
;.equ irled = 0

;.equ TSOPpin = pinD
;.equ TSOP = 3





.def takts = r18               ;количество полупериодов в пачке
.def bits = r19                  ;счетчик битов в пачке
.def ir_dr = r20               ;резервный регистр данных

/*
ir_send:
   push ir_dr
   push takts                  ;эти байты можно незаморачиваясь использовать
   push bits
   push temp1

   mov ir_dr, temp               ;резервируем данные, там стартбит пока будет

   in temp1, timsk               ;сохранение в стеке текущих астроек таймера
   push temp1
   in temp1, tccr0
   push temp1

   ldi temp1, 1               ;инициализация таймера
   out tccr0, temp1
   ldi temp1, (1 << toie0)
   out timsk, temp1

   ldi takts, 192;96               
   clr bits
   ldi temp, 1                  ;стартовый бит еденица

   sei

overprov:
   cpi bits, 9
   brne overprov

   pop temp1                  ;извлекаем из стека предыдущие настройки таймера
   out tccr0, temp1            ;и инициализируем как было
   pop temp1
   out timsk, temp1

   pop temp1                  ;извлекаем из стека предыдущие значения локальных переменных
   pop bits
   pop takts
   pop ir_dr

   ret

;-----------------------------------

ir_timer:
   ldi temp1, ir_long
   out tcnt0, temp1

   sbrs temp, 0               ;если в данных нулевой бит установлен то пляшем ,или сначала стартбит
   rjmp pc + 7

      cpi takts, 129;65            ;это чтобы первая половина колебалась, вторая молчала
      brmi ir_timer_1

         sbrs takts, 0         ;если нечетное то 0
         sbi irport, irled
         sbrc takts, 0         ;если четное то 1
         cbi irport, irled

ir_timer_1:
   dec takts                  ;если пачка кончилась то на следущий бит
   brne end_ir_timer

      inc bits               ;следущий бит
      clr takts;, 128            ;нормальные биты по 33 полупериода в пачке
      lsr temp               ;LSB вперед

   cpi bits, 1                  ;первый - старт бит
   brne pc + 2
      mov temp, ir_dr            ;начиная со второго по счету бита данные


   cpi bits, 9                  ;конец посылки
   brne pc + 5
            
      clr temp               ;включаем таймер
      out timsk, temp
      out tccr0, temp      
      cli                     ;запрещаем прерывания

end_ir_timer:
   reti
*/
;-----------------------------------

ir_resive_wait:                  ;если старт бит ещё ожидается
   sbic TSOPpin, TSOP
   rjmp ir_resive_wait

ir_resive:                     ;если старт бит уже пришел
   push temp1
   ldi temp1, 8

ir_resive_1:                  ;прием бита
   ldi YL, low ( 3552 )   ;( 1778 )
   ldi YH, high ( 3552 )   ;( 1778 )
   rcall delay_1mks

   lsr temp

   sbic TSOPpin, TSOP
   cbr temp, 0x80
   sbis TSOPpin, TSOP
   sbr temp, 0x80

   dec temp1
   brne ir_resive_1

   ldi YL, low ( 3552 )   ;( 1778 )         ;когда последний бит уже пинят в эфире ещё идёт посылка
   ldi YH, high ( 3552 )   ;( 1778 )         ;на неё может отреагировать следующий цикл приема   
   rcall delay_1mks            ;выжидаем пока передатчик не закончит вещать

   pop temp1
   ret

;-----------------------------------


вот временная диаграмма передачи символа "1" (0x31)
Вложения
ir_tx.jpg
ir_tx.jpg (18 КиБ) Просмотров: 1651
Nikitoz
 
Сообщения: 16
Зарегистрирован: 10 фев 2010, 20:27
Откуда: Екатеринбург
Skype: nikitoz236
прог. языки: Ассемблер, си
ФИО: Куликов Никита Александрович

Re: palindroid

Сообщение Vovan » 04 апр 2010, 21:31

Спасибо СЭР! :good: Всё круто и понятно :)
Эх... побольше б таких продвинутых чувакоф...
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Пред.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21