Инфрачервен сензор за разстояние - Сензори - Портал за изкуствен интелект
За измерване на разстоянието до обект има оптични сензори, които работят по метода на триангулацията. Най-често срещаните от тях са дълговълнови, инфрачервени (на английски infra-red, съкратено IR) сензори за разстояние с аналогов изход за напрежение, произведени от Sharp. Сензорите на Sharp имат IR светодиод с леща, която излъчва тесен лъч светлина. Отразеният от обекта лъч се насочва през друга леща към позиционно-чувствителна фотоклетка (на английски position-sensitive detector, съкратено PSD). Местоположението на падащия лъч върху PSD определя неговата проводимост. Проводимостта се преобразува в напрежение и например като я дигитализирате с аналогово-цифров преобразувател на микроконтролера, можете да изчислите разстоянието. Фигурата по-долу показва пътя на отразения лъч на различни разстояния.
Пътят на инфрачервения светлинен лъч на измервателя на разстоянието
Изходът на сензора за разстояние Sharp е обратно пропорционален - с увеличаване на разстоянието, това намалява и расте бавно. Точната графика между разстоянието и изхода е дадена в спецификацията на сензора. Сензорите, според типа, имат граница на измерване, в рамките на която изходът на сензора е надежден. Измерването на максималното реално разстояние е ограничено от два аспекта: намаляването на интензитета на отразената светлина и неспособността на PSD да открие промяна в местоположението на показания малък лъч. При измерване на много отдалечени обекти изходът на сензора остава приблизително същият като при измерване на най-отдалечените разстояния. Минималното измеримо разстояние е ограничено от характеристиките на сензора Sharp, а именно изходното напрежение на определено разстояние (в зависимост от сензора:4-20 cm) започва да пада рязко с намаляване на разстоянието. По същество това означава, че две разстояния съответстват на една стойност на изходното напрежение. За да предотвратите проблем, трябва да избягвате да се приближавате твърде много.
Диаграма напрежение-разстояние на типичен инфрачервен дистанционер на Sharp
Комплектът сензори HomeLab включва инфрачервен далекомер Sharp GP2Y0A21YK с обхват на измерване 10-80 cm. Изходно напрежение на сензора до 3 V в зависимост от измереното разстояние. Сензорът е свързан към модул "Сензори" и изходното му напрежение се изпраща към канал 0 на аналогово-цифровия преобразувател на AVR. Въз основа на предишната задача за сензори, може просто да се направи програма, която измерва изходното напрежение на измервателя на разстоянието, но освен това, целта на тази задача е и да се запознаете с процеса на преобразуване на напрежението в разстояние.
Листът с данни на сензора GP2Y0A21YK показва графика на връзката между изходното напрежение и измереното разстояние. Тази графика не е линейна, но графиката на реципрочната стойност на изходното напрежение и разстоянието е почти линейна и е доста лесно да се намери формулата за преобразуване на напрежението в разстояние, като се използва. За да намерите формулата, трябва да въведете точките от тази графика във всяка програма за обработка на таблични данни и да създадете нова графика от тях. В програма за обработка на таблични данни е възможно автоматично да се изчисли тренд линия въз основа на точките на графика. Следното е графика на коригираната реципрочна стойност между изходното напрежение на GP2Y0A21YK и разстоянието заедно с линейна линия на тенденция. Изходното напрежение вече е преобразувано в 10-битова стойност на аналогово-цифров преобразувател с референтно напрежение +5 V, за да се опрости формулата.
Графиклинеаризация на разстоянието и стойност на ADC
Както можете да видите на графиката, тренд линията (синя) съвпада доста точно с точките на графиката (червена линия). Това съответствие се постига с помощта на константа за корекция на разстоянието. Коригиращата константа беше намерена чрез проба-грешка - опитваха се различни числа, докато се намерят тези, при които графиката беше най-покрита от тренд линията. Коригиращата константа за тази графика е +2, т.е. Към всички реални разстояния в графиката се добавя 2. Тъй като графиката е много подобна на линейна тренд линия, можем да обобщим и да кажем, че връзката между разстоянието и напрежението е следната:
1 / (d + k) = a ⋅ ADC + b
d - разстояние в сантиметри
k - корекционна константа (намерена чрез проба и грешка)
ADC е цифровизираната стойност на напрежението
a - линеен член (стойността идва от уравнението на линията на тренда)
b - свободен член (стойността идва от уравнението на линията на тренда)
От формулата можете да изразите разстоянието d:
d = (1 / (a ⋅ ADC + B)) - k
По принцип това уравнение може да изчисли разстоянието, но това включва изчисления с плаваща запетая, тъй като в частното се образуват дробни числа. За микроконтролер, работещ с цели числа, ще е необходимо да се опрости формулата и да се преведе в големи множители. Разделяйки частното на формулата на линеен член, получаваме следната форма:
d = (1 / a) / (ADC + B / a) - k
Въвеждане на стойността на корекционната константа във формулата и линейния и свободния член, получени от уравнението на линията на тренда (получено от фигурата), получаваме формула за изчисляване на разстоянието:
d = 5461 / (ADC - 17) - 2
Тази формула се изчислява с 16-битови цели числа и е напълно подходяща за AVR. Преди да изчислите, трябва да се уверитетака че стойността на ADC да е по-висока от 17, в противен случай ще се получи деление на нула или отрицателно разстояние, което не е логично.
Следното е функция, записана в библиотеката на Home Lab за преобразуване на стойността на ADC в сантиметри. Линейният и свободният член, както и корекционната константа, не са твърдо кодирани във функцията, но се задават от обектите на структурния параметър на IR на сензора за разстояние. Чрез съхраняване на параметрите отделно в константа е възможно по-късно просто да добавите нови модели инфрачервени сензори за разстояние към програмата.
За да създадете превод, трябва да извикате функцията ir_distance_calculate_cm, чийто първи параметър е параметърът на IR обекта на сензора за разстояние, а вторият е стойността на ADC. Функцията връща изчисленото разстояние в сантиметри. Ако изчислението е неправилно (т.е. с неестествена ADC стойност), функцията връща -1. Следващата програма демонстрира използването на инфрачервен сензор за разстояние и функцията за преобразуване. Използва се буквено-цифров LCD екран, на който се показват резултатите от измерването. Ако разстоянието е неестествено, се показва въпросителен знак.