GP2D12 — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Новая страница: «ИК Дальномеры Sharp GP2D12 и GP2Y0A21»)
 
Строка 1: Строка 1:
ИК Дальномеры Sharp GP2D12 и GP2Y0A21
+
= ИК Дальномеры Sharp GP2D12 и GP2Y0A21 =
 +
 
 +
Итак немного подробнее о данных дальномерах. [[ИК-дальномеры SHARP|Общие данные для всей серии дальномеров Sharp]].<br>
 +
Характеристики:
 +
* Минимальное растояние: '''10 см'''
 +
* Максимальное растояние: '''80 см'''
 +
* Напряжение питания: '''4.5 - 5.5В'''
 +
* Потреление типовое: '''33мА'''
 +
* Потреление максимальное: '''50мА'''
 +
* Полный цикл измерения: '''39 ms'''
 +
* Диаметр луча '''GP2D12''': '''6 см''' на удалении 80 см
 +
* Диаметр луча '''GP2Y0A21''': '''12 см''' на удалении 80 см
 +
 
 +
 
 +
Выход с дальномера аналоговый с [[ИК-дальномеры SHARP#Нелинейный выход|неленейной характеристикой(ссылка).]]<br>
 +
Для получения линейной характеристики применяется либо табличный метод либо [[ИК-дальномеры SHARP#Нормализация нелинейности выхода|нормализация(ссылка).]] Формула нормализации после преобразования (см. ссылки)
 +
 
 +
<math>R = \frac{m'}{V + b'} - k</math>
 +
 
 +
Применение для 10 bit [[АЦП]] (0..1023) по данным [http://www.acroname.com/robotics/info/articles/irlinear/irlinear.html#e1 Acroname]:
 +
* m' = 6787
 +
* b' = − 3
 +
* k = 4
 +
Но то ли датчики поменялись с тех пор или процесора на 3 вольта по другому обрабатывают [[АЦП]] но получаем след. результат
 +
[[Файл:GP2D12_normalization.jpg]]<br>
 +
Если взять (спасибо DeaD'у)
 +
* m' = 10000
 +
* b' = − 40
 +
* k = 0
 +
[[Файл:GP2D12_normalization_ok.jpg]]<br>
 +
Пример кода на Bascom-AVR
 +
<source lang="vb">
 +
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)                    'Sharp connected to PA=0(ADC0)
 +
  Stop Adc
 +
  If Vout < 160 Then                                      ' if les 160 its out of range
 +
    Sharp_d12 = 0
 +
  Else
 +
  Vout1 = Vout + B                                        ' (Vout+B)
 +
  Range = M / Vout1                                        ' M/(Vout+B)
 +
  Sharp_d12 = Range - K                                    ' Range = M/(Vout+B)-K
 +
  End If
 +
End Function
 +
</source>

Версия 10:14, 17 июня 2009

ИК Дальномеры Sharp GP2D12 и GP2Y0A21

Итак немного подробнее о данных дальномерах. Общие данные для всей серии дальномеров Sharp.
Характеристики:

  • Минимальное растояние: 10 см
  • Максимальное растояние: 80 см
  • Напряжение питания: 4.5 - 5.5В
  • Потреление типовое: 33мА
  • Потреление максимальное: 50мА
  • Полный цикл измерения: 39 ms
  • Диаметр луча GP2D12: 6 см на удалении 80 см
  • Диаметр луча GP2Y0A21: 12 см на удалении 80 см


Выход с дальномера аналоговый с неленейной характеристикой(ссылка).
Для получения линейной характеристики применяется либо табличный метод либо нормализация(ссылка). Формула нормализации после преобразования (см. ссылки)

<math>R = \frac{m'}{V + b'} - k</math>

Применение для 10 bit АЦП (0..1023) по данным Acroname:

  • m' = 6787
  • b' = − 3
  • k = 4

Но то ли датчики поменялись с тех пор или процесора на 3 вольта по другому обрабатывают АЦП но получаем след. результат GP2D12 normalization.jpg
Если взять (спасибо DeaD'у)

  • m' = 10000
  • b' = − 40
  • k = 0

GP2D12 normalization ok.jpg
Пример кода на Bascom-AVR <source lang="vb"> 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)                    'Sharp connected to PA=0(ADC0)
  Stop Adc
  If Vout < 160 Then                                       ' if les 160 its out of range
    Sharp_d12 = 0
  Else
  Vout1 = Vout + B                                         ' (Vout+B)
  Range = M / Vout1                                        ' M/(Vout+B)
  Sharp_d12 = Range - K                                    ' Range = M/(Vout+B)-K
  End If

End Function </source>