Форум myROBOT.ru » Шаг за шагом » Делаем роботов » ИК-датчик на TSOP

Страниц (2): [1] 2 »
 

1. SynteZ - 03 Ноября, 2007 - 18:12:44 - перейти к сообщению
Собрал следующий датчик. Обвязка согласно даташиту на приёмник. Проблема в том, что TSOP работает не правильно, не реагирует на правильный сигнал (от пульта, от модулированного сигнала на ИК-диоде). Есть подозрение, что TSOP паленный... Может дадите советы, возможно есть какие-то подводные камни, моменты на которые я не обратил внимание.
2. VCOM - 06 Ноября, 2007 - 23:01:24 - перейти к сообщению
У тебя схема какая-то неадекватная получилась Улыбка Во первых LED у тебя наоборот нарисован, так он никогда не загорится. Потом то-же самое с IR-LED он катодом должен быть подключен к коллектору, а анод через последовательный резистор к +5 В. Я так понимаю микросхема это что-то вроде AT90S2313? Если так то, между базой и выходом порта должен быть резистор... Ну и я уж не помню есть у TSOP на выходе подтягивающий резистор или нет, на всякий пожарный можно с выхода TSOP резистор к + 5 В, ну или в контроллере подтягивающий резистор включи. Воот, тогда чего-то можно будет поэкспериментировать Улыбка
3. magdanoz - 04 Декабря, 2007 - 22:19:24 - перейти к сообщению
Я думаю, что не надо задавать частоту работы ИК-датчика путем программирования! Это делает программу намного сложнее! (По-моему скромному мнению Улыбка)
Надо немного переработать схему так, чтобы частота задавалась от самой схемы... Например - на ИС 555. Это мои личные предпочитания, но по-моему так проще. Улыбка

>>Зы:. Извините за ошибки (если их есть!)... Но я из Болгарии! Улыбка
4. Necto - 13 Декабря, 2007 - 16:57:39 - перейти к сообщению
Приветствую. Проблема похожа, поэтому пишу в этой теме.
Спаял схему как в http://parts.roboclub.ru/index.shtml?ik, только вместо Tiny поставил Atmeg(она же - главный мозг для будущей остальной перифирии).
Так вот: мигаю ИК диодом, пытаюсь поймать TSOP1738 Не ловится, даже при касании линз. ИК светодиод моргает - видно через камеру на телефоне, но частоту померять не могу. Если насильно установить 0 на выходе TSOP-а (замкнуть "сигнальную" ножку и землю), датчик срабатывает - светодиод(индикатор) гаснет. Ни на какие из имеющихся в доме пультов не реагирует.
Частоту генерирую так:

CODE:


#define FCPU = 1000000UL
//...
int per = 1000000/38000;
//...
for (int i = 0; i < 19; ++i)
{
PORTC |= _BV(PC5);
_delay_us (per);
PORTC &= ~_BV(PC5);
_delay_us (per);
}
//...

Подскажите как проверить TSOP, и в чём ещё может быть заквоздка?
Если надо, могу привести весь исходник.
5. VCOM - 18 Декабря, 2007 - 13:17:42 - перейти к сообщению
Вы просто поймите что TSOP это не просто фототранзистор, это достаточно сложное устройство. Внутри нее находится фильтр на частоту 38 КГц, и реагировать на незнаю какую частоту она не будет. Попробуйте найти пульт стандарта RC5 с частотой 38 КГц. Ну или Настройте ваше мигание точно на частоту 38 КГц. Используйте для этого таймер с прерыванием. И промодулируйте ваш сигнал 0 и 1. Т.е к примеру 100 мсек генерируем 38 КГц, 100 мсек не генерируем, вот тогда и смотрите. А так от балды она наврядли заработает...
6. magdanoz - 22 Января, 2008 - 14:34:07 - перейти к сообщению
Дешевая альтернатива TSOP-а - RPM71xx. Например: TSOP1740 = RPM7140 и т.д... В Болгарии именно нее используем в качестве ИК-локатора! Улыбка
А про схему: У ATmega8 есть один 8-битный таймер. У АТmеga88 - их два. Нужно соединить вывод "Сигнал" TSOP-а с этим таймером, и у нас будут 40 kHZ Улыбка Определять частоту датчика программой, по-моему, не надо!
Другая альтернатива таймеров - 555 (вывод 3)...

Удачи всем!
7. gramozeka - 27 Января, 2008 - 14:04:17 - перейти к сообщению
генератор на контроллере сделать очень просто и основной программе он мешать не будет. Прерывания не нужны. И сделать это можно на любом современном контроллере. просто запускаешь ШИМ на нужной частоте и все.
8. Tranzistor - 04 Февраля, 2008 - 02:49:52 - перейти к сообщению
Не понимаю не в себе все ищете какие то сложные пути реализации генератора для мигания ИК-диодов, какие то проги пишите, микрухи типа-555 юзаете, а спрашивается зачем? Ведь можно намного проще все реализовать....

Начнем с начала. ГЕНЕРАТОР: для этого нам понадобиться микруха К561ЛА7 (ее можно приобрести на бомжатнике за копейкиПодмигивающий ), конденсатор на - 1нФ, пару резисторов - 12К, и два потенциометра на 10К и 3,3К. Теперь собираем на двух логических элементах микрухи генератор где РЦ цепочка состоит из 1нФ и последовательно соединенных резисторах 12К и 10К, остальные два элемента запаралелим - они будут выполнять нагрузочную функцию, потенциометром 3,3К регулируем интенсивность свечения ИК-диода. Схема работает в диапазоне приблезительно 36КГц что подходит для ИК-приемника TSOP1736, для других ИК-приемников методом подстройки 10К можно подогнать частоту. Замечание TSOP17хх имеют очень хорошую чуствительность - заводом расчитано работать на расстоянии до 35 метров и для ИК-барьера на ваших конструкциях вся комната будет одним сплошным препядствием, поэтому надо экспериментально подбирать частоту(10К) и интенсивность(3,3К), разобраться во всем вам поможет даташит на TSOP17хх (в особенности график-Figure 1. Frequency Dependence of Responsivity). Что ж удачных экспериментов, возникнут вопросы пишите Улыбка

Транзистор рулит Круто!
9. VCOM - 04 Февраля, 2008 - 12:12:51 - перейти к сообщению
Ну нашел то-же простой путь, или сидеть ноги у микросхемы паять, а потом какие-то резисторы крутить, или просто по клаве стучать, а потом прогу заливать... Зы а кстати зачем у нее на выходе 2 элемента и-не параллельно включены? И не проще ли ваще полевичок на управление светодиодом поставить, а генератор на 2х 74lvc1g04 собрать Улыбка)) Ну я б лично так сделал, и влезло бы все это в 1 см квадратный Улыбка
10. Tranzistor - 04 Февраля, 2008 - 14:06:24 - перейти к сообщению
Спору нет,Закатывать глаза может для вас это и проще, прогу набить или достать 74lvc1g04. Но я ориентировался на начинающих роботостроителей, которым МК еще не по зубам и например я живу в Закарпатье, вроде бы центр европы, а достать детали проблематично... делайте выводы.

P.S. Вопрос, как вы от МК добиваетесь нужной частоты, ведь если она соответствует той, на которой работает TSOP17хх, то даже при минимальной интенсивности свечения ИК-диода, ИК-барьер будет видеть преграду на расстоянии в 0,5м минимум (проверено на практике). Ведь не проще минуту потратить для того что бы "какие-то резисторы крутить", чем подбирать частоту програмно.
Цитата:
Зы а кстати зачем у нее на выходе 2 элемента и-не параллельно включены? И не проще ли ваще полевичок на управление светодиодом поставить,

А собсно зачем для нескольких ИК-диодов тратиться на полевичок, ведь нам не нужна максимальная отдача от него.


Цитата:
Ну я б лично так сделал, и влезло бы все это в 1 см квадратный


А все таки немного места занимаетУлыбка
11. VCOM - 04 Февраля, 2008 - 14:57:39 - перейти к сообщению
Цитата:
P.S. Вопрос, как вы от МК добиваетесь нужной частоты, ведь если она соответствует той, на которой работает TSOP17хх, то даже при минимальной интенсивности свечения ИК-диода, ИК-барьер будет видеть преграду на расстоянии в 0,5м минимум (проверено на практике). Ведь не проще минуту потратить для того что бы "какие-то резисторы крутить", чем подбирать частоту програмно.

А нахрена ее собсно подбирать то? Ее посчитать мона Ж))) К примеру нада 36000 берем кварц 9000000. 9000000/250=36000. Берем делаем чтоб таймер 0 считал до 250, (сравнивая с OCR0=249) ну и генерировал прерывание Ж))) Получим 36000 с ошибкой 0 процентов, и никаких шаманских резисторов Ж)))))
12. Tranzistor - 04 Февраля, 2008 - 16:32:41 - перейти к сообщению
Так в этом и вся суть, что частота должна быть в стороне, НЕ ровно 36000, смотрите прикрепленный график... Для того, что бы ИК-барьер срабатывал на расстоянии 0,1м нужно частоту увести в сторону... Улыбка
13. VCOM - 05 Февраля, 2008 - 07:53:37 - перейти к сообщению
Дыкь эта, проблем-то Ж)))
9000000/250=36000
9000000/251=35856,57
9000000/252=35714,28
Ну и так далее, Ж)))
14. Солнцеворот - 12 Февраля, 2008 - 17:09:37 - перейти к сообщению
Можно попросить поподробнее рассказать о формировании сигнала для светодиода? Я никак не могу с таймерами разобратьсяГрустный

Что это за регистр такой OCR0 и что с ним сравнивать?
Работаю в CodeVision. Настроить таймер, который отсчитывал бы каждые 1, 8, 16, 1024 такта - получается. Но куда он шлет импульс после переполнения???
15. VCOM - 13 Февраля, 2008 - 10:25:21 - перейти к сообщению
unsigned char tmp;

#pragma vector = TIMER0_COMPA_vect //Прерывание
__interrupt void timer1(void)
{
tmp=~tmp;
if(tmp==0)PORTB &= ~(1<<5)
else PORTB |= (1<<5)
}

void main(void)
{
TCCR0A=0x02;
TCCR0B=0x01;
OCR0A=124; //для частоты 36000 мы заходим в прерывание с частотой 72000
TIMSK0=0x02; //разрешили прерывание от сравнения TIMER0 и OCR0A
tmp=0x00;
asm{"sei"}; //разрешили глобальные прерывания
}