roboforum.ru

Технический форум по робототехнике.

ИК - приемник

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

CiSi » 23 дек 2009, 23:21

припаял переключатель, включаю диод загарается/ выключаю он гаснет.
между ИК диодом и ТСОП гдето около 1см

Добавлено спустя 6 минут 12 секунд:
Код: Выделить всёРазвернуть
#include <mega8.h>
#include <delay.h>

void flash_l()
{
unsigned int i,j;
for (j=0;j<10;j++)
  {
    for(i=0; i<12; i++)
      {
   PORTD.1=1;
        delay_us(13);
   PORTD.1=0 ;   
        delay_us(13);
      }
   
    delay_us(170);  // 0,6 ms
   };     
}

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

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

      }
}

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

yak-40 » 23 дек 2009, 23:21

Значит ТСОП сигналы с ИК диода правильно принимает. Это уже хорошо!
Теперь надо мощность излучения ИК диода подобрать. Поставь переменный резистор последовательно с ИК диодом (где нибудь килоом на 10) и постепенно увеличивай сопротивление до нормальной работы. Ну или попробуй разные номиналы по очереди припаивать. ТСОП очень чувствительный. Засвечивается отраженными сигналами даже через перегородку.

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

contr » 23 дек 2009, 23:22

Могет лучше так,

Код: Выделить всёРазвернуть
void flash_l()
{
    for(unsigned char i=0; i<12; i++)
      {
   PORTB.2=1;
        delay_us(13);
   PORTB.2=0 ;   
        delay_us(13);
      }
   
   };     
//////////////////////////////////////////////////////////////////////////
void main(void)
{
init();

while (1)
      {
         flash_l(); // выдали пачку импульсов и сразу проверяем
if(PIND.0 == 0) // пришел "0"
   PORTC.5 = 1; // зажигаем индикацию
delay_ms(100); // чтобы непрерывно не излучало и индикатор заметить
     PORTC.5 = 0; // гасим кады отклик не дошел
      };
}
Последний раз редактировалось contr 23 дек 2009, 23:25, всего редактировалось 2 раз(а).

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

yak-40 » 23 дек 2009, 23:26

Ещё, что-бы корректно было перенеси "delay_us(170); // 0,6 ms" в начало цикла, как я советовал ранее.

Добавлено спустя 1 минуту 44 секунды:
contr писал(а):Могет лучше так,

Так тоже можно, но я предпочитаю именно пачку импульсов посылать. Для надёжности. Хотя это IMHO/

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

contr » 23 дек 2009, 23:34

так я Вашу пачку из 12 импульсов и оставил. Можно до 255 увеличить, но 8..10 обычно хватает.

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

yak-40 » 23 дек 2009, 23:41

Эти 12 импульсов с ИК диода, на выходе ТСОП появятся одним импульсом.
Я имел ввиду пачку импульсов на выходе ТСОП-а. :)

Добавлено спустя 1 минуту 38 секунд:
contr писал(а):но 8..10 обычно хватает.

По даташиту не менее 10 рекомендуют вроде...

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

CiSi » 24 дек 2009, 00:33

поставил пер резистор на 6.8 ком, но это все равно многовато, надо где то на 3кОм. Но все равно настройка частично получается.

Добавлено спустя 18 минут 42 секунды:
устанавливаю перегородку между ик и тсопом - кручу резистор, индикаторный диод гаснет. пожу препятствием переддатчиком - 0 эффекта, убираю препятствие. Вынимаю перегородку индикатор загорается, частично настройка прошла успешно, но все равно датчик не реагирует на препятствие в переди его.

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

contr » 24 дек 2009, 00:44

втыкаем шнурок в линейный вход звуковухи компа и шарим по выводам, наблюдая картинки

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

yak-40 » 24 дек 2009, 00:52

Разнеси ИК диод и ТСОП на расстояние(20-30см) направь друг на друга, попробуй перекрыть лучь непрозрачным предметом, например книгой. Подстрой резистор что-бы чётко срабатывало.

Добавлено спустя 5 минут 45 секунд:
И ещё. Ты ТСОП правильно подключил? Согласно даташита?
Вот в этом топике я показывал примеры подключения ТСОП и ИК диода: viewtopic.php?f=68&t=7188&start=0
Это важно.

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

CiSi » 24 дек 2009, 01:27

Все это сделал срабатывает четко, на растоянии 20-30 см и даже больше. На плате на каком растоянии их установить друг от друга?

Добавлено спустя 1 минуту 40 секунд:
Подключино все на прямую, конечноже не по дадашиту.

Добавлено спустя 14 минут 49 секунд:
Сейчас обнаружил следующее: поместил ИК диод рядом с тсоп-ом, разделил их перегородкой. включаю схему - после настройки светодиод не загорается, подношу препятствие - датчик то срабативает, то нет. если не срабативает то переключаю ренее установленной кнопкой по совету yak-40 и все работает, вот только частенько надо переключать.
Но меня результат уже радует. :)
:beer:

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

yak-40 » 24 дек 2009, 11:09

Сейчас обнаружил следующее: поместил ИК диод рядом с тсоп-ом, разделил их перегородкой. включаю схему - после настройки светодиод не загорается, подношу препятствие - датчик то срабативает, то нет. если не срабативает то переключаю ренее установленной кнопкой по совету yak-40 и все работает, вот только частенько надо переключать.
Видимо твоя перегородка плохо защищает от проникновения ИК лучей.
А у ТСОП-а АРУ очень хорошо работает, если сигнал ловит, то не отпускает даже слабый.
Я обычно в таких конструкциях ИК диод в длинную металлическую трубку вставляю(например от сломаной телескопической антенны для телека). Тогда он светит исключительно вперед и ТСОП не подсвечивает.

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

CiSi » 24 дек 2009, 11:34

Нет, дело не в перегородке ("дело было не в бабине"), опробовал разные.

Включаю схему - после настройки светодиод не загорается, подношу препятствие - датчик то срабативает, то нет. если не срабативает то переключаю ренее установленной кнопкой по совету yak-40 и все работает, вот только частенько надо переключать.


Такое ощущение что программа зависает.

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

statistic » 24 дек 2009, 15:25

могет лучше генерироать импульсы с помощью таймера?delay всё таки не очень хорошо в таких вещах имхо.

Добавлено спустя 2 минуты 33 секунды:
Код: Выделить всёРазвернуть
#include<MEGA8.H>

int t1=0,t2=0;
void main(void) {
DDRC.1=1;
DDRC.2=0;
DDRB.3=1;   
DDRB.0=0;
DDRD.5=0;
TCCR0=0b0000001;
ASSR=0x00;
TCCR2=0b00011001;
TCNT2=0x00;
OCR2=0x0D;

while(1){
if((TIFR & (1 << 0))==1){t1=t1+1,t2=t2+1,TIFR=0b00000001;}
if(t1==1){TCCR2=0x00,t1=0;}
if(t2==2){TCCR2=0x19,t2=0;}
if(PINB.0 == 0){PORTC.1=1;}
else{PORTC.1=0;}

}
}

как то так .Это кажется на кварц 7.5 мГц,не помню уже.

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

CiSi » 24 дек 2009, 21:10

Так то хоть заставить бы его нормально работать, а потом видно бы было... :)

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

yak-40 » 24 дек 2009, 23:08

CiSi писал(а):Такое ощущение что программа зависает.

А как у тебя с питанием? Хорошее питание - залог здоровья :D


Rambler\'s Top100 Mail.ru counter