Главная » Статьи » Программирование » Программирование в BascomAVR |
Подключаем ИК-дальномер Sharp GP2Y0A21 (10-80см)
Чтобы подключить данный дальномер. нам потребуется ацп. Как с ним работать я уже рассказывал в статье "Тестируем АЦП на контроллере". Поэтому заострять внимания на ацп не будем. Лучше расскажу о дальномерах. Дальномеры предоставляют данные о расстояние(определение расстояния до объекта) или могут использоваться как датчик для определения препятствия. Коротенько о их работе: Для определения расстояния либо просто наличия объекта в поле зрения
сенсора используется метод триангуляции и малая линейная CCD матрица. Основная идея в следующем.
Импульсы ИК излучения испускаются излучателем. Это излучение
распространяется и отражается от обьектов находящихся в поле зрения
сенсора. Отраженное излучение возвращается на приемник. Испускаемый и
отраженный лучи образуют треугольник «излучатель — обьект отражения —
приемник». Угол отражения напрямую зависит от расстояния до обьекта.
Полученные отраженные импульсы собираются высококачественной линзой и
передаются на линейную CCD матрицу. По засветке определенного участка
CCD матрицы определяется угол отражения и высчитывается растояние до
обьекта. Этот метод более защищен от эффектов интерференции излучения и
разной отражающей способности поверхностей, выполненных из различных
материалов и окрашенных в различные цвета. Например, стало возможно
определение черной стены при ярком освещении.
Если надо будет узнать о дальномерах более подробно, то поищите по интернету. Характеристика на Sharp GP2Y0A21:
Code Vout1 = Vout + B ' (Vout+B) Range = M / Vout1 ' M/(Vout+B) Sharp_d12 = Range - K ' Range = M/(Vout+B)-K Где Vout-ацп, M,B,K-константы заданные в программе, всё остальное целочисленные переменные. Так как константа К=0, то некоторые строки сделаны как комментарии, если потребуются просто уберите знак " ' " Code $regfile = "m16def.dat" ' используем ATmega16 $crystal = 16000000 ' частота установленного кварца 16 mHz $lib "lcd4.lbx" 'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки 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 'используем дисплей на 4 строчки по 20 знакомест в каждой Config Adc = Single , Prescaler = Auto , Reference = Internal 'конфигурация АЦП 'объявляем переменные Dim Range As Integer , Vout As Integer , Vout1 As Integer ' , Sharp_d12 As Integer 'объявляем константы Const M = 10000 Const K = 0 Const B = -40 Cursor Off 'отключаем отображение курсора на ЖК Cls 'очитка дисплея Locate 1 , 7 : Lcd "Enore.ru" 'позиция курсора, выводим надпись Locate 2 , 6 : Lcd "Sharp test" : Waitms 2000 'позиция курсора, выводим надпись, задержка 2 секунды Cls 'очитка дисплея Do 'главный цикл программы Start Adc 'запускаем аналого-цифровое преобразование Vout = Getadc(0) 'считываем результат с пина 0 порта А. Stop Adc Vout1 = Vout + B ' (Vout+B) Range = M / Vout1 ' M/(Vout+B) 'Sharp_d12 = Range - K ' Range = M/(Vout+B)-K 'очитка дисплея Locate 1 , 1 ' позиция курсора 'Lcd "ADC(0):" ; Sharp_d12 ; " cm" 'выводим результат преобразования на ЖК Locate 2 , 1 ' позиция курсора Lcd "ADC(0):" ; Vout ; " vout" 'выводим результат преобразования на ЖК Locate 3 , 1 ' позиция курсора Lcd "ADC(0):" ; Vout1 ; " vout1" 'выводим результат преобразования на ЖК Locate 4 , 1 ' позиция курсора Lcd "Range: " ; Range ; " cm" 'выводим результат преобразования на ЖК Waitms 100 ' зедержка 0,1 секунды Loop End Ссылка на предыдущую статью. Ссылка на следующую статью. Источник: www.enore.ru | |
Категория: Программирование в BascomAVR | Добавил: Space (30.01.2011) | | |
Просмотров: 2265 | |
Всего комментариев: 0 | |