ИК - приемник

ИК - приемник

Сообщение CiSi » 12 дек 2009, 20:51

Как узнать что за ик приемник и его распиновку? С виду похож на такой:http://chipdip.ru/product0/144064998.aspx только а металлической рубашке.
И как элементароно заставить его работать?
Код: Выделить всё
#include <mega8.h>

void main()
{
DDRC = 0x88;
DDRD = 0x40;

if (PINC.0 == 0)
    PORTC.0 = 1; 
  else
    PORTC.5 = 1;

Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение yak-40 » 12 дек 2009, 23:01

1. Подключить питание согласно даташита.
2. Подключить к выходу тестер/осцилограф/светодиод.
3. Посветить на него пультом от телевизора/видеомагнитофона/CD
4. Увидеть результат на тестере/осцилографе/светодиоде.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: ИК - приемник

Сообщение CiSi » 13 дек 2009, 00:18

Даташита нет, по этом и незнаю куда подключается питание, но сейчас это вроде нащупал.
Так как не знаю что за ик приюмник по этому и не смог найти на него доку.
После долгих мучений на выходе приемника всетаки появился высокий уровень.
Свечу на него пультами от тв, сд, и т.д. но приемник не как не реагирует. :(
что то опять не так :(
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение yak-40 » 13 дек 2009, 00:26

Может частота не та?
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: ИК - приемник

Сообщение CiSi » 13 дек 2009, 00:42

еще помучился, и кое что обнаружил.
питание ~5В, начинаю включать кнопки пультов и напряшение на выходе приемника падает до 3.7В, но этого достаточно много для включения микроконтроллером светодиода.
предел понижения напряжения зависит от частоты (наверное), так как использую один пульт - одно напряжение, другой - другое.
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение contr » 14 дек 2009, 15:20

В TSOP спецом АРУ стоит и ограничитель. Девайс принимает код (последовательность нулей и единиц) пульта, а не занимается измерением уровня сигнала.
Пульт передает коды с паузами между посылками (они разные в разных пультах, как и сами коды), вот и получается среднее напряжение порядка 3,7В.
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don

Re: ИК - приемник

Сообщение CiSi » 14 дек 2009, 15:59

Так как же мне тогда с помощью мк поймать сигнал с TSOP?
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение contr » 14 дек 2009, 16:18

Что TSOP что-то принял МК узнает по появлению "0" (логический ноль) на его выходе. Примерно так
Код: Выделить всё
while(tsop==1); // ждем "0"
led=1; // зажигаем индикацию

Вариант ес-но не единственный. Можно прерывание по "0" на ногу повесить. Можно интегратор на выход ТСОПа и АЦП/компаратор задействовать, если уровень (вернее качество прохождения сигнала) интересен. Можно вместо пульта свой непрерывный сигнал подать.
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don

Re: ИК - приемник

Сообщение CiSi » 14 дек 2009, 17:07

Сделал вот так:
Код: Выделить всё
#include <mega8.h>
#include <delay.h>

void main()
{
DDRC = 0xff;
DDRD = 0x70;

while(PIND.0 == 1); // ждем "0"
PORTC.5 = 1; // зажигаем индикацию



При включении питания диод загорается, а при нажатии на кнопки пульта не чего не происходит, хотя он должен гаснуть.
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение Myp » 14 дек 2009, 18:30

проверяется элементарно
на сигнальную ногу вешается светодиодик и светится пультом
если работает то светодиод радостно моргает
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: ИК - приемник

Сообщение contr » 14 дек 2009, 18:51

При включении питания диод загорается,

Вероятно Вы его забыли выключить прежде чем ТСОП проверять
Избавить от этого может небольшое изменение кода
Код: Выделить всё
while(1)// крутимся в цикле
{
if(PIND.0 == 0) // пришел "0"
{
PORTC.5 = 1; // зажигаем индикацию
delay(1..2sec); // чтобы успеть заметить
}
PORTC.5 = 0; // гасим
}// конец цикла
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don

Re: ИК - приемник

Сообщение CiSi » 14 дек 2009, 23:07

>contr
СПС :)
Вот счас заработало (хотя я и пробовал что то пордобное написать), только иногда светодиод самопроизвольно загорается - помехи наверное какие нибудь.
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение contr » 14 дек 2009, 23:43

только иногда светодиод самопроизвольно загорается - помехи наверное какие нибудь.

Чтобы такого не происходило можно подключить выход ТСОПа через 1..10к и повесить конденсатор 0,1мкф на МК.
Или решить проблему программно повторной проверкой.
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don

Re: ИК - приемник

Сообщение CiSi » 22 дек 2009, 22:18

Теперь возник такой вопрос: как мне задать в СVAVR частоту ИК диода, частота кварца 16МГц?
на сегодняшний момент имеем код:
Код: Выделить всё
#include <mega8.h>
#include <delay.h>

void main()
{
DDRC = 0xff;
DDRD = 0x02;
DDRB = 0xff;
PORTB = 0x00;

PORTD.1 = 1;
while(1){ // цикл

if (PIND.0 == 0){ // пришел "0"
PORTC.5 = 1;  // зажигаем индикацию
delay_ms(100); // чтобы успеть заметить
}
PORTC.5 = 0; // гасим
}}// конец цикла

Блин ппц, около года ни чего неписал (в смысле программы) сейчас тяжеловато, да и сессия - ппц! :(
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: ИК - приемник

Сообщение contr » 23 дек 2009, 15:54

Еще легче
Код: Выделить всё
while(1)// цикл
{
PORTC.6 = 1;  // зажигаем ИК диод
delay_us(13); // половинка периода
PORTC.6 = 0; // гасим
delay_us(13);
}

На выходе получим меандр с частотой ~38kHz. Эту частоту нужно подогнать под используемый TSOP.
Более продвинутый вариант - использование модуля PWM. Тогда основная прога не отвлекется на обслуживание ИК излучателя и мощность программно менять проще
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don

След.

Вернуться в Сенсорика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0