Датчик відстані, він же локатор, він же сенсор – це оптопара, що складається з випромінюючого світлодіода і фотоприймача

Наші очі бачать світло, відбите від предметів Сьогодні промисловість виготовляє матриці, що реагують на світло подібно нашим очам Такі матриці встановлені в цифрових фотоапаратах і відеокамерах Відбите світло, прийнятий матрицею, перетворюється в цифрову форму, а пізніше за цими цифровим даним можна відновити зафіксоване зображення

Але нашому роботові така складна робота поки не під силу Разом з тим, якось «бачити» йому теж не завадить І він може використовувати найпростіший вид фотоматриці, лінійку з декількох фототранзисторів

Світлодіод сенсора відстані випромінює світло Випромінювання світлодіодів світло відбивається від перешкоди і потрапляє на фотоприймач За інтенсивністю засвічення фотоприймача можна судити про відстань до перешкоди Звичайно, не все так просто

У фотоприемнике GP2D120X використовується декілька фотоелементів, обєднаних в лінійну матрицю Перед вікном фотоприймача знаходиться лінза, як є лінза і у випромінюючого світлодіода Лінза, фокусуючи світло випромінювача, збільшує «далекобійність» датчика А лінза, фокусуються відбите світло, направляє його на один з фотоелементів приємний лінійки За інтенсивністю напруги на виході приймача можна судити про відстань до обєкта

Напруга від сенсора відстані зчитується аналогово-цифровим перетворювачем, вбудованим у мікроконтролер Ми вже проробляли досвід з зчитування напруги з потенціометра Аналогічно можна судити про відстань до перешкоди, отримуючи цифрове значення від АЦП Схема роботи датчика, опис його роботи, формули і таблиці для датчика GP2D120X наведені в керівництві до конструктора Там же і програма, обслуговуюча датчик відстані:

int Adc char txt[6]

/ / Lcd завдання висновків sbit LCD_RS at RD2_bit sbit LCD_EN at RD3_bit sbit LCD_D7 at RD7_bit sbit LCD_D6 at RD6_bit sbit LCD_D5 at RD5_bit sbit LCD_D4 at RD4_bit

/ / Напрямок висновків

sbit LCD_RS_Direction at TRISD2_bit sbit LCD_EN_Direction at TRISD3_bit sbit LCD_D7_Direction at TRISD7_bit sbit LCD_D6_Direction at TRISD6_bit sbit LCD_D5_Direction at TRISD5_bit sbit LCD_D4_Direction at TRISD4_bit

void Read_Adc()

{

ADCON0 = 0b11001001 / / Вибір Analog2 RC_Mode і ADON

ADCON0GO = 1 / / Запуск перетворення

while (ADCON0GO) / / Чекаємо, доки перетворення завершиться Adc = (ADRESH * 4) + (ADRESL/64) / / 10 біт Даних ==> Adc

}

void main()

{

Delay_ms(1000)

Lcd_Init () / / Ініціалізація РКІ Lcd_Cmd (_LCD_CURSOR_OFF) / / Курсор РКІ вимкнений Lcd_Out (1,1, Raw Data =) / / Виведення тексту першого рядка while (1)

{

Read_Adc()

WordToStr (Adc, txt) / / Відображення результату перетворення на РКІ Lcd_Out (1,10, txt)

if (Adc <90) / / Якщо дані < 90, то вони за межами області допустимого

{

}

else

{

}

Lcd_Out(2,1,”Out of Range”)

Adc = (2914 / (Adc +5)) -1 / / Перетворення Даних в сантиметри WordToStr (Adc, txt) / / Перетворення Даних в рядок Lcd_Out (2,1, In CM =) / / Відображення результату на РКІ Lcd_Out (2,6, txt)

Delay_ms(1000)

}

}

Завдання висновків РКІ, не дарма ми випробували висновок на РКІ раніше, взято з попередньої програми

Наступний експеримент – визначення відстані до обєкта з висновком значення на РКІ Вставляємо програму в редактор новоствореного проекту MicroC, транслюємо програму, і отриманий hex-файл завантажуємо за допомогою програми PICkit2 в мікроконтролер робота

Рис 412 Визначення відстані до обєкта

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012