GP2D12 — различия между версиями
SkyStorm (обсуждение | вклад) (Новая страница: «ИК Дальномеры Sharp GP2D12 и GP2Y0A21») |
SkyStorm (обсуждение | вклад) |
||
Строка 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 вольта по другому обрабатывают АЦП но получаем след. результат
Если взять (спасибо DeaD'у)
- m' = 10000
- b' = − 40
- k = 0
Пример кода на 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>