Мой робот "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
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, копипастю туда твой код, а вместо нашего русского языка появляются вопросики, т.е. буквы вопросики заменяются... почему?
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
| Малое колесо с зубьями с ними, прикалист Гусеницы порвёшь все так. Эти колёса садятся там на шестигранную ось, за счёт этого крутятся они одновременно, а значит ехать нормально будет только вперёд и назад, но не разворачиваться, поэтому и гусеница слетела. Поставь вместо него малое гладкое колесо.
|
|
|
|
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 кварц. то что подчеркнуто это максимальный патолог
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
| Мне важно знать это означает что МК подключился к компу? А то в 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
|
|
|
|