Полная версия этой страницы:
Ик барьер
подскажите пожалуйста, решил сделать специфический ик барьер. но расстояние от ик диода до ик транзистора оказалось не более 30 сантиметров, для нормальной работы а нужно 2 метра. Как можно модернизировав только передатчик увеличить расстояние. Ик диод и транзистор определить не могу. Ик диод как от пульта для телевизора. Транзистор в черном стекле. И диод и транзистор 5мм если это поможет. смысл как и в любом случае, если прерывается луч, то на ножке контроллера логический ноль. пожалуйста подскажите дельным советом. рассматриваю вариант установки 1ватного ик диода , но стоит такой дороговато.
ILYAUL
Oct 27 2011, 21:57
QUOTE (ururur @ Oct 28 2011, 01:40)

подскажите пожалуйста, решил сделать специфический ик барьер. но расстояние от ик диода до ик транзистора оказалось не более 30 сантиметров, для нормальной работы а нужно 2 метра. Как можно модернизировав только передатчик увеличить расстояние. Ик диод и транзистор определить не могу. Ик диод как от пульта для телевизора. Транзистор в черном стекле. И диод и транзистор 5мм если это поможет. смысл как и в любом случае, если прерывается луч, то на ножке контроллера логический ноль. пожалуйста подскажите дельным советом. рассматриваю вариант установки 1ватного ик диода , но стоит такой дороговато.
laser diodes
а если нужно вложится в несколько долларов диод и приемник?
Microwatt
Oct 27 2011, 23:53
Диод нужно модулировать какой-то частотой , переменный сигнал фильтровать и усиливать.
Сразу получить логический уровень не получится, сигнал слаб.
Возьмите какой нибудь приемник TSOP(он , как сказал ув.Microwatt выше, фильтрует и усиливает), например TSOP1738 и ваш светодиод. Промодулируйте диод соответствующей частотой (в данном случае 38кГц). Расстояние до 15 м можно получить особо не заморачиваясь. Только совет: В обязательном порядке нужны направляющие трубки на приемник и желательно на передатчик, а то может "ловить" переотражения, и небольшие предметы будет "незамечать".
а можно ли промодулировать передатчик при этом оставив схему приемника как есть?
Цитата(ururur @ Oct 28 2011, 11:58)

а можно ли промодулировать передатчик при этом оставив схему приемника как есть?
В этом тогда не будет смысла. Как Вы собираетесь детектировать сигнал? контроллером? зачем? Лишние ресурсы контроллеру не помешают.. ) Хотя зависит от задачи. К тому же нужен усилитель и формирователь сигнала с фильтами и т.д.
А переделки приемника под TSOP минимальные (см. datasheet на TSOP).
у меня уже есть готовое собранное устройство, схема как нарисована на картинке, хотелось бы просто увиличить дальность... Тоесть если я промодулирую только передатчик дальность не увеличится.
Цитата(ururur @ Oct 28 2011, 12:45)

у меня уже есть готовое собранное устройство, схема как нарисована на картинке, хотелось бы просто увиличить дальность... Тоесть если я промодулирую только передатчик дальность не увеличится.
Увеличится помехоустойчивость (при условии что корректно сделаны детектирование и фильтрация на контроллере).
Если у Вас еще все в корпус не установлено, то TSOP можно на плате раскорячить )) там всего три ноги, причем там питание 5В и выход уже логика.
зы: в вашем случае возможно увеличить дальность при увеличении импульсного тока на свд при модулировании.
Цитата(ururur @ Oct 28 2011, 12:45)

у меня уже есть готовое собранное устройство, схема как нарисована на картинке, хотелось бы просто увиличить дальность... Тоесть если я промодулирую только передатчик дальность не увеличится.
В обычных ленивчиках в светодиод вгоняется существенно меньше 20 мА, а дальность они обеспечивают существенно большую.
Если устройство уже готово до полной невозможности подумать и сделать "как надо", ставьте 1 Вт светодиод - "дальность полёта свиньи определяется направлением и силой пинка".
сейчас собираю модулятор для светодиода, как сделаю отпишусь о результате

собрал модулятор по такой схеме. настраивал на разные частоты и без толку. Решил поставить лазерные или PIR датчики(еще не определился). Теперь самый главный вопрос, как в дальнейшем сделать правильно. чтобы если пересекаеш луч на выходе мк появлялся 0 , иначе 1 ну и расстояние хотябы пару метров. Для себя вижу решение таким образом. С одной стороны передатчик как на схеме выше, с другой вот такой приемник. Еще подскажите можно ли модулировать сигнал самим контроллером , чтобы не использовать схему передатчика, а допустим чтобы одни аз ног контроллера давала прерывания на базу транзистора или на прямую на светодиод. Пожалуйста подскажите как правильно сделать. а то с ик датчиками столкнулся впервые. Спасибо
ILYAUL
Oct 28 2011, 14:35
QUOTE (ururur @ Oct 28 2011, 18:26)

на выходе мк появлялся 0 , иначе 1 ну и расстояние хотябы пару метров.
А какие проблемы , что в программе напишите то и появится.
И информация для размышления
Такого рода сенсоры очень дорогие . Уже думал об этом. Спасибо за информацию. Нарисовал вариант схемы барьера на которой думаю остановится. МК буду использовать atmega8 На выход давать программный шим на 36 кгц (осталось только разобратся как это делать). На входе ждать пока не появится 0 (то есть пересеченный луч.). раскритикуйте пожалуйста ) Расстояние чем больше тем лучше (не более 5 метров)
ILYAUL
Oct 28 2011, 15:35
QUOTE (ururur @ Oct 28 2011, 19:00)

Такого рода сенсоры очень дорогие . Уже думал об этом. Спасибо за информацию. Нарисовал вариант схемы барьера на которой думаю остановится. МК буду использовать atmega8 На выход давать программный шим на 36 кгц (осталось только разобратся как это делать). На входе ждать пока не появится 0 (то есть пересеченный луч.). раскритикуйте пожалуйста ) Расстояние чем больше тем лучше (не более 5 метров)
Да вообщем то нормально , только резистор ~330 Ohm на 5 вольт и на анод диода , катод диода на выход MK. ШИМ не нужен, достаточно сброс при совпадении.
тогда заранее извиняюсь перед администрацией что спрошу здесь два вопроса. Как вывести на порты PB0 и PB1 (именно эти) на контроллере atmega16 при работе от внутреннего генератора на 4 мегагерца 36 килогерц. и второй. когда луч будет попадать на tsop на выводе мк хватит опроса if (PIND.1==0) { программа else { ничего не делать }}? Спасибо.
ILYAUL
Oct 28 2011, 16:51
QUOTE (ururur @ Oct 28 2011, 19:51)

тогда заранее извиняюсь перед администрацией что спрошу здесь два вопроса. Как вывести на порты PB0 и PB1 (именно эти) на контроллере atmega16 при работе от внутреннего генератора на 4 мегагерца 36 килогерц. и второй. когда луч будет попадать на tsop на выводе мк хватит опроса if (PIND.1==0) { программа else { ничего не делать }}? Спасибо.
1. Эти выводы не задействованы напрямую таймером , поэтому Вам придётся использовать прерывания и в ручную переключать один из этих пинов для формирования 36 кгц.
2. Смотря какое расстояние будет в итоге. Может и придётся буфер ставить . Соберите на макетке LED и приемник, на выход приёмника 5 метров провода и посмотрите что получится на другом конце
Бленда и объектив(ы) (линзы). Приемник и источник в фокусе.
Led и приемник уже собрал, щас добавлю 5 метров провода. Led подключил к PINB.3 так как он вроде как связан с таймером. Далее сам код для передатчика
#include<mega16.h>
void main (void){
DDRB.3=1;
ASSR=0x00;
TCCR0=0x19;
TCNT0=0x00;
OCR0=110;
while(1);
}
Частота процессора 8 мегагерц. Правильно ли я делаю?
Одно только непонятно, зачем 5 метров провода на выходе датчика.?
длину между датчиком и приемником в месте установки замерял, максимальная 2.5 метра
ILYAUL
Oct 28 2011, 18:54
QUOTE (ururur @ Oct 28 2011, 21:12)

Led и приемник уже собрал, щас добавлю 5 метров провода. Led подключил к PINB.3 так как он вроде как связан с таймером. Далее сам код для передатчика
#include<mega16.h>
void main (void){
DDRB.3=1;
ASSR=0x00;
TCCR0=0x19;
TCNT0=0x00;
OCR0=110;
while(1);
}
Частота процессора 8 мегагерц. Правильно ли я делаю?
Одно только непонятно, зачем 5 метров провода на выходе датчика.?
длину между датчиком и приемником в месте установки замерял, максимальная 2.5 метра
Вы в посте написали 5 метров
ASSR=0x80;
а если между самим датчиком TSOP и самим контроллером будет провод 10 метров допустим. ну чтобы выносить датчик куда либо от самой платы. Рисунок прилагаю
Еще подскажите если при расчете OCR0 получается число 54.5 то округлять к 54 или 55 ?
Что то вы там все мудрите)))
Модулируете передатчик допустим контроллером. На приемнике ловите сигнал и обрабатываете.
Чтобы приемник не "затыкался" постоянной частотой, ее(частоту 36кГц) нужно давать пачками , скажем с периодом 1кГц.
С выхода TSOP у вас будет меандр 1кГц. Вот по наличию этого мендра вы и будите контроллером оценивать присутствие объекта в зоне излучения.
Цитата(adc @ Oct 29 2011, 14:51)

Что то вы там все мудрите)))
Модулируете передатчик допустим контроллером. На приемнике ловите сигнал и обрабатываете.
Чтобы приемник не "затыкался" постоянной частотой, ее(частоту 36кГц) нужно давать пачками , скажем с периодом 1кГц.
С выхода TSOP у вас будет меандр 1кГц. Вот по наличию этого мендра вы и будите контроллером оценивать присутствие объекта в зоне излучения.
Подскажите пожалуйста как давать ее пачками.
#include<mega16.h>
void main (void){
DDRB.3=1;
ASSR=0x80;
TCCR0=0x19;
TCNT0=0x00;
OCR0=110;
while(1);
}
Как я понял в этом варианте будет постоянно 36 кГц давать на ножку 3 порта B. порылся в интернете,ничего не нашел по этому поводу
Собрал вся конструкцию, на atmega16 , на PORTB.3 модулирую сигнал кодом выше, на ИК диод через резистор 100 ом. Принимаю Tsop1836 выводы GND на массу, VCC через 220 ом на питание, OUT на ногу МК PINA.0
Далее направил ик диод на Tsop. Программа состоит в следующем, если луч между ик диодом и TSOP прерывается, то загорается сетодиод на PORTD.1
if (PINA.0==1){
PORTD.1==1;
else{
PORTD.1==0
}
}
Включил, не работает. На сколько я понимаю я не правильно принимаю сигнал. Подскажите что не так
Полностью убежден, что человеку лучше давать удочку, а не рыбу!
Для начала вам надо правильно сформировать сигнал. Я Вам уже писал что приемник начнет "захлебыватся" несущей. Сконцентрируйтесь на правильном источнике сигнала, а потом проконтролируйте наличие сигнала на выходе TSOP. А уж потом беритесь за реализацию программной части на приемнике.
значит из последнего эксперимента получилось вот что. На расстоянии пол метра направлен ик диод на тсоп. Меряю на выходе тсопа напряжение. один конец на выход , другой на + . Показывает 0.03 вольта. Если закрыть ик диод и потом убрать руку то на Tsop Напряжение подпрыгивает до 4.5 вольта и опять 0.03. При изменении расстояния разницы никакой.
To adc. К сожалению я не знаю что такое несущая, пролазил много сайтов, не не наткнулся на то как посылать сигнал пачками, поэтому спрашиваю здесь. Просматривал множество схем ик барьеров, в том числе обсуждений на этом сайте но так и не разобрался. Подскажите пожалуйста что я делаю не так.
ILYAUL
Oct 30 2011, 17:54
Цитата(ururur @ Oct 30 2011, 20:43)

значит из последнего эксперимента получилось вот что. На расстоянии пол метра направлен ик диод на тсоп. Меряю на выходе тсопа напряжение. один конец на выход , другой на + . Показывает 0.03 вольта. Если закрыть ик диод и потом убрать руку то на Tsop Напряжение подпрыгивает до 4.5 вольта и опять 0.03. При изменении расстояния разницы никакой.
To adc. К сожалению я не знаю что такое несущая, пролазил много сайтов, не не наткнулся на то как посылать сигнал пачками, поэтому спрашиваю здесь. Просматривал множество схем ик барьеров, в том числе обсуждений на этом сайте но так и не разобрался. Подскажите пожалуйста что я делаю не так.
36 - это несущая. Вам надо сформировать одиночный импульс длительностью 1ms и заполнить его этой частототой. Bcё делается на одном таймере. Один канал формирует 36 , второй 2ms - 500 гц
В момент положительной или отрицательной длительности импульса разрешить выход 36 кгц
Посмотрите - модулятор в инете
тогда на выходе TSOP получится не постоянная единица, и придется ее обрабатывать?
вот так допустим нельзя пачковать сигнал
TCCR0=0x19;
delay_ms(1);
TCCR0=0x00;
delay_ms(1);
Вообще в том варианте когда пересекаешь луч , при прыжке на ножке мк все работает(цикл запускается), но просто не думаю то так надежно и правильно
Я программы писать не умею, поэтому по коду ничего не скажу.
Но по части железа... я бы сделал синхронный детектор, например как на приложенном рисунке.
На U1.a,U1,b собран мультивибратор. Он подает на LED импульсы, и эти же импульсы открывают аналоговый ключ U3. Поскольку такой детектор пропускает не только импульсы основной частоты, но и все кратные гармоники, необходим аналоговый полосовой фильтр на операционнике U2a, U2b.
U1 - любой логический элемент, например 74HC02, 74HC03, 74HC04, и т д
U3 - например FST3126
U2 - операционник работающий от 5V и подходящий по частоте.
Удачи!
ILYAUL
Oct 30 2011, 18:54
Цитата(ururur @ Oct 30 2011, 22:05)

Вообще в том варианте когда пересекаешь луч , при прыжке на ножке мк все работает(цикл запускается), но просто не думаю то так надежно и правильно
1. Постоянный уровенть в системах охраны - это плохо - всегда можно обойти .
2. Импульсный сигнал - постоянная проверка на "вшивость" самой системы и посчитайте с какой скоростью человек пройдет этот барьер по сравнению с пулей. Каким сигналом можно пренебречь ,а на какой отреагировать?
Цитата(ILYAUL @ Oct 31 2011, 01:54)

1. Постоянный уровенть в системах охраны - это плохо - всегда можно обойти .
2. Импульсный сигнал - постоянная проверка на "вшивость" самой системы и посчитайте с какой скоростью человек пройдет этот барьер по сравнению с пулей. Каким сигналом можно пренебречь ,а на какой отреагировать?
Если бы уровень был постоянный( Я считал что пока ик диод светит на тсоп , на выходе тсопа будет постоянное напряжение, только перекрыл ик диод, на выходе тсопа 0. Даже если быстро прийти через луч хватит чтобы запустить цикл. а получается что на ножке есть лог единица только когда пересек луч и потом он опять попадает на тсоп.
На счет проверки на вшивость не понял, если не сложно объясните по подробнее
ILYAUL
Oct 30 2011, 20:27
Цитата(ururur @ Oct 30 2011, 23:06)

Если бы уровень был постоянный( Я считал что пока ик диод светит на тсоп , на выходе тсопа будет постоянное напряжение, только перекрыл ик диод, на выходе тсопа 0. Даже если быстро прийти через луч хватит чтобы запустить цикл. а получается что на ножке есть лог единица только когда пересек луч и потом он опять попадает на тсоп.
На счет проверки на вшивость не понял, если не сложно объясните по подробнее
А Вы всё таки попробуйте мерить относительно земли
Вшивость - пока данные от входа совпадают с данными на выходе - система работает правильно ( утририровано к Вашему случаю)
если мерять относительно земли то постоянно 4.8 вольта. насчет вшивости отдаленно понимаю так как если светить пультом от телика то идут сбои
теперь для нормальной работы как я понимаю нужно 2 вещи. Отсылать сигнал с ик пачками а не постоянно. Разобраться как принимать сигнал пачками и обрабатывать
ILYAUL
Oct 30 2011, 20:40
Цитата(ururur @ Oct 31 2011, 00:32)

если мерять относительно земли то постоянно 4.8 вольта. насчет вшивости отдаленно понимаю так как если светить пультом от телика то идут сбои
т.е при перекрытии датчика , на выходе tsop нет ~0? Тогда система не работает
Завтра еще раз проверю ,спасибо за информацию(напряжение мерял на ножке мк с подключенным к ней тсопом)
Может стоит использовать АЦП. Мерять если напряжение на ножке упадет меньше нужного то запускать цикл. Сейчас GND тсопа подключен к массе, питание через 110 ом на + , выход через 100 ом на ножку МК.
ILYAUL
Oct 30 2011, 21:01
Цитата(ururur @ Oct 31 2011, 00:49)

Может стоит использовать АЦП.
Не стоит. Посмотрите , что у Вас на выходе при освещёном tsop и при закрытом
И внимательно изучите DS на Ваш tsop , что бы правильно сформировать посылку
У нас уже начало 5 утра так что завтра проснусь и все измерю...
ILYAUL
Oct 30 2011, 21:18
В частности там говорится , что непрерывный сигнал (для примера взят 38 кгц) блокируется TSOP. Да и таймер скорее не подойдёт - легче всё сформировать USART и сравнивать проще
Эх, какая то туманность андромеды..)))
Выход тсоп с открытым коллектором и сигал на выходе инверсный.. т.е. когда есть сигнал то он (выход) притянут к земле.
На счет пульта. Сигнал будет скакать, там же данные прут)))
Итак, попробуем на пальцах:
Постоянная составляющая 36кГц, грубо говоря, эта та частота которой нужно управлять. Включил- выключил, и если это делать быстро(1000 раз в секунду), то у вас получится промодулированная частота (пачками).
Если эту частоту не модулировать то приемник воспринимает ее как помеху и фильтрует.
На выходе тсопа вы контролируете уже не 36кГц, а 1кГц(наша модулирующая частота). Этого достаточно чтобы обнаружить объект проходящий на достаточно большой скорости)))
Цитата(adc @ Oct 31 2011, 11:33)

Эх, какая то туманность андромеды..)))
Выход тсоп с открытым коллектором и сигал на выходе инверсный.. т.е. когда есть сигнал то он (выход) притянут к земле.
На счет пульта. Сигнал будет скакать, там же данные прут)))
Итак, попробуем на пальцах:
Постоянная составляющая 36кГц, грубо говоря, эта та частота которой нужно управлять. Включил- выключил, и если это делать быстро(1000 раз в секунду), то у вас получится промодулированная частота (пачками).
Если эту частоту не модулировать то приемник воспринимает ее как помеху и фильтрует.
На выходе тсопа вы контролируете уже не 36кГц, а 1кГц(наша модулирующая частота). Этого достаточно чтобы обнаружить объект проходящий на достаточно большой скорости)))
Подскажите пожалуйста что мне добавить в код чтобы отсылать эту частоту 1000 раз в секунду
Меряю между выходом тсоп и массой. Луч направлен , показывает 4.6 вольта. если перекрыть рукой датчик то ничего не меняется когда убираеш руку то напряжение падает до 0 и опять поднимается до 4.6
ILYAUL
Oct 31 2011, 09:28
Цитата(ururur @ Oct 31 2011, 13:06)

Подскажите пожалуйста что мне добавить в код чтобы отсылать эту частоту 1000 раз в секунду
Меряю между выходом тсоп и массой. Луч направлен , показывает 4.6 вольта. если перекрыть рукой датчик то ничего не меняется когда убираеш руку то напряжение падает до 0 и опять поднимается до 4.6
За секунду лично я проскочу Ваш барьер. Мировой рекорд 100м - 9,58 сек .
Вам уже не однократно написали как это делается.
Добавил посылку пакетами.
volatile int modulation=200;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(modulation<20) //длина пачки
{
PORTB.3=1;}
else
{
PORTB.3=0;}
if(modulation<200) //для счета длины посылки
{modulation++;}
else
{modulation=0;}
TCNT0 = 0;
}
работает так-же((
Цитата(ILYAUL @ Oct 31 2011, 16:28)

За секунду лично я проскочу Ваш барьер. Мировой рекорд 100м - 9,58 сек .
Вам уже не однократно написали как это делается.
Извените, но до меня не доходит как правильно сделать
ILYAUL
Oct 31 2011, 09:56
Цитата(ururur @ Oct 31 2011, 13:46)

Извените, но до меня не доходит как правильно сделать
Изучите DS там расписаны времена , в том числе и между посылками. А также приведён тестовый сигнал
Я уже изучал, видел что там несколько вариантов по времени посылки(на английском понимаю очень плохо). Но я не понимаю как в коде получить эти задержки между посылками.
Насколько я понимаю тсоп не будет работать как ИК транзистор. Тоесть если сигнал есть он пропускает (тсоп подает на out напряжение), если сигнал прервался то не пропскает(в случае тсопа появляется 0 на out ) Я прав? если да тогда работа моего барьера нормальная, осталось только пачковать сигнал чтобы ловить предметы с большей скоростью проходящие через луч.
Сейчас посылаю пачками сигнал вот так
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCCR0=0x19;
delay_ms(20)
TCCR0=0x00;
delay_ms(20)
}
ILYAUL
Oct 31 2011, 10:38
Вот здесь всё есть
Ну судя по графику я прав. Теперь дело за малым.)
Цитата(ururur @ Oct 31 2011, 14:27)

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCCR0=0x19;
delay_ms(20)
TCCR0=0x00;
delay_ms(20)
}
Уж сколько раз твердили миру - нельзя в прерываниях звать delay_ms (и прочие разные delay)!
Цитата(XVR @ Oct 31 2011, 17:46)

Уж сколько раз твердили миру - нельзя в прерываниях звать delay_ms (и прочие разные delay)!
То есть вариант там где было Modulation более правильный?
Цитата(XVR @ Oct 31 2011, 14:46)

Уж сколько раз твердили миру - нельзя в прерываниях звать delay_ms (и прочие разные delay)!
Совсем-совсем-никогда?
В принципе мой барьер сейчас ловит, если я прохожу, загорается светодиод. Конечно если быстро пронести что нибудь перекрыв луч то не среагирует то мне этого и не нужно. Остановился на коде который добавил во вложении в связи с отсутствием понимания графиков....) Если можно покритикуйте код. Спасибо
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.