Пятница, 19.04.2024, 23:46
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 9
  • 1
  • 2
  • 3
  • 8
  • 9
  • »
Архив - только для чтения
Форум » Мастерская » Наши достижения » Проект "Kapanda" (Мой бот №2)
Проект "Kapanda"
pashteetДата: Суббота, 17.10.2009, 12:45 | Сообщение # 1








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

Представляю вам свою гусеничную платформу Kapanda


Цель - познание некоторых возможностей МК; освоение базовых элементов написания кода; научится работать с UART, протоколом RC5; наглядно изучить принцип работы дальномера, а также других датчиков; научится работать с LCD дисплеем.

За основу был взят модуль, разработанный FireFly, в виду его легкой повторяемости и достаточной универсальности
Так же в работе использованны (и планируются к использованию):
Дальномер - Шарп
Датчики цвета поверхности - ОпенРоботикс
LCD дисплей 16*2

Механика:
Гусеницы, редуктор - Тамия
Сервоприводы - HXT

Код написан на компиляторе Bascom-AVR, за онснову были взяты некоторые исходники, выложенные на этом форуме (вчасности выложенные Space)

Добавлено (17.10.2009, 12:41)
---------------------------------------------
Видео:

Сори за качество, снимал мобильником
Мда, видео было неочень хорошего качества, а теперь вообще не айс sad
Попозже попробую сделать другое

П.С. на видео аккамулятор в руках, т.к. батарейки сели, а заменить неуспел

Добавлено (17.10.2009, 12:45)
---------------------------------------------
Проект будет находится постоянно в работе и по мере изменения будут добавлятся новые фотки

Первое с чем столкнулся - проблемы с питанием. Т.к. питал всю схему от 6 батареек типа АА, то при увеличении ШИМа на двигатели серву начинало колбасить wacko Попедить эту проблему удалось только разделив питание: теперь логика питается от 4-х Батареек типа АА напрямую (минуя стабилизатор), а силовая часть - от 3-х батареек

Прикрепления: 7427750.jpg (230.0 Kb) · 6174238.jpg (268.3 Kb) · 9805001.jpg (232.4 Kb) · 2919413.jpg (291.9 Kb) · 4657353.jpg (251.1 Kb)


Сообщение отредактировал pashteet - Суббота, 17.10.2009, 12:56
 
pashteetДата: Суббота, 17.10.2009, 12:53 | Сообщение # 2








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Сейчас идет стадия установки датчиков цвета поверхности и отработка кода отъезда от ограничительной линии, результаты так же будут выложенны в виде видео
Прикрепления: 8190216.jpg (251.0 Kb) · 1190281.jpg (255.4 Kb) · 1870637.jpg (258.8 Kb)


Сообщение отредактировал pashteet - Суббота, 17.10.2009, 12:58
 
S-T-A-L-K-E-RДата: Суббота, 17.10.2009, 13:17 | Сообщение # 3








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

http://rassionrobots.ucoz.ru/ -"Робототехника"
 
pashteetДата: Суббота, 17.10.2009, 13:20 | Сообщение # 4








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Да http://robozone.su/2009....-s.html
 
SpaceДата: Суббота, 17.10.2009, 13:35 | Сообщение # 5








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
А выложи свой код посмотреть ext_book
А так молодца! ges_up good good
 
pashteetДата: Суббота, 17.10.2009, 15:06 | Сообщение # 6








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Спасибо yes3
Пока код выглядит от так:
Code
'********************  Проект Капанда ******************************************
'******************** Гусеничный робот *****************************************
'******************* С АТмега32 на борту ***************************************
'************* частота системного кварца 8 МГц *********************************
'************ возможность расширения функционала *******************************
'*********** Котроллер собран на платформе MRC-40 ******************************
'*** Благодарности: ************************************************************
'**** Setar, SkayStorm, FireFly, Spase, DeaD ***********************************
'*******************************************************************************

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

'****************************Настройка таймеров и сервоприводов*****************

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down       ' таймер для ШИМ двигателей
Config Servos = 1 , Servo1 = Portc.2 , Reload = 12          ' Указываем кол-во серв, присваеваем имя Servo1 порту PC2, указываем длину импульса.

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

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

'*************************** Порт В ********************************************

'Библиотека lcd4.lbx использует следующее подключение:
'Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
'Config Lcd = 16 * 2                    'используем дисплей на 2 строчки по 16 знакомест в каждой
' Свободные порты: PortB.3
Config Pinb.0 = Output : Led1 Alias Portb.0                 'ногу сконфигурировали как выход и обозвали Led1
Config Pinb.2 = Output : Led2 Alias Portb.2                 'ногу сконфигурировали как выход и обозвали Led2

'*************************** Порт C ********************************************

Config Pinc.2 = Output                    ' Подключили серву1 к порту С2, настройки сервы выше

'*************************** Порт D ********************************************

Config Pind.6 = Output : Dr1 Alias Portd.6                  'ногу сконфигурировали как выход и обозвали Dr1
Config Pind.7 = Output : Dr2 Alias Portd.7                  'ногу сконфигурировали как выход и обозвали Dr2
Config Pind.5 = Output                    'ногу ШИМа 1-ого  движка сконфигурировали как выход
Config Pind.4 = Output                    'ногу ШИМа 2-ого движка сконфигурировали как выход

'*****************************Настройка 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************************

For I = 45 To 90 Step 1                    ' Вращаем сервой справа на лево
    Gosub Sharp_right                    ' считаем что шарп смотрит вправо
    Servo(1) = I
    Waitms 12                    ' ждем 12 мс
Next

For I = 90 To 135 Step 1                    ' Вращаем сервой справа на лево
    Servo(1) = I
    Gosub Sharp_left                    ' считаем что шарп смотрит влево
    Waitms 12                    ' ждем 12 мс
Next

For I = 135 To 90 Step -1                    ' Вращаем сервой слева на право
    Gosub Sharp_left                    ' считаем что шарп смотрит вправо
    Servo(1) = I
    Waitms 12                    ' ждем 12 мс
Next

For I = 90 To 45 Step -1                    ' Вращаем сервой слева на право
    Gosub Sharp_right                    ' считаем что шарп смотрит влево
    Servo(1) = I
    Waitms 12                    ' ждем 12 мс
Next

Loop

'*******************************************************************************
'      Включение комбинации моторов для движения в заданном направлении
'*******************************************************************************

Стоп:                    ' стоим на месте
Dr1 = 0 : Dr2 = 0 : Pwm1a = 0 : Pwm1b = 0
Return

Вперёд:
                     ' едим вперёд на заданной скорости
Dr1 = 0 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

Назад:                    ' едим назад на заданной скорости

Dr1 = 1 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

Разворот_вправо:                    ' делаем Разворот_вправо на заданной скорости

Dr1 = 0 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
Return

Разворот_влево:                    ' делаем Разворот_влево на заданной скорости

Dr1 = 1 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
Return

'***********************************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

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

Но я думаю, что он вскоре обрастет немного biggrin

Добавлено (17.10.2009, 15:06)
---------------------------------------------
таакс, закончил тестирование датчиков цвета поверхности, как обещал - видео:

Алгоритм еще надо будет подточить, но и сейчас уже неплохо справляется.
Алгоритм работает примерно так:
При движении вперед сканирует два передних датчика, как только появился сигнал - идет программа отъезда. Движение назад организовано в цикле, там же идет проверка задних датчиков, это позволяет успешно обрабатывать углы, т.к. отъезд длится заданное время pardon

Сообщение отредактировал pashteet - Суббота, 17.10.2009, 15:10
 
pashteetДата: Суббота, 17.10.2009, 15:07 | Сообщение # 7








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

Видно, как снизу "торчат" датчики OpenRobotics
Прикрепления: 1861592.jpg (369.1 Kb)


Сообщение отредактировал pashteet - Суббота, 17.10.2009, 15:08
 
юрииДата: Суббота, 17.10.2009, 15:10 | Сообщение # 8








Язык программированя: Васик
Зарегистрирован 05.03.2009
Группа: Новички
Сообщений: 572
Город: Югорск
Статус: Offline
видно))
 
pashteetДата: Суббота, 17.10.2009, 15:15 | Сообщение # 9








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Вследующей программе скрещивание верчения башкой и опроса датчиков biggrin
 
SpaceДата: Суббота, 17.10.2009, 16:00 | Сообщение # 10








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Ну понятно ты всё в один код запихнул. Хотя, если делать как у меня, то отладка проще, а так в принцепе всё равно не плохо. с обработокой датчика можешь так попробовать:

Code

Проверка_дальномера_справа:
  Do
   Start Adc : АЦП = Getadc(0)
   If АЦП >= 650 Then
      Gosub Разворот_влево
   End If
   Loop Until АЦП < 650
   Gosub Вперёд
Return

Проверка_дальномера_слева:
   Do
   Start Adc : АЦП = Getadc(0)
   If АЦП >= 650 Then
      Gosub Разворот_вправо
   End If
   Loop Until АЦП < 650

   Gosub Вперёд

Return

Тогда в разворотах будет не обязательно ставить задержку. У тя он будет разворачиваться до тех пор пока препятствие не исчезнет из поля видимости датчика.

 
pashteetДата: Суббота, 17.10.2009, 17:02 | Сообщение # 11








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Вот! То что я искал! Тока немог нужный оператор вспомнить, спасибо!
 
dangerДата: Суббота, 17.10.2009, 18:07 | Сообщение # 12








Язык программированя: пока нет
Зарегистрирован 17.07.2009
Группа: Новички
Сообщений: 168
Город: Чебоксары
Статус: Offline
молодца +5

Добавлено (17.10.2009, 18:07)
---------------------------------------------
платформу замучелся наверное делать))


http://vkontakte.ru/club13643816 тыркни по ссылке
 
pashteetДата: Суббота, 17.10.2009, 19:25 | Сообщение # 13








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

Добавлено (17.10.2009, 19:25)
---------------------------------------------
Закончил "скрещение кодов", вот результат:
http://photofile.ru/users/pashteet/video/v1180026189a/view/
На ютуб чет несмог выложить, извиняйте pardon

Сообщение отредактировал pashteet - Суббота, 17.10.2009, 19:28
 
антоха_ликвидаторДата: Суббота, 17.10.2009, 19:33 | Сообщение # 14








Зарегистрирован 30.07.2009
Группа: Новички
Сообщений: 86
Город: Пыть-Ях
Статус: Offline
прикольный робот, круть.

я чемпион побе-побегу вокруг стола от мужа с топором.
 
pashteetДата: Суббота, 17.10.2009, 19:57 | Сообщение # 15








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

Теперь если робота включить в руках (т.е. в воздухе) то он не будет опрашивать датчики поверхности, дабы исключить их ложное срабатывание (это сделано для того, что бы робота можно было пускать по полу)

Если же перед включением его поставить на стол, то датчики будут опрашиваться (таким образом он не упадет с края стола)

В обоих случаях, если взять робота в руки - то он остановится (для того, чтобы его было удобно выключать)

 
Форум » Мастерская » Наши достижения » Проект "Kapanda" (Мой бот №2)
  • Страница 1 из 9
  • 1
  • 2
  • 3
  • 8
  • 9
  • »
Поиск: