roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 11:38

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 13:10 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Кстати я слышал что можно этот дальномер через линзу ставить - для изменения диапазона измерения. Но попробовать не с чем... Может у кого есть очки? А то у меня только линзы всякие - но они уж больно могучие...

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 13:30 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
SkyStorm писал(а):
Маладец!!! Давно собирался это сделать но все руки не доходили.
Сделай серию измерений м шагом 5 см и выложи пожалуста суда в след. виде
Реальное растояние; Расчитанное растояние; Значение ADC
Я беру на себя обязательство оформить это в Вике по типу странички [[GP2D12]].
И еще я не понял какие у тебя проблеммы с функцией Sharp_d12???

не компилируется. указывая на строчку где есть название Sharp_d12
Реальное растояние; Расчитанное растояние; Значение ADCэто вот эти три значение вывести на дисплей:
Код:
Vout = Vout1 + B -АДЦ
Range1 = M / Vout-по идее реальное расстояние
Range = Range1 - K -и рассчитанное

разъясни на счёт серии изменений, а то мне ни со всем понятно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 13:40 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
1. Sharp_d12 - Это функция. В хелпе смотри "Declare Function".
В начале программы ее нужно задекларировать
Код:
Declare Function Sharp_d12(byval Adc_chanel As Byte) As Byte

В конце вставить код функции, а в теле вызывать.

2. Береш растояние 15см делаеш измерение, потом 20см, потом 25, и так с шагом 5см до 120см.
Реальное растояние; Расчитанное растояние; Значение ADC

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 13:50 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Короче вот так:
Изображение
Ток не обещаю, что будет это быстро, но сделаю

А с функцией так:
Код:
$regfile = "m16def.dat"                                     
$crystal = 16000000                                         


Declare Function Sharp_d12(byval Adc_chanel As Byte) As Byte
Const M = 10000
Const K = 0
Const B = -40
Local Range As Word , Vout As Word , Vout1 As Word
   Start Adc : Vout = Getadc(adc_chanel)                   
   Stop Adc
   If Vout < 160 Then                                       
     Sharp_d12 = 0
   Else
   Vout1 = Vout + B                                                                                 ' M/(Vout+B)
   Sharp_d12 = Range - K                                   
   End If
End Function

Исправил как ты сказал, теперь ошибка в переменных и на строчке с АДЦ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 14:01 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
Код:
'Начало программы
'Обьявление функции
Declare Function Sharp_d12(byval Adc_chanel As Byte) As Byte
'Тело программы
'Вызов Sharp_d12

'Тело функции
Function Sharp_d12(byval Adc_chanel As Byte) As Byte
...
End Function


В примерах же все расписано, тебе что Хелп посмотреть западло???

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 14:04 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
ды нет :sorry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 14:07 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
Что то я по поводу 5 см погоречился, давай с шагом 10 см. Ок?!?!? )))

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 17 авг 2009, 14:18 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
хорошо. ща пока с функцией малость увлёкся :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 00:02 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Код:
M=20000; B=-75; K=0
V    R     Real
971 22.32    20
774 28.61    30
601 38.02    40
477 49.75    50
410 59.70    60
358 70.67    70
307 79.74    80
284 88.51    90
255 102.77   100
246 108.18   110
232 117.83   120

вообщем что-то типо этого. Определяет не всегда точно. Зависит от цвета поверхности. Пробовал на одном и томже расстояние два разных по цвету предмета. Результат показывал разный. После 120 не стал уже делать. Там ошибается вообще по крупному. Норм только где то до 70-80 см. Пришлось ещё условие добавить. Мож ещё с функцией попробую сделать.
Код:
'-------------------------------------------------------------------------------
$regfile = "m16def.Dat"                                     ' мк ATmega16
$crystal = 16000000                                         ' частота кварца 16мГц
'-------------------------------------------------------------------------------

'-------------------------------- LCD-дисплей-----------------------------------
$lib "lcd4.lbx"                                             'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
'Библиотека 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 знакомест в каждой
'-------------------------------------------------------------------------------

'----------------------------Константы и переменные-----------------------------
'Формула: R=M/(V+B)-K
Const M = 20000
Const K = 0
Const B = -75

Dim Range As Word , Range1 As Single , Vout As Word , Vout1 As Word , M1 As Word
'-------------------------------------------------------------------------------

'--------------------------------Настройка ADC----------------------------------
Config Adc = Single , Prescaler = Auto , Reference = Internal
'-------------------------------------------------------------------------------

'---------------------------------------------   ----------------------------------
'Далее перед вывод информации на дисплее отключаем курсор,
'если этого не сделать он будет мешаться в виде такого
' знака "_". И делаем очистку с помощью команды "Cls".
Cursor Off                                                  'отключаем отображение курсора на LCD
Cls                                                         'очитка дисплея

Locate 1 , 5                                                'позиция курсора(1-строка, 5-начало надписи с 5-ого знакоместа)
Lcd "RoboHome"                                              'выводим надпись
Locate 2 , 4                                                ' позиция курсора(2-строка, 4-начало надписи с 4-ого знакоместа)
Lcd "Sharp test"                                            'выводим надпись
Waitms 2                                                    'задержка 2 секунды
'-------------------------------------------------------------------------------

'Начало цикла основной программы

Do
Start Adc : Vout1 = Getadc(0)                               'Запускаем ADC на PA0
Stop Adc                                                    'Останавливаем ADC
Vout = Vout1 + B
If Vout < 325 Then : M1 = M - 1500 : Else : M1 = M : End If
Range1 = M1 / Vout
Range = Range1 - K

Cls                                                         'очитка дисплея
Locate 1 , 1                                                ' позиция курсора
Lcd "Real=" ; Range ; "cm" ; " M1=" ; M1 ; ""                   'выводим результат преобразования на ЖК
Locate 2 , 1                                                ' позиция курсора
Lcd "Vout=" ; Vout1 ; " " ; "R=" ; Range1 ; ""              'выводим результат преобразования на ЖК
Waitms 100                                                  ' зедержка 0,1 секунды
Loop
End


Добавлено спустя 1 час 6 минут 9 секунд:
Вопрос про одновременное управление сервой и шарпом вынесен туда.
<Digit>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 07:24 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
space а у тебя опора какая и из чего опора на AREF?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 12:07 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
если про ножку на мк, то она вообще не подключена


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 12:23 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
Ты на внутренней опоре делаешь? В ДШ и аппноутах такая куча рекомендаций, как правильно подключать АЦП...

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 12:33 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Код:
'--------------------------------Настройка ADC----------------------------------
Config Adc = Single , Prescaler = Auto , Reference = Internal
'-------------------------------------------------------------------------------

Получается тогда на INTERNAL – внутренний источник опорного напряжения на 2,56 в.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 12:46 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
Вот тут и вот тут читал?
По первой ссылке, например, вот:
Цитата:
Выбор опорного сигнала
Это максимальное напряжение, которое будет взято за максимум при измерениях. Опорное напряжение должно быть как можно стабильней, без помех и колебаний — от этого кардинальным образом зависит точность работы АЦП. Задается он в битах REFS1..0 регистра ADMUX.
[...удалил...]
* REFS1..0 = 11 - внутренний источник опорного напряжения на 2.56 вольт. Честно говоря, качество этого источника мне сильно не понравилось. С ним показания АЦП плавают как говно в проруби. Но если невозможно обеспечить гладкую и стабильную подачу напряжения на AREF или AVCC то прокатит. Кстати, внутренний ИОН подключен к выводу AREF так что можно повесить туда кондер и попробовать его чуть чуть сгладить. Немного, но помогает.

Ну а лучше, канеш, внешнюю опору. Хоть будешь знать, от чего у тебя пляшет...

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ИК-дальномер Sharp GP2Y0A02 (20-120см)
СообщениеДобавлено: 18 авг 2009, 12:52 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Не не читал, но почитаю спасибо.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO