[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » Мастерская » Успехи в мире робототехники » Мой робот "Roberto-1"
Мой робот "Roberto-1"
KrishДата: Вторник, 10.05.2011, 18:02 | Сообщение # 1
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Вот мой первый робот.
Мозг - Atmega16 - 16Mhz
ДД - L293D
Датчик - TSOP1736

Пока он не много функционален, т.к. программу я ещё не закончил. В дальнейшем подключу LCD, Sharp, датчики температуры и т.д.

Есть ещё проблемы в коде, но я их исправляю по чуть-чуть.


_________

Начал писать программу, пошли вопросы, на робофоруме мне говорят что, для того чтобы роботы ехал по RC5, то нужно указать в фьюзах 16 MHz, это правда?
Стал подключать ДД, вроде живой... подключаю его, не хочет работать! Подключаю его по datasheetу (l293d). Я не знаю что делать.... программа вот такая, вроде всё верно!

Code
$regfile = "m16def.dat" ' файл спецификации Меги16
$crystal = 16000000 ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pina.0 = Output : Dr1 Alias Porta.0 'ногу сконфигурировали как выход и обозвали Dr1
Config Pina.1 = Output : Dr2 Alias Porta.1 'ногу сконфигурировали как выход и обозвали Dr2
Config Pina.2 = Output : Dr3 Alias Porta.2 'ногу сконфигурировали как выход и обозвали Dr3
Config Pina.3 = Output : Dr4 Alias Porta.3 'ногу сконфигурировали как выход и обозвали Dr4
'----------------------------------------------------------------------------

Dim Speed As Byte
Speed = 200 ' указываем скорость робота

Config Rc5 = Pina.5
Enable Interrupts
Dim Address As Byte , Command As Byte
Print "Start" ' выводим в терминал отладочное сообщение

Do
Gosub Прием_rc5
If Command = 255 Then
Gosub Стоп
Waitms 0
Elseif Command = 32 Then
Gosub Прямо
Waitms 0
Elseif Command = 33 Then
Gosub Назад
Waitms 0
Elseif Command = 17 Then
Gosub Влево
Waitms 0
Elseif Command = 16 Then
Gosub Вправо
Waitms 0
End If
Loop

Прием_rc5:
Getrc5(address , Command)
If Address <> 255 And Command <> 255 Then
Command = Command And &B01111111
'Print Chr(12); ' выводим в терминал символ
'Print "Address - " ; Address; ' выводим в терминал адрес
'Print "Command - " ; Command; ' выводим в терминал номер команды
End If
Return

Влево:
Dr1 = 0 : Dr2 = 1 : Dr3 = 1 : Dr4 = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Вправо:
Dr1 = 1 : Dr2 = 0 : Dr3 = 0 : Dr4 = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Прямо:
Dr1 = 1 : Dr2 = 0 : Dr3 = 1 : Dr4 = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return

Назад:
Dr1 = 0 : Dr2 = 1 : Dr3 = 0 : Dr4 = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return

Стоп:
Dr1 = 0 : Dr2 = 0 : Dr3 = 0 : Dr4 = 0 : Pwm1b = 0 : Pwm1a = 0:
Return
Прикрепления: 7936870.jpg (227.2 Kb) · 4927429.jpg (168.5 Kb) · 6249330.jpg (165.8 Kb) · 8599702.jpg (237.6 Kb)


LacOS

Сообщение отредактировал Krish - Вторник, 10.05.2011, 18:21
KrishДата: Вторник, 10.05.2011, 19:20 | Сообщение # 2
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Убрал фьюз JTAG, стал искать кварц 16 Mhz (чтобы выбрать), но тут столько строчек с разным выбором данного фьюза:

Что выбрать чтобы работал внешний кварц 16 Mhz?

Добавлено (10.05.2011, 19:20)
---------------------------------------------
Начал тестировать RC5, по теме: http://enore.ucoz.ru/publ....-1-0-53
Мне нужно было под себя подстроить LED, захожу в bascomavr, копипастю туда твой код, а вместо нашего русского языка появляются вопросики, т.е. буквы вопросики заменяются... почему?

Прикрепления: 6545793.jpg (106.2 Kb)


LacOS
SpaceДата: Вторник, 10.05.2011, 19:58 | Сообщение # 3
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Смотрим как прошить фьюзы на мегу16 под рабочую частоту 16МГц

Сравни свой код и код от сюда:

Code
' Указываем какой версии у нас МиниБот
Const Device = 1                    'MiniBot Version 1 or 2
$regfile = "m32def.dat"       ' файл спецификации Меги32
     
#if Device = 1
' Set configuration for MB1
     $prog &HFF , &HE4 , &HD9 , &H00       'указываем какие фусибиты надо прошить
     $crystal = 8000000       ' указываем на какой частоте будем работать
     $baud = 9600       ' указываем частоту дла usart (теперь нужно только для отладки программы)
#else
' Set configuration for MB2
'  $prog &HFF , &HBD , &HC9 , &H00      'указываем какие фусибиты надо прошить
     $crystal = 7372800       ' указываем на какой частоте будем работать
     $baud = 115200       ' указываем частоту дла usart (теперь нужно только для отладки программы)
#endif
     
'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.2 = Output : Drl Alias Portc.2       'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.3 = Output : Drr Alias Portc.3       'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output       'ногу ШИМа левого движка сконфигурировали как выход
Config Pind.5 = Output       'ногу ШИМа правого движка  сконфигурировали как выход
'----------------------------------------------------------------------------
     
Dim Speed As Byte
Speed = 70       ' указываем скорость робота
     
Config Rc5 = Pind.2
Enable Interrupts
Dim Address As Byte , Command As Byte
     
Print "Start MiniBot"       ' выводим в терминал отладочное сообщение
     
Do
     Gosub Прием_rc5
     If Command = 255 Then
        Gosub Стоп
     Elseif Command = 32 Then
        Gosub Прямо
        Waitms 100
     Elseif Command = 33 Then
        Gosub Назад
        Waitms 100
     Elseif Command = 17 Then
        Gosub Влево
        Waitms 100
     Elseif Command = 16 Then
        Gosub Вправо
        Waitms 100
     End If
Loop
     
Прием_rc5:
     Getrc5(address , Command)
     If Address <> 255 And Command <> 255 Then
        Command = Command And &B01111111
        'Print Chr(12);       ' выводим в терминал символ
        'Print "Address - " ; Address;       ' выводим в терминал адрес
        'Print "Command - " ; Command;       ' выводим в терминал номер команды
     End If
Return
     
Влево:
     Gosub Стоп : Waitms 10
     Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
     
Вправо:
     Gosub Стоп : Waitms 10
     Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
     
Прямо:
     Gosub Стоп : Waitms 10
     Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
     
Назад:
     Gosub Стоп : Waitms 10
     Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
     
Стоп:
     Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return

Ищи разницу в след. строчках:
Из твоего кода:

Code
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down   
Config Pina.0 = Output : Dr1 Alias Porta.0 'ногу сконфигурировали как выход и обозвали Dr1   
Config Pina.1 = Output : Dr2 Alias Porta.1 'ногу сконфигурировали как выход и обозвали Dr2   
Config Pina.2 = Output : Dr3 Alias Porta.2 'ногу сконфигурировали как выход и обозвали Dr3   
Config Pina.3 = Output : Dr4 Alias Porta.3 'ногу сконфигурировали как выход и обозвали Dr4

Из кода с робофорума:

Code
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.2 = Output : Drl Alias Portc.2       'ногу сконфигурировали как выход и обозвали Drl
Config Pinc.3 = Output : Drr Alias Portc.3       'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output       'ногу ШИМа левого движка сконфигурировали как выход
Config Pind.5 = Output       'ногу ШИМа правого движка  сконфигурировали как выход

Quote (Krish)
Мне нужно было под себя подстроить LED, захожу в bascomavr, копипастю туда твой код, а вместо нашего русского языка появляются вопросики, т.е. буквы вопросики заменяются... почему?

Без понятия. У меня такое было только когда из стандартного текстового редактора копировал в компилятор.

P.S. выложу 100% рабочей проект робота с управлением по RC5?, но месяцок, а то и два придтёся подождать.


KrishДата: Вторник, 10.05.2011, 20:08 | Сообщение # 4
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Space, дд подключил!!! очень помог вот этот саит:
http://myrobot.ru/stepbystep/r_firstbot1.php
_____________________
Видео скину как подключу всё остальное...
у меня выводы подключаются так: portc6/5/4/3
_________________
Я думаю что пульт не 36KHz такое может быть?

_____________________
Code
'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.6 = Output : Dr1 Alias Portc.6 'ногу сконфигурировали как выход и обозвали Dr1
Config Pinc.5 = Output : Dr2 Alias Portc.5 'ногу сконфигурировали как выход и обозвали Dr2
Config Pinc.4 = Output : Dr3 Alias Portc.4 'ногу сконфигурировали как выход и обозвали Dr3
Config Pinc.3 = Output : Dr4 Alias Portc.3 'ногу сконфигурировали как выход и обозвали Dr4
'----------------------------------------------------------------------------


Смотри проконтролируй:
input3 - pc6
input4 - pc5
input2 - pc4
input1 - pc3
Посмотри в программе всё верно?
Можно ли использовать ШИМ, если у тебя ДД подключён только по Datasheetу?
Я использую ШИМ для скорости


LacOS

Сообщение отредактировал Krish - Вторник, 10.05.2011, 20:14
SpaceДата: Вторник, 10.05.2011, 20:13 | Сообщение # 5
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Если у тебя пульт RC5 приблизительно такого же вида как на фото в статье моей, то он полюбому на нужную частоту. Либо просто не работает. Такое вполне может быть

Добавлено (10.05.2011, 20:13)
---------------------------------------------

Quote (Krish)
Блин я просто путаюсь с выводами с ДД: input1/2/3/4 ((

ты же его подключил уже и тебе myrobot помог. чёж ты путаешься


KrishДата: Вторник, 10.05.2011, 20:59 | Сообщение # 6
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Ну я писал в Си, просто там поменял под свой мк и ДД, в бейсике я не знаю как правильно, проверь плиз.

Добавлено (10.05.2011, 20:26)
---------------------------------------------
Блин походу RC5 не работает... (TSOP вообще не на что не реагирует)
Подключу я Шарп...

Смотри программа:
Проверь так ли, чтобы шарп реагировал на препятствия и их объежал

Code
$regfile = "m16def.dat" ' файл спецификации Меги16
$crystal = 16000000 ' указываем на какой частоте будем работать

'*************************** Порт A ********************************************

' Поключили дальномер, порт A7, настройки АДС ниже

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.6 = Output : Dr1 Alias Portc.6 'ногу сконфигурировали как выход и обозвали Dr1
Config Pinc.5 = Output : Dr2 Alias Portc.5 'ногу сконфигурировали как выход и обозвали Dr2
Config Pinc.4 = Output : Dr3 Alias Portc.4 'ногу сконфигурировали как выход и обозвали Dr3
Config Pinc.3 = Output : Dr4 Alias Portc.3 'ногу сконфигурировали как выход и обозвали Dr4
'----------------------------------------------------------------------------

Dim Speed As Byte
Speed = 255 ' указываем скорость робота

'*****************************Настройка ADC*************************************

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

'*******************************************************************************

Enable Interrupts ' разрешаем прерывания

'************************Переменные и константы*********************************

Dim Speed As Integer , Sharp As Integer
Dim I As Integer
Dim Vout As Word

'*****************************Основной цикл*************************************
Speed = 255
1:
Do

Gosub Вперёд ' Если сигнала от ик-датчика(Sharp) не поступает, значит двигаемся всё время прямо
'***********************************Sharp***************************************

Sharp_right:

Start Adc : Vout = Getadc(7) 'Sharp connected for example to PA=0(ADC0)
Stop Adc
If Vout > 240 Then : Sharp = 1 : Else : Sharp = 0 : End If
If Sharp = 1 Then : Led1 = 1
Gosub Разворот_влево : Waitms 500 : Led1 = 0 : Gosub Вперёд : End If

Return

Sharp_left:

Start Adc : Vout = Getadc(7) 'Sharp connected for example to PA=0(ADC0)
Stop Adc
If Vout > 240 Then : Sharp = 1 : Else : Sharp = 0 : End If
If Sharp = 1 Then : Led2 = 1
Gosub Разворот_вправо : Waitms 500 : Led2 = 0 : Gosub Вперёд : End If

Return

End

'*******************************************************************************

Добавлено (10.05.2011, 20:59)
---------------------------------------------
Вот видео ДД: с левой оси мотора постоянно отходила гусиница... я её потом подправлю.. ДД работает шикарно.

P.S Читай FAQ, о том как вставлять видео, коды. Каждый раз поправлять не буду. SPACE


LacOS
SpaceДата: Вторник, 10.05.2011, 21:09 | Сообщение # 7
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Малое колесо с зубьями с ними, прикалист lol
Гусеницы порвёшь все так. Эти колёса садятся там на шестигранную ось, за счёт этого крутятся они одновременно, а значит ехать нормально будет только вперёд и назад, но не разворачиваться, поэтому и гусеница слетела. Поставь вместо него малое гладкое колесо.


KrishДата: Среда, 11.05.2011, 15:15 | Сообщение # 8
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Из за чего бывают помехи на роботе? из за того что нет стабилизатора?

LacOS

Сообщение отредактировал Krish - Среда, 11.05.2011, 15:29
KrishДата: Среда, 11.05.2011, 16:27 | Сообщение # 9
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Что означает данная загрузка?

Смотри я подчеркнул красным. почему я не могу выбрать 16MHz кварц. то что подчеркнуто это максимальный патолог
Прикрепления: 6270726.jpg (50.8 Kb)


LacOS
SpaceДата: Среда, 11.05.2011, 16:29 | Сообщение # 10
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Quote (Krish)
Из за чего бывают помехи на роботе?

из-за моторов


KrishДата: Среда, 11.05.2011, 16:52 | Сообщение # 11
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Quote (Krish)
Что означает данная загрузка?

ответь плиз.
____
я на моторы поставил кондер по 0.1мкф


LacOS
SpaceДата: Среда, 11.05.2011, 17:12 | Сообщение # 12
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
пользуйся переводчиком http://translate.google.com/transla....tab=wT#

Проверка стирания FLASH памяти


KrishДата: Среда, 11.05.2011, 17:48 | Сообщение # 13
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Quote (Space)
пользуйся переводчиком http://translate.google.com/transla....tab=wT#

Проверка стирания FLASH памяти


Мне важно знать это означает что МК подключился к компу?
А то в CodeVisionAVR у меня проблемы в том плане что не всегда COM порт срабатывает, у меня USB программатор, подключается как COM3, и не всегда реагирует ....
Т.е. это означает что я прошил МК на фьюзы?

Добавлено (11.05.2011, 17:48)
---------------------------------------------
Space, блин, что ж такое, программы беру рабочие, готовые, подключаю сервопривод он ели работает! Питание проверил четко 4.8В, МК живое, фьюзы прошиваю...
Скажи в чем могут быть проблемы
Или дай мне программу легкую для робота я её включу...( смотрел вот эту, с шарпом, http://robotsspace.ucoz.ru/publ....-1-0-68
Но она не работает(( Что делать:( В этой программе во второй части где для робота я не нашел куда втыкать ШАРП, в какой порт?!


LacOS
nightmareДата: Среда, 11.05.2011, 18:22 | Сообщение # 14
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
Quote
почему я не могу выбрать 16MHz кварц. то что подчеркнуто это максимальный патолог

Потому что это частота программирования, которая определяет с какой скоростью ты будешь грузить данные во Flash.
Прошей фьюзы на 16 МГц кварц при помощи AVR Studio, для твоего кварца это: High Frequency.
Quote
Скажи в чем могут быть проблемы
Или дай мне программу легкую для робота я её включу

Напиши программу сам, информация о том как сервами рулить есть в инете.
Хотя бы научишься чему-нибудь.


russian-robots@conference.jabber.ru - jabber чат для робототехников
KrishДата: Среда, 11.05.2011, 20:36 | Сообщение # 15
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Quote (nightmare)
Напиши программу сам, информация о том как сервами рулить есть в инете.
Хотя бы научишься чему-нибудь.

я уже много программ использовал!!!!
проверил всё, не пашет(((
Я сначало сам пробую а потом спрашиваю..

Добавлено (11.05.2011, 20:20)
---------------------------------------------

Quote (nightmare)
Прошей фьюзы на 16 МГц кварц при помощи AVR Studio, для твоего кварца это: High Frequency.

Спасибо, дружище! Ты очень помог, серва отлично пашет!!!! Огромное спасибо!

Добавлено (11.05.2011, 20:36)
---------------------------------------------
RC5 пашет))))))
Токо в пульте батарейки слабые(( плохо ловит((


LacOS
Форум » Мастерская » Успехи в мире робототехники » Мой робот "Roberto-1"
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: