Практикум. Работа с дальномером Sharp , М.: , 2010

advertisement
Работа с дальномером Sharp
Одним из распространенных датчиков препятствий является устройство GP2D120
производства фирмы SHARP.
Датчик использует инфракрасное излучение и позволяет обнаруживать
препятствия на весьма значительном расстоянии. Датчик GP2D120 работает на дистанции
до 30-40 см., а аналогичный GP2Y0A02YK0F – уже на расстоянии до 150 см.
На самом деле, эти датчики являются дальномерами, т.е. они позволяют
определить расстояние до объекта, причем делают это весьма качественно.
У подобного рода датчиков есть свои особенности, которые необходимо
учитывать.
Рис. 1. Внешний вид датчиков: а) GP2D120, б) GP2Y0A02YK0F
Во-первых, у них достаточно узкая диаграмма направленности. Это означает, что
использовать их просто как ИК-бамперы (простейшие датчики препятствий) не всегда
целесообразно. Задача ИК-бампера – не столько измерить расстояние, сколько просто
определить, что где-то поблизости есть препятствие. При этом угол зрения такого датчика
должен быть широк, чтоб робот мог отреагировать на малогабаритные препятствия.
В-вторых, у этих датчиков есть зона невидимости. Расстояние до препятствий,
находящихся слишком близко, такие датчики определяют неверно. За все надо платить.
Если «близкодействующий» датчик GP2D120 не определяет расстояние до предметов,
находящихся ближе 4 см., то «дальнобойный» GP2Y0A02YK0F не видит того, что
находится ближе 20 см. Так что надо четко понимать, для каких задач используется
датчик.
В-третьих, им требуется стабильное питание – от 4.5 до 5.5 В.
Основная характеристика датчиков – зависимость выходного напряжения от
расстояния до препятствия – приведена на рис. 2 и 3.
1
Рис. 2. Характеристика датчика GP2D120
Рис. 3. Характеристика датчика GP2Y0A02YK0F
2
Использование датчика
Датчик прост в использовании и подключении. У него три вывода: выходной
сигнал, земля и питание.
Питание
Сигнал
(на АЦП)
Рис. 4. Цоколевка выводов датчика GP2D120 и его подключение
Очевидно, что выходной сигнал от датчика следует подавать на вход АЦП
контроллера. Ниже приведена тестовая программа, отображающая на терминале
выдаваемое датчиком напряжение.
Для того чтобы определять по этому напряжению расстояние, следует добавить
немного математики. Мы не будем останавливаться на этом вопросе, заметив только, что
для определения расстояния необходимо воспользоваться характеристиками,
приведенными на рис. 2 и 3. К сожалению, эти характеристики не линейны, поэтому
аппроксимировать их прямыми можно лишь с большой натяжкой.
На практике обычно поступают так: если нас интересует обнаружение препятствия
на фиксированном расстоянии (и ближе), то по графику определяют напряжение,
выдаваемое датчиком на этой дистанции, и далее в программе просто сравнивают это
значение с тем, то выдает АЦП. Например, если мы играем в слалом и робот настроен так,
чтобы начать процедуру объезда препятствия на расстоянии, скажем, 16 см., то по
графику на рис.2. определяют, то при этом датчик выдаст напряжение 0.8 В.
//
Работа с дальномером
Выход дальномера подключен к АЦП 4 и 5 (ADC4, ADC5).
*****************************************************/
#include "m8inc.h"
void main(void)
{
float u1, u2;
InitCM8(); // Инициализация контроллера
InitADC(ADCE5); // Инициализация АЦП
while(1)
{
u1 = ReadADC(ADC1); // Или ReadADC(4)
u2 = ReadADC(ADC2); // ReadADC(5)
printf("%5.2f %5.2f\r",u1, u2);
}
}
3
Download