ipf 0 28 октября, 2011 Опубликовано 28 октября, 2011 · Жалоба тогда заранее извиняюсь перед администрацией что спрошу здесь два вопроса. Как вывести на порты PB0 и PB1 (именно эти) на контроллере atmega16 при работе от внутреннего генератора на 4 мегагерца 36 килогерц. и второй. когда луч будет попадать на tsop на выводе мк хватит опроса if (PIND.1==0) { программа else { ничего не делать }}? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 28 октября, 2011 Опубликовано 28 октября, 2011 · Жалоба тогда заранее извиняюсь перед администрацией что спрошу здесь два вопроса. Как вывести на порты PB0 и PB1 (именно эти) на контроллере atmega16 при работе от внутреннего генератора на 4 мегагерца 36 килогерц. и второй. когда луч будет попадать на tsop на выводе мк хватит опроса if (PIND.1==0) { программа else { ничего не делать }}? Спасибо. 1. Эти выводы не задействованы напрямую таймером , поэтому Вам придётся использовать прерывания и в ручную переключать один из этих пинов для формирования 36 кгц. 2. Смотря какое расстояние будет в итоге. Может и придётся буфер ставить . Соберите на макетке LED и приемник, на выход приёмника 5 метров провода и посмотрите что получится на другом конце Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 28 октября, 2011 Опубликовано 28 октября, 2011 · Жалоба Бленда и объектив(ы) (линзы). Приемник и источник в фокусе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ipf 0 28 октября, 2011 Опубликовано 28 октября, 2011 · Жалоба 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 0 28 октября, 2011 Опубликовано 28 октября, 2011 · Жалоба 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ipf 0 28 октября, 2011 Опубликовано 28 октября, 2011 · Жалоба а если между самим датчиком TSOP и самим контроллером будет провод 10 метров допустим. ну чтобы выносить датчик куда либо от самой платы. Рисунок прилагаю Еще подскажите если при расчете OCR0 получается число 54.5 то округлять к 54 или 55 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adc 0 29 октября, 2011 Опубликовано 29 октября, 2011 · Жалоба Что то вы там все мудрите))) Модулируете передатчик допустим контроллером. На приемнике ловите сигнал и обрабатываете. Чтобы приемник не "затыкался" постоянной частотой, ее(частоту 36кГц) нужно давать пачками , скажем с периодом 1кГц. С выхода TSOP у вас будет меандр 1кГц. Вот по наличию этого мендра вы и будите контроллером оценивать присутствие объекта в зоне излучения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ipf 0 29 октября, 2011 Опубликовано 29 октября, 2011 · Жалоба Что то вы там все мудрите))) Модулируете передатчик допустим контроллером. На приемнике ловите сигнал и обрабатываете. Чтобы приемник не "затыкался" постоянной частотой, ее(частоту 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. порылся в интернете,ничего не нашел по этому поводу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ipf 0 29 октября, 2011 Опубликовано 29 октября, 2011 (изменено) · Жалоба Собрал вся конструкцию, на 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 } } Включил, не работает. На сколько я понимаю я не правильно принимаю сигнал. Подскажите что не так Изменено 29 октября, 2011 пользователем ururur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adc 0 30 октября, 2011 Опубликовано 30 октября, 2011 · Жалоба Полностью убежден, что человеку лучше давать удочку, а не рыбу! Для начала вам надо правильно сформировать сигнал. Я Вам уже писал что приемник начнет "захлебыватся" несущей. Сконцентрируйтесь на правильном источнике сигнала, а потом проконтролируйте наличие сигнала на выходе TSOP. А уж потом беритесь за реализацию программной части на приемнике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ipf 0 30 октября, 2011 Опубликовано 30 октября, 2011 · Жалоба значит из последнего эксперимента получилось вот что. На расстоянии пол метра направлен ик диод на тсоп. Меряю на выходе тсопа напряжение. один конец на выход , другой на + . Показывает 0.03 вольта. Если закрыть ик диод и потом убрать руку то на Tsop Напряжение подпрыгивает до 4.5 вольта и опять 0.03. При изменении расстояния разницы никакой. To adc. К сожалению я не знаю что такое несущая, пролазил много сайтов, не не наткнулся на то как посылать сигнал пачками, поэтому спрашиваю здесь. Просматривал множество схем ик барьеров, в том числе обсуждений на этом сайте но так и не разобрался. Подскажите пожалуйста что я делаю не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 30 октября, 2011 Опубликовано 30 октября, 2011 · Жалоба значит из последнего эксперимента получилось вот что. На расстоянии пол метра направлен ик диод на тсоп. Меряю на выходе тсопа напряжение. один конец на выход , другой на + . Показывает 0.03 вольта. Если закрыть ик диод и потом убрать руку то на Tsop Напряжение подпрыгивает до 4.5 вольта и опять 0.03. При изменении расстояния разницы никакой. To adc. К сожалению я не знаю что такое несущая, пролазил много сайтов, не не наткнулся на то как посылать сигнал пачками, поэтому спрашиваю здесь. Просматривал множество схем ик барьеров, в том числе обсуждений на этом сайте но так и не разобрался. Подскажите пожалуйста что я делаю не так. 36 - это несущая. Вам надо сформировать одиночный импульс длительностью 1ms и заполнить его этой частототой. Bcё делается на одном таймере. Один канал формирует 36 , второй 2ms - 500 гц В момент положительной или отрицательной длительности импульса разрешить выход 36 кгц Посмотрите - модулятор в инете Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ipf 0 30 октября, 2011 Опубликовано 30 октября, 2011 (изменено) · Жалоба тогда на выходе TSOP получится не постоянная единица, и придется ее обрабатывать? вот так допустим нельзя пачковать сигнал TCCR0=0x19; delay_ms(1); TCCR0=0x00; delay_ms(1); Вообще в том варианте когда пересекаешь луч , при прыжке на ножке мк все работает(цикл запускается), но просто не думаю то так надежно и правильно Изменено 30 октября, 2011 пользователем ururur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Michael58 2 30 октября, 2011 Опубликовано 30 октября, 2011 · Жалоба Я программы писать не умею, поэтому по коду ничего не скажу. Но по части железа... я бы сделал синхронный детектор, например как на приложенном рисунке. На U1.a,U1,b собран мультивибратор. Он подает на LED импульсы, и эти же импульсы открывают аналоговый ключ U3. Поскольку такой детектор пропускает не только импульсы основной частоты, но и все кратные гармоники, необходим аналоговый полосовой фильтр на операционнике U2a, U2b. U1 - любой логический элемент, например 74HC02, 74HC03, 74HC04, и т д U3 - например FST3126 U2 - операционник работающий от 5V и подходящий по частоте. Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 30 октября, 2011 Опубликовано 30 октября, 2011 · Жалоба Вообще в том варианте когда пересекаешь луч , при прыжке на ножке мк все работает(цикл запускается), но просто не думаю то так надежно и правильно 1. Постоянный уровенть в системах охраны - это плохо - всегда можно обойти . 2. Импульсный сигнал - постоянная проверка на "вшивость" самой системы и посчитайте с какой скоростью человек пройдет этот барьер по сравнению с пулей. Каким сигналом можно пренебречь ,а на какой отреагировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться