|
Ик барьер, помогите |
|
|
|
Oct 27 2011, 21:40
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
подскажите пожалуйста, решил сделать специфический ик барьер. но расстояние от ик диода до ик транзистора оказалось не более 30 сантиметров, для нормальной работы а нужно 2 метра. Как можно модернизировав только передатчик увеличить расстояние. Ик диод и транзистор определить не могу. Ик диод как от пульта для телевизора. Транзистор в черном стекле. И диод и транзистор 5мм если это поможет. смысл как и в любом случае, если прерывается луч, то на ножке контроллера логический ноль. пожалуйста подскажите дельным советом. рассматриваю вариант установки 1ватного ик диода , но стоит такой дороговато.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
(1 - 54)
|
Oct 28 2011, 08:42
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

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

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

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

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
QUOTE (ururur @ Oct 28 2011, 18:26)  на выходе мк появлялся 0 , иначе 1 ну и расстояние хотябы пару метров. А какие проблемы , что в программе напишите то и появится. И информация для размышления
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Oct 28 2011, 15:00
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Такого рода сенсоры очень дорогие . Уже думал об этом. Спасибо за информацию. Нарисовал вариант схемы барьера на которой думаю остановится. МК буду использовать atmega8 На выход давать программный шим на 36 кгц (осталось только разобратся как это делать). На входе ждать пока не появится 0 (то есть пересеченный луч.). раскритикуйте пожалуйста ) Расстояние чем больше тем лучше (не более 5 метров)
Сообщение отредактировал ururur - Oct 28 2011, 15:06
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 28 2011, 19:29
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
а если между самим датчиком TSOP и самим контроллером будет провод 10 метров допустим. ну чтобы выносить датчик куда либо от самой платы. Рисунок прилагаю Еще подскажите если при расчете OCR0 получается число 54.5 то округлять к 54 или 55 ?
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 29 2011, 08:37
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Цитата(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. порылся в интернете,ничего не нашел по этому поводу
|
|
|
|
|
Oct 29 2011, 11:23
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Собрал вся конструкцию, на 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 } }
Включил, не работает. На сколько я понимаю я не правильно принимаю сигнал. Подскажите что не так
Сообщение отредактировал ururur - Oct 29 2011, 12:03
|
|
|
|
|
Oct 30 2011, 17:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(ururur @ Oct 30 2011, 20:43)  значит из последнего эксперимента получилось вот что. На расстоянии пол метра направлен ик диод на тсоп. Меряю на выходе тсопа напряжение. один конец на выход , другой на + . Показывает 0.03 вольта. Если закрыть ик диод и потом убрать руку то на Tsop Напряжение подпрыгивает до 4.5 вольта и опять 0.03. При изменении расстояния разницы никакой.
To adc. К сожалению я не знаю что такое несущая, пролазил много сайтов, не не наткнулся на то как посылать сигнал пачками, поэтому спрашиваю здесь. Просматривал множество схем ик барьеров, в том числе обсуждений на этом сайте но так и не разобрался. Подскажите пожалуйста что я делаю не так. 36 - это несущая. Вам надо сформировать одиночный импульс длительностью 1ms и заполнить его этой частототой. Bcё делается на одном таймере. Один канал формирует 36 , второй 2ms - 500 гц В момент положительной или отрицательной длительности импульса разрешить выход 36 кгц Посмотрите - модулятор в инете
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Oct 30 2011, 18:41
|
Знающий
   
Группа: Свой
Сообщений: 820
Регистрация: 12-05-08
Из: Israel
Пользователь №: 37 440

|
Я программы писать не умею, поэтому по коду ничего не скажу. Но по части железа... я бы сделал синхронный детектор, например как на приложенном рисунке. На U1.a,U1,b собран мультивибратор. Он подает на LED импульсы, и эти же импульсы открывают аналоговый ключ U3. Поскольку такой детектор пропускает не только импульсы основной частоты, но и все кратные гармоники, необходим аналоговый полосовой фильтр на операционнике U2a, U2b. U1 - любой логический элемент, например 74HC02, 74HC03, 74HC04, и т д U3 - например FST3126 U2 - операционник работающий от 5V и подходящий по частоте. Удачи!
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 30 2011, 19:06
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Цитата(ILYAUL @ Oct 31 2011, 01:54)  1. Постоянный уровенть в системах охраны - это плохо - всегда можно обойти . 2. Импульсный сигнал - постоянная проверка на "вшивость" самой системы и посчитайте с какой скоростью человек пройдет этот барьер по сравнению с пулей. Каким сигналом можно пренебречь ,а на какой отреагировать? Если бы уровень был постоянный( Я считал что пока ик диод светит на тсоп , на выходе тсопа будет постоянное напряжение, только перекрыл ик диод, на выходе тсопа 0. Даже если быстро прийти через луч хватит чтобы запустить цикл. а получается что на ножке есть лог единица только когда пересек луч и потом он опять попадает на тсоп. На счет проверки на вшивость не понял, если не сложно объясните по подробнее
|
|
|
|
|
Oct 31 2011, 09:06
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Цитата(adc @ Oct 31 2011, 11:33)  Эх, какая то туманность андромеды..))) Выход тсоп с открытым коллектором и сигал на выходе инверсный.. т.е. когда есть сигнал то он (выход) притянут к земле. На счет пульта. Сигнал будет скакать, там же данные прут))) Итак, попробуем на пальцах: Постоянная составляющая 36кГц, грубо говоря, эта та частота которой нужно управлять. Включил- выключил, и если это делать быстро(1000 раз в секунду), то у вас получится промодулированная частота (пачками). Если эту частоту не модулировать то приемник воспринимает ее как помеху и фильтрует.
На выходе тсопа вы контролируете уже не 36кГц, а 1кГц(наша модулирующая частота). Этого достаточно чтобы обнаружить объект проходящий на достаточно большой скорости))) Подскажите пожалуйста что мне добавить в код чтобы отсылать эту частоту 1000 раз в секунду Меряю между выходом тсоп и массой. Луч направлен , показывает 4.6 вольта. если перекрыть рукой датчик то ничего не меняется когда убираеш руку то напряжение падает до 0 и опять поднимается до 4.6
|
|
|
|
|
Oct 31 2011, 09:46
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Добавил посылку пакетами. 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 сек . Вам уже не однократно написали как это делается. Извените, но до меня не доходит как правильно сделать
|
|
|
|
|
Oct 31 2011, 10:48
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Цитата(XVR @ Oct 31 2011, 17:46)  Уж сколько раз твердили миру - нельзя в прерываниях звать delay_ms (и прочие разные delay)! То есть вариант там где было Modulation более правильный?
|
|
|
|
|
Oct 31 2011, 11:07
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
В принципе мой барьер сейчас ловит, если я прохожу, загорается светодиод. Конечно если быстро пронести что нибудь перекрыв луч то не среагирует то мне этого и не нужно. Остановился на коде который добавил во вложении в связи с отсутствием понимания графиков....) Если можно покритикуйте код. Спасибо
Прикрепленные файлы
code.txt ( 735 байт )
Кол-во скачиваний: 39
|
|
|
|
|
Oct 31 2011, 11:43
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Tanya @ Oct 31 2011, 14:53)  Совсем-совсем-никогда? Иногда можно, но у того, кто понимает 'когда можно', таких вопросов не возникает  Цитата(ururur @ Oct 31 2011, 15:07)  Если можно покритикуйте код. В коде отсутствует кусок main'а if внутри while'а явно неправильный (компилятор должен был обругаться) Уберите delay из прерывания. Например так: Код interrupt [TIM0_OVF] void timer0_ovf_isr(void) { static char v=0x19; TCCR0=v; v^=0x19; }
|
|
|
|
|
Oct 31 2011, 13:07
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 23-09-11
Из: Вьетнам
Пользователь №: 67 350

|
Цитата(XVR @ Oct 31 2011, 19:41)  В моем варианте по каждому тику таймера 0 происходит включение (а по следующему - выключение) посылки Если на выходе нужен не меандр (заполненный 36KHz), то нужен дополнительный счетчик (внутри прерывания) Мне как раз и нужен меандр 36 кгц. Спаибо А сколько раз в секунду тикает таймер?
Сообщение отредактировал ururur - Oct 31 2011, 13:07
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|