Для ближайшего проекта мне требуется управление рукой без касания с учетом расстояния. То ест ближе рука — больше что-то, дальше рука — меньше что-то.
Искал вариант использования ИК светодиода и приемника для этого дела, но все, что нашел не понравилось – все громоздко, много резисторов, а мне надо 4 сенсора сделать в сжатом пространстве. Некоторые решения не дают диапазона значений, а дают только логический 0 или 1. В итоге нашел то, что надо а даташите для ОУ LM358 (кто-бы подумал).
В даташите дана схема для фотоячейки. Я ее использовал без изменений, только вместо фотоячейки поставил ИК светодиод и сопротивление обратной связи сделал около 4.5МОм. ОУ LM358.
Как видите, это простая схема инвертирующего усилителя, где одно сопротивление заменено на светодиод.
На макетке это выглядит так:
Для излучателя используется ИК светодиод INF5940 с длиной волны 940нм и углом 35 градусов купленный здесь http://www.futurlec.com/LEDInfrared.shtml. Сопротивление для излучателя взято 220 Ом (для 9В питания), что дало ток около 35мА.
Для приемника используется INFD5940, который, в принципе, тот же самый светодиод, только темный, чтобы лучше поглощать свет.
Вот конструкция в работе:
Как видно, работает все очень четко и стабильно. Реагирует на малейшее движение руки вверх-вниз четко в такт. Никакого дребезга. При указанном усилении и токе излучателя реакция начинается примерно с 10 см (мне больше и не требуется). Для эксперимента я излучатель сделал постоянный. В этом режиме превышать 50мА нельзя. В реальном устройстве излучатель будет импульсный, что позволять использовать ток до 250 мА, что позволить или увеличить дальность или улучшить качество детектирования.
На один детектор получается необходимо: светодиоды — 2, резисторы — 2, ОУ — 1. Причем ОУ можно взять сдвоенный или даже счетверенный, что позволит еще уменьшить количество деталей и использовать всего один конденсатор вы питании микросхемы.
Я использовал ИК, чтобы не было видного глазам мигания, но это все будет работат и с оптическими светодиодами и с ультрафиолетовыми. Примечательно, что приемник также реагирует на ИК пульт, поднесенный достаточно близко.
Далее был проведен эксперимент для выяснения зависимости напряжения на выходе ОУ от расстояния. Использовалась белая полоска бумаги и мультиметр.
Таблица снятых данных:
расстояние (см) | значение (В) |
0.0 | 2.73 |
0.5 | 1.98 |
1.0 | 1.55 |
1.5 | 1.1 |
2.0 | 0.76 |
2.5 | 0.63 |
3.0 | 0.47 |
3.5 | 0.38 |
4.0 | 0.27 |
4.5 | 0.2 |
5.0 | 0.13 |
5.5 | 0.10 |
6.0 | 0.07 |
6.5 | 0.05 |
7.0 | 0.04 |
7.5 | 0.02 |
Полученный график выглядит так:
Найти математическое представление сего чуда лежит за пределами моего желания потратить время. Я был бы рад, если бы кто-то нашел функцию, которая с хорошей точностью описывает этот процесс, однако она все-равно скорее всего будет слишком сложной для релизации в МК. До тех пор буду довольствоваться линейной апроксимацией между ключевыми точками по таблице в рабочей области (где график идет круто, а не полого). При подаче большего тока, крутой участок будеь больше по вертикали, что еще упростит задачу.
PS. подскажите как правильно запитать LM358, конденстор ставить последовательно на + питание?
PPS. а еще больше можно тогда резистор поставить?)
Резистор увеличить можно. Шунтирующий конденсатор разумееются ставять парралельно (между питанием и общим проводом), иначе как же ток будет течь в чип?
Спасибо за схемку, очень классно))
вот тут можно проверить.
http://www.webmath.ru/web/prog31_1.php
x=0....8
y=0....3
Я думаю это тут неважно так как график сохраняет свою форму и если использовать линейную часть, то сильных сдвигов
не будет по температуре в разумном диапазоне (10 - 50 градусов), а пользователь адаптируется при управлении рукой
по визуальной обратной связи.