Воскресенье, 23.06.2024, 19:51
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Архив - только для чтения
"Robbe"
SpaceДата: Воскресенье, 20.09.2009, 19:24 | Сообщение # 1








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

В самом низу сообщения, исходники в архиве Robbe Version 1.1.....

И так этот проект был задуман уже давно. Но начал я его с тех пор как стал воять отдельные модули+приобрёл шарп (робо-контроллер, блок стабилизированного напряжения, драйвер двигателей(микросхема, реле)и это не всё. Есть ещё готовые модули, а не котрые пока только в моих фантазиях ))) ). Если порыскать на форуме, то можно найти не сколько тем, которые имеют прямое отношение к моему проекту. Например: Драйвер двигателей на реле, Будующий корпус, ИК-дальномер Sharp GP2Y0A02 (20-120см)
Основные модули готовы, да и время на выходных появилось свободное. Вот и занялся на конец то. О целях проекта...

  • 1. Сделать корпус из ПВХ
  • 2. Научить объезжать препятствия благодаря Шарпу
  • 3. Контроль разряда акб
  • 4. Забобахать ОС для Robbe.
  • 5. Научить работать с флешкой(использовать в качестве хранения памяти).
  • 6. Возможно сделать 4 колёсную платформу в дальнейшем, но врятле.
  • 7. Добавить звуковых датчиков(микрофоны, динамики)
  • 8. Добавить контактные бамперы. Ведь если откажут основные датчики, то бамперы это единственное с помощью чего робот не будет потерянным.
  • 9. Написать программу для управления Robbe с компьютера по Bluetooth.
  • 10. Написать удобную терминальную программу(с помощью delphi) для управления робби как по Bluetooth так и по Uart. Причём сделать всякие дополнительные табл. с выводом разных данных. Например Акб, температура среды, экран для обработки видео с робби и т.д.

Что из этого уже начал. А начал я со второго пункта. Так как ПВХ пока не купил. Ну собственно результаты есть. Хотя не совсем устраивают. Над программой надо работать ещё. Бывают глюки с задержками. Например повороты дольше чем надо длятся.

Для любопытных wink :
Основа:

Code
'*******************************************************************************
' Автор: Кирилл Игоревич (Space)
' Сайт: www.robptsspace.ucoz.ru
' Дата начала:  20.09.2009 г.
' CPU:  ATmega16
' Тактовая частота:  16000000  Hz
' Компилятор: BASCOM-AVR 1.11.9.0
' Версия программы для Robbe 1.0
'*******************************************************************************
' Программируемые Fuse:
' SUT0
' BOOTSZ0, BOOTSZ1
' CKORT
' SPIEN
'-------------------------------------------------------------------------------

$regfile = "m16def.dat"                    'используем мк ATmega16
$crystal = 16000000                    'частота кварцевого резонатора 16mHz

$include "config ports.bas"

$lib "lcd4.lbx"                    'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки

Cursor Off
Cls
'---------------------------------Переменные------------------------------------
Dim Minimum As Byte , Maximum As Byte , Center As Byte , Speed As Byte : Speed = 200
Dim X As Integer , I As Integer

Minimum = 80 : Maximum = 160 : Center = Maximum - Minimum   'подсчитываем разворот в градусах для сервопривода

Const Wait1 = 500 : Const Top = 30 : Const Top1 = 75
'-------------------------------------------------------------------------------

1:
Do

Gosub Вперёд

For I = 30 To Top Step 10
X = Center + I
Servo(1) = X
Waitms Wait1
Gosub Sharp_left
Next

For I = 30 To Top Step 10
Servo(1) = Center
Waitms Wait1
Gosub Sharp_center
Next

For I = 30 To Top Step 10
X = Center - I
Servo(1) = X
Waitms Wait1
Gosub Sharp_right
Next

For I = 30 To Top Step 10
Servo(1) = Center
Waitms Wait1
Gosub Sharp_center
Next

Loop

$include "gosub.bas"

Метки на которые осущевствляются переходы:

Code

Sharp_right:
Declare Function Sharp_a02(byval 0 As Byte) As Byte
Function Sharp_a02(byval 0 As Byte) As Byte
Local Vout As Word
Start Adc : Vout = Getadc(0)                    'Sharp connected for example to PA=0(ADC0)
Stop Adc
If Vout < 700 Then : Sharp_a02 = 0 : Else : Sharp_a02 = 1 : End If
If Sharp_a02 = 1 Then : Gosub Разворот_влево : Waitms 400 : End If
If Sharp_a02 = 1 Then : Gosub 1 : End If
End Function
Return

Sharp_left:
Declare Function Sharp_a0(byval 0 As Byte) As Byte
Function Sharp_a0(byval 0 As Byte) As Byte
Local Vout As Word
                  Start Adc : Vout = Getadc(0)                             'Sharp connected for example to PA=0(ADC0)
                  Stop Adc
                  If Vout < 700 Then : Sharp_a0 = 0 : Else : Sharp_a0 = 1 : End If
                  If Sharp_a0 = 1 Then : Gosub Разворот_вправо : Waitms 400 : End If
                  If Sharp_a0 = 1 Then : Gosub 1 : End If
End Function
Return

Sharp_center:
Declare Function Sharp(byval 0 As Byte) As Byte
Function Sharp(byval 0 As Byte) As Byte
Local Vout As Word
                  Start Adc : Vout = Getadc(0)                             'Sharp connected for example to PA=0(ADC0)
                  Stop Adc
                  If Vout < 700 Then : Sharp = 0 : Else : Sharp = 1 : End If
                  If Sharp = 1 Then : Gosub Стоп : Waitms 1000 : Gosub Разворот_вправо : Waitms 700 : End If
                  If Sharp = 1 Then : Gosub 1 : End If
End Function
Return

'' -----------------------------------------------------------------------------
'' Включение комбинации моторов для движения в заданном направлении
'' -----------------------------------------------------------------------------
Стоп:                    ' стоим на месте
M1f = 0 : M1b = 0 : Pwm1a = 0
M2f = 0 : M2b = 0 : Pwm1b = 0
Return

Вперёд:                    ' едим вперёд на заданной скорости
M1f = 1 : M1b = 0 : Pwm1a = Speed
M2f = 1 : M2b = 0 : Pwm1b = Speed
Return

Вперёд_вправо:                    ' поварачиваем вправо на заданной скорости
M1f = 1 : M1b = 0 : Pwm1a = Speed
M2f = 0 : M2b = 0 : Pwm1b = 0
Return

Вперёд_влево:                    ' поворачиваем влево на заданной скорости
M1f = 0 : M1b = 0 : Pwm1a = 0
M2f = 1 : M2b = 0 : Pwm1b = Speed
Return

Назад:                    ' едим назад на заданной скорости
M1f = 0 : M1b = 1 : Pwm1a = Speed
M2f = 0 : M2b = 1 : Pwm1b = Speed
Return

Назад_вправо:                    ' поворачиваем назад-вправо на заданной скорости
M1f = 0 : M1b = 1 : Pwm1a = Speed
M2f = 1 : M2b = 0 : Pwm1b = 0
Return

Назад_влево:                    ' поворачиваем назад-влево на заданной скорости
M1f = 0 : M1b = 0 : Pwm1a = 0
M2f = 0 : M2b = 1 : Pwm1b = Speed
Return

Разворот_вправо:                    ' делаем Разворот_вправо на заданной скорости
M1f = 1 : M1b = 0 : Pwm1a = Speed
M2f = 0 : M2b = 1 : Pwm1b = Speed
Return

Разворот_влево:                    ' делаем Разворот_влево на заданной скорости
M1f = 0 : M1b = 1 : Pwm1a = Speed
M2f = 1 : M2b = 0 : Pwm1b = Speed
Return

И видео:

Прикрепления: 7909925.jpg (205.5 Kb) · 1730524.jpg (229.9 Kb) · Robbe_Version_1.rar (25.9 Kb)
 
SpaceДата: Вторник, 22.09.2009, 11:50 | Сообщение # 16








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Так с объездом препятствий всё ясно. Теперь надо сделать делитель напряжения на резисторах и подключать его на ацп мк. Чтобы контролировать разряд акб.
 
SpaceДата: Вторник, 22.09.2009, 12:49 | Сообщение # 17








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Готова. Ток не знаю пока на скок это правильно.
Прикрепления: 0195397.jpg (10.5 Kb)
 
DoniakДата: Вторник, 22.09.2009, 17:19 | Сообщение # 18








Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
Я немного не понял зачем тебе делитель если там 5В ?
 
SpaceДата: Вторник, 22.09.2009, 17:28 | Сообщение # 19








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Я там ошибся надо на прямую к акб. Поэтому так будет:

R1 только не 1кОм, а 1,5кОм

Добавлено (22.09.2009, 17:28)
---------------------------------------------
Вот тока не работает. точней работает, но когда подключаю к ацп, то оно сразу подскакивает до 1023 и не меняется. Пробовал менять напряжение с помощью стабилизированного источника питание от 12 до 6 вольт.

Прикрепления: 5956381.jpg (9.2 Kb)
 
Bass85Дата: Вторник, 22.09.2009, 17:59 | Сообщение # 20








Зарегистрирован 12.02.2009
Группа: Опытные
Сообщений: 422
Статус: Offline
А говорил что с электроникой все нормально. Ты делитель сделал в два раза 12/2=6 а это больше 5 вольт которые ты скорее всего подал на AREF Вот оно и пишет максимум 1023. Вот http://www-k.ext.ti.com/srvs....%29,new
Да и на свинцовом заряженном больше 12. так что дели на три смело а там программно подправишь. У тебя вышел коэффициент 0,6 поэтому на АЦП подается аж 7,2В.
 
SpaceДата: Вторник, 22.09.2009, 18:30 | Сообщение # 21








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Это я говорил в плане электродеталей. А с электроникой с чем связан ещё не был, да пробелы бывают.
Да уже сказали на робофоруме. Что из-за этого произошло переполнение АЦП.
Поставил 75ом и 910 и всё заработало. Потом заменю на подстроечный. А то сказали что:
Quote (SERGEY_M)
слишком резисторы (номиналы) маленькие, неоправданно большое потребление тока...
нужно увеличить хотябы в 10 раз номиналы :)

Добавлено (22.09.2009, 18:30)
---------------------------------------------
Ацп при:
12 вольтах = 355
9 вольтах = 244
7,5 вольтах = 205
6 вольтах = 184

Прикрепления: 0841690.jpg (134.4 Kb)
 
Bass85Дата: Вторник, 22.09.2009, 18:41 | Сообщение # 22








Зарегистрирован 12.02.2009
Группа: Опытные
Сообщений: 422
Статус: Offline
Правильно сказали smile3
 
SpaceДата: Вторник, 22.09.2009, 18:42 | Сообщение # 23








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Прога такая:
Code
$regfile = "m16def.dat"
$crystal = 16000000
$lib "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 = 20 * 4

Cls
Cursor Off

Config Adc = Single , Prescaler = Auto , Reference = Internal
Dim Adc_temp As Word , Akb As Single

Do

Start Adc
Adc_temp = Getadc(0)
Stop Adc
Akb = Adc_temp
Locate 1 , 1
Lcd "Robbe"
Locate 2 , 1
Lcd "Adc_temp=" ; Adc_temp
Locate 3 , 1
Lcd "akb=" ; Akb

Waitms 100

Loop
 
dangerДата: Воскресенье, 27.09.2009, 08:32 | Сообщение # 24








Язык программированя: пока нет
Зарегистрирован 17.07.2009
Группа: Новички
Сообщений: 168
Город: Чебоксары
Статус: Offline
очень похож на этого http://www.youtube.com/watch?v=aoPQXkzq420&feature=fvw

http://vkontakte.ru/club13643816 тыркни по ссылке
 
SpaceДата: Воскресенье, 27.09.2009, 11:38 | Сообщение # 25








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
единственное чем похож это движениями сервопривода
 
dangerДата: Воскресенье, 27.09.2009, 14:43 | Сообщение # 26








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

http://vkontakte.ru/club13643816 тыркни по ссылке
 
SpaceДата: Воскресенье, 27.09.2009, 15:24 | Сообщение # 27








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Заменил питание наконец-то dance4
Маленький, лёгкий на 6,8в литьевый аккумулятор
Прикрепления: 4092874.jpg (762.0 Kb) · 3813361.jpg (135.1 Kb)
 
dangerДата: Воскресенье, 27.09.2009, 15:47 | Сообщение # 28








Язык программированя: пока нет
Зарегистрирован 17.07.2009
Группа: Новички
Сообщений: 168
Город: Чебоксары
Статус: Offline
не тяжолый . мдя у тя Space, во всех роботах эти серво моторы стоят они вить ваще бешено дорогие по пятсот стоят sad

http://vkontakte.ru/club13643816 тыркни по ссылке
 
юрииДата: Воскресенье, 27.09.2009, 15:55 | Сообщение # 29








Язык программированя: Васик
Зарегистрирован 05.03.2009
Группа: Новички
Сообщений: 572
Город: Югорск
Статус: Offline
а что ты danger, хотел хоби! это того стоит)) я тоже купил 2 сервы сломал)) жду рем комплект

Добавлено (27.09.2009, 15:55)
---------------------------------------------
и мне даж не грустно)) то что сломал ) это же пустяки

 
SpaceДата: Воскресенье, 27.09.2009, 15:59 | Сообщение # 30








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Quote (danger)
не тяжолый . мдя у тя Space, во всех роботах эти серво моторы стоят они вить ваще бешено дорогие по пятсот стоят

бред. у меня по 300 сервы стоят и лишь одна за 620 и то из-за что в ней металлические шестерёнки.
Я себе купил 4 по 300 и пользуюсь ими. Новых я не покупал уже больше года
 
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск: