Пятница, 26.04.2024, 07:29
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 9
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 8
  • 9
  • »
Архив - только для чтения
Форум » Мастерская » Наши достижения » Проект "Kapanda" (Мой бот №2)
Проект "Kapanda"
pashteetДата: Среда, 21.10.2009, 21:14 | Сообщение # 31








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Дык, ошибку я уже нашел yes3

ээээ, ну, это, я уже непомню, у кого-то научился таким выражениям pardon Я имел в виду, можно ли как-то без использования встроенных таймеров сервой управлять?

 
SpaceДата: Среда, 21.10.2009, 22:13 | Сообщение # 32








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Скорей нет, чем да.

Добавлено (21.10.2009, 22:13)
---------------------------------------------
а что за ошибка та была kolobok_question

 
pashteetДата: Среда, 21.10.2009, 22:51 | Сообщение # 33








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Команда GetRc5 и Config Servos используют таймер0, а это невозможно одновременно, отсюда конфликт yes3
Поэтому возникла необходимость повесить серву на другой таймер, что у меня к сожалению пока не получается sorry
Благодаря galex1981 с робофорума, есть кое какие наброски кода:

Code
$regfile = "m32def.dat"                    'используем мк ATmega32
$crystal = 8000000                    'частота кварцевого резонатора 8MHz

'сервы поворота камеры
Config Pinb.1 = Output : Hserv Alias Portb.1
Config Pinb.3 = Output : Vserv Alias Portb.3

'Переполнение таймера 2 (управление сервами)
On Ovf2 Timisr
Config Timer2 = Timer , Prescale = 1024                     'выполняется каждые 8-9 мс
Stop Timer2

Enable Interrupts
Enable Timer2
Start Timer2

'Угол поворота горизонтальной сервы
Dim Hs_grad As Byte

'Угол поворота вертикальной сервы
Dim Vs_grad As Byte
Hs_grad = 90
Vs_grad = 90

'Программа поворота вертикальной=1 или горизонтальной=2 сервы
Declare Sub Povorot(byval Gradus As Byte , Byval Index As Byte)

Do
Loop

'Переполнение таймера
Timisr:
    Call Povorot(vs_grad , 1)
    Call Povorot(hs_grad , 2)
Return

Sub Povorot(byval Gradus As Byte , Byval Index As Byte)
Local A As Byte
Local Temp As Word
    Temp = Gradus / 10
    If Index = 1 Then Vserv = 1
    If Index = 2 Then Hserv = 1
    Waitus 500
    For A = 1 To Temp
       Waitus 111
    Next
    If Index = 1 Then Vserv = 0
    If Index = 2 Then Hserv = 0
End Sub

Но, повторюсь, пока безрезультатно, серва стоит на месте, можт ты че-нибудь подскажеш?

 
SpaceДата: Среда, 21.10.2009, 23:02 | Сообщение # 34








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Здесь уже извеняй. Ни чем к сожалению помочь не могу. Хотя.... но вариант может не понравится. Сделай это всё на двух мк. Допустим на тиньке н-р 2313 делаешь управление по RC5, кидаешь с тиньки на основной мк сигнальный провод и по этому проводу отсылаешь данные(только не знаю можно ли по одному проводу передавать данные, если нет, то можно передавать данные по I2C)
 
pashteetДата: Среда, 21.10.2009, 23:15 | Сообщение # 35








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Эта хорошая идея! Темболее что Таня 2313 лежит в 2-х метрах от меня biggrin Только тогда придется осваивать I2C, а я еще тут далеко не совсем разобрался blush2

Добавлено (21.10.2009, 23:15)
---------------------------------------------
Хотя, мне кажется, для многих былобы интересно ознакомится с шиной i2c можт кто заодно подтянется.
Только опять же, скорее всего было бы умеснее использовать МК с меньшим кол-вом ног, или же взять в smd исполнении, если, конечно, такие имеются smile3

 
S-T-A-L-K-E-RДата: Суббота, 24.10.2009, 17:55 | Сообщение # 36








Язык программированя: Мурманская область
Зарегистрирован 11.06.2009
Группа: Модераторы
Сообщений: 367
Город: Никель
Статус: Offline
pashteet,
- Как вам редукторы таминья? Мощьные?


http://rassionrobots.ucoz.ru/ -"Робототехника"
 
pashteetДата: Воскресенье, 25.10.2009, 12:37 | Сообщение # 37








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Да, очень!
Если собрать 200:1 то оси руками не остановиш

Кстати, сейчас делаю новые мозги, в силу выше изложенного решил сделать на двух МК, которые будут взаимодействовать между собой (пока на примитивном уровне, позже буду осваивать I2C)
За вращение сервой и обработку данных от датчиков поверхности будет отвечать ATtiny2313, а прием RC5 команд будет осуществлять Мега8 или Мега48, так же она будет управлять маршевми двигателями и обрабатывать дальномер crazy
Первая версия вышла малец неудачной, сейчас делаю вторую, с учетом всех недостатков первой :)

 
pashteetДата: Вторник, 27.10.2009, 15:30 | Сообщение # 38








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Закончил с новыми мозгами, вот что получилась:

Контроллер расчитан на взаимодействие двух МК (мега48 и тинька2313) между собой по 4-м портам. Мега будет ведущей, отвечать за ШИМ двигателей, Rc5, работу АЦП дальномера, при этом по прерыванию на INT1 (PD3) будет обращать внимание на Тиньку, которая в свою очередь будет вертеть сервой и обрабатывать датчики поверхности (тоже по прерываниям). Тинька будет все время следить за результатами АЦП и если есть препядствие, то останавливать серву, как препядствие исчезло - востанавливать вращение с того же положения

Вся рассыпуха выполнена на СМД компонентах и распаяна с обратной стороны платы (для минимизации размеров), так же на плате предусмотрено отключение какого-либо МК от питания (например если нужен будет только один)

Теперь о неприятном:

При загадочных обстоятельствах погибла Тинька, поэтому ее на фотке нема sad Жду степендию, пойду за новой cray

Мега48 упорно отказывается работать с пультом help Нивкакую не принимая его сигналы. Подумываю о замене 48-ой на 8-ую (опять же затраты sorry )

Прилогаю код, которым пытался работать с Rc5:

Code

regfile = "m48def.dat"
$crystal = 16000000                    

$lib "mcsbyte.lbx"                    

Config Rc5 = Pind.2

Enable Timer0

Config Pind.3 = Output : Led1 Alias Portd.3
Config Pind.4 = Output : Led2 Alias Portd.4
Config Pind.5 = Output : Led3 Alias Portd.5
Config Pind.6 = Output : Led4 Alias Portd.6
Config Pind.7 = Output : Led5 Alias Portd.7

Dim Address As Byte , Command As Byte
Enable Interrupts                    

Do

Getrc5(address , Command)
     If Address <> 255 And Command <> 255 Then
      Command = Command And &B01111111
     End If
     If Command = 1 Then
     Set Led1
     Elseif Command = 2 Then
      Set Led2
     Elseif Command = 3 Then
      Set Led3
     Elseif Command = 4 Then
      Set Led4
     Elseif Command = 5 Then
      Set Led5
     Elseif Command = 6 Then
      Reset Led1
     Elseif Command = 7 Then
      Reset Led2
     Elseif Command = 8 Then
     Reset Led3
     Elseif Command = 9 Then
     Reset Led4
     Elseif Command = 10 Then
      Reset Led5
     End If

Loop

Может кто-нибудь посмотрит да подскажет (очень надеюсь)
Прикрепления: 4126731.jpg (378.9 Kb)
 
S-T-A-L-K-E-RДата: Вторник, 27.10.2009, 17:37 | Сообщение # 39








Язык программированя: Мурманская область
Зарегистрирован 11.06.2009
Группа: Модераторы
Сообщений: 367
Город: Никель
Статус: Offline
Вотэто стремление. Скоро японцев обойдешь senile

http://rassionrobots.ucoz.ru/ -"Робототехника"
 
pashteetДата: Вторник, 27.10.2009, 20:08 | Сообщение # 40








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
бгг, мнеб для начала лицензионную версию баскома, а то чет шняга какая-то получается, крякнутый баском непозволяет работать с Таймером 2 cray
Да еще ко всему оказывается что на 48 меге таймер0 криво работает, как быть хрен его знает pardon

off Прям все против того, чтоб я МК занимался biggrin придется наверно обратно в автотюнинг уходить blush2

Добавлено (27.10.2009, 20:08)
---------------------------------------------
Ребят отзовитесь, плиз, те, кто работал с Rc5 на меге8 или 88 (на Баскоме), нет там никаких проблем? Нормально работает? А то если и этот вариант непрокатит, то всякая охота отпадет микроконтроллерами заниматься angry

 
SpaceДата: Вторник, 27.10.2009, 22:44 | Сообщение # 41








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
весьма симпотишно выглядит платка. Зачёт. Ждём её в работе clapping

Добавлено (27.10.2009, 22:44)
---------------------------------------------
я те могу сказать точно работает RC5 на ATTINY2313. и работает очень даже хорошо, без глюков. а с остальным не знаю не пробовал.
и посмотри статью по баскому. я там ссылку выкладывал где можно скачать баском нормальный.

 
pashteetДата: Вторник, 27.10.2009, 23:08 | Сообщение # 42








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Проверь пожайлуста у себя работу таймера 2, на любом контроллере:
Code
Config Rc5 = Pind.2 [ , Timer = 2]

именно в работе, а то у меня компилируется без ошибок, а работать нехочет crazy
 
SpaceДата: Вторник, 27.10.2009, 23:13 | Сообщение # 43








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
я б с радостью, но нету ик-приёмника
 
pashteetДата: Среда, 28.10.2009, 14:27 | Сообщение # 44








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
хорошо, тогда проверь на сервах:
Code
Config Servos = 1 , Servo1 = Portc.2 , Reload = 12 , Timer = Timer2

Я посмотрел ту версию (1.11.9.0) у меня стоит 1.11.9.5 крякнутая, результат тотже, в упор нехочет работать со 2-м таймером, если есть еще какие-нибудь способы проверить, то буду очень рад, а то какой-то половинчатый МК получается shout

Добавлено (27.10.2009, 23:25)
---------------------------------------------
Почитал форум, вроде разобрался от чего Таня умерла. Говорят, что если, при втыкании разьема, сначала коснутся контакты программирования, а потом земля, то МК может не пережить. Поэтому сначала надо втыкать МК в программатор, а потом программатор в комп, а я злился (от того, что нихрена не получается) и начал просто так дергать МК туда сюда, невытаскивая прогер из компа, видать придется использовать Тиньку в декоративных целях cray

Добавлено (28.10.2009, 14:27)
---------------------------------------------
Разобрался с Мегой 48, оказывается допустил ошибку на печатке blush2 руки не из правельного места растут biggrin Теперь все работает!

Подскажите фузи биты для Тиньки 2313 для работы с кварцем 8МГц, чет мне кажется, что я первую именно фузами запорол scratch_one-s_head

 
pashteetДата: Четверг, 29.10.2009, 11:40 | Сообщение # 45








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
вот такой драйвер двигателей на днях замастырил:

Добавлено (29.10.2009, 11:40)
---------------------------------------------
Сейчас занимаюсь настройкой ADC

Space, посмотри пожайлуста видюху! У тебя такого небыло?
Смысл в том, что при подъезде к препядствию загараются светодиоды, крайний левый говорит о том, что препядствие близко. Но если смотреть дальномером в пустоту, то всегда горит крайний левый crazy

Прилогаю код, которым пытаюсь замучить ADC

Code
$regfile = "m48def.dat"
$crystal = 16000000                    

Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Pind.3 = Output : Led1 Alias Portd.3
Config Pind.4 = Output : Led2 Alias Portd.4
Config Pind.5 = Output : Led3 Alias Portd.5
Config Pind.6 = Output : Led4 Alias Portd.6
Config Pind.7 = Output : Led5 Alias Portd.7

Dim I As Integer
Dim Vout As Word

Enable Interrupts                    

Do

Start Adc

Vout = Getadc(5)
Waitms 20

Stop Adc

  If Vout < 700 Then : Set Led1
  Elseif Vout < 750 Then : Set Led2
  Elseif Vout < 800 Then : Set Led3
  Elseif Vout < 820 Then : Set Led4
  Elseif Vout > 820 Then : Set Led5
  End If

Waitms 10

Reset Led1
Reset Led2
Reset Led3
Reset Led4
Reset Led5

Loop

End
Прикрепления: 8885598.jpg (329.1 Kb)
 
Форум » Мастерская » Наши достижения » Проект "Kapanda" (Мой бот №2)
  • Страница 3 из 9
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 8
  • 9
  • »
Поиск: