roboforum.ru

Технический форум по робототехнике.
Текущее время: 07 май 2025, 05:48

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Как заставить ИК-радар на TSOP'е заработать?
СообщениеДобавлено: 03 окт 2009, 21:41 
Не в сети

Зарегистрирован: 02 сен 2009, 03:07
Сообщения: 11
Откуда: Moscow
Граждане!
Не дайте сойти с ума! Скажите, в какое место стены мне удариться головой, чтобы TSOP'а заработала?

Схема прилагается.
ИК-диод обозван IRD.
Все конденсаторы - керамика.
Транзистор между ТСОПой и МК выкидывать пробовал.
Вложение:
Комментарий к файлу: Схема
IR_locator3.png
IR_locator3.png [ 59.46 КиБ | Просмотров: 3435 ]


Вот программа:
Импульсы по 16 в пачке (игрался). Паузы между импульсами есть.
Скважность - примерно писят процентов.
Код:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

static const uint8_t IR_LED = PB1; // Will use PWM.
static const uint8_t TSOP = PB3;

static const uint8_t STATUS_LED = PA2;


static const uint8_t  PULSE_BUNGLE_SIZE = 15; // Counts from Zero.
static const uint8_t  PULSE_INTERBUNGLE_PAUSE = 30;  // In pulses. Counts from Zero.

// 64000000/16/(TOP_VALUE + 1) ~= XXx kHz.
//static const uint8_t  TOP_VALUE = 132; // 30 kHz
//static const uint8_t  TOP_VALUE = 120; // 33 kHz
//static const uint8_t  TOP_VALUE = 110; // 36 kHz
static const uint8_t  TOP_VALUE = 104; // 38 kHz
//static const uint8_t  TOP_VALUE =  99; // 40 kHz
//static const uint8_t  TOP_VALUE =  70; // 56 kHz

// 104/50 ~= 50 % duty. Good.
static const uint8_t  PULSE_DUTY_VAL = 50; // OCR1A value.


void initIO(){
   DDRA = (1 << STATUS_LED);
   
   DDRB = (1 << IR_LED);
   PORTB |= (1 << TSOP); // Eliminate Z state...
}

void initPWM(){
   
   // Do Async operation.
   PLLCSR = (1 << PLLE);
   loop_until_bit_is_set(PLLCSR, PLOCK);
   PLLCSR |= (1 << PCKE);

   TCCR1A = (1 << PWM1A)|(1 << COM1A1)|(0 << COM1A0); // See table 35 on page 77

   // PCK/16
   // See table 34 on page 74
   TCCR1B = (0 << CS13)|(1 << CS12)|(0 << CS11)|(1 << CS10);
   OCR1C= TOP_VALUE;
   
   TIMSK |= (1<<TOIE1); //Enable Timer1 OVF interrupt
}


static uint8_t curPulse = 0;
static uint8_t isPause = 0;
volatile static uint8_t mayMeasure = 0;
ISR(TIMER1_OVF1_vect){

   curPulse++;
   
   if(isPause){
      mayMeasure = 1;
      if(curPulse > PULSE_INTERBUNGLE_PAUSE){
         curPulse = 0;
         isPause = 0;
         OCR1A = PULSE_DUTY_VAL;
      }
   }else{
      mayMeasure = 0;
      if(curPulse > PULSE_BUNGLE_SIZE){
         curPulse = 0;
         isPause = 1;
         OCR1A = 0;
      }
   
   }
}

void  main()
{

   initIO();
   initPWM();
   
   PORTA = 0x00;
   OCR1A = PULSE_DUTY_VAL;
   
   sei();
   while(1)
   {
      _delay_ms(1);
      // Wait for a meaningful result...
      if(mayMeasure){
      
         // Check results...
         if(PINB & (1 << TSOP)){
            PORTA &= ~(1 << STATUS_LED);
         }else{
            PORTA |= (1 << STATUS_LED);
            _delay_ms(500);         
         }
      }
   } // while(1)
}


Выдираю TSOP'у с платы - светодиод D3 радостно загорается.
Втыкаю - молчит как партизанин. Специально в программе "защелочку" поставил, чтобы не проморгать кратковременный импульс низкого уровня - ничего.
На всех возможных частотах попробовал, в надежде на то что мне ТСОПы на другую частоту продали. ....

Следующим шагом, чую, будет пентамация методом разбивания молотком имеющихся у меня 5-и ТСОП, чтобы посмотреть не закорочен ли там вход на выход намертво...
Если конечно, кто-нибуть свежих идей по тому как заставить ЭТО заработать не предложит...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как заставить ИК-радар на TSOP'е заработать?
СообщениеДобавлено: 03 окт 2009, 22:33 
Не в сети
Аватара пользователя

Зарегистрирован: 05 ноя 2008, 18:52
Сообщения: 123
Откуда: Ростов-на-Дону
прог. языки: ASM для МК
Все просто. TSOP имеет выход типа "открытый коллектор" и подавать сигнал на базу NPN транзистора просто бессмыслено. Нужно резистором "подтянуть" выход TSOPа к плюсу. А еще лучше выкинуть транзистор и подавать сигнал с TSOPа прямо на вход микроконтроллера, так же с "подтягивающим" резистором.

_________________
Мой сайт - http://avtoelectro.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как заставить ИК-радар на TSOP'е заработать?
СообщениеДобавлено: 03 окт 2009, 22:45 
Не в сети
Аватара пользователя

Зарегистрирован: 23 окт 2007, 22:03
Сообщения: 3037
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец
Проверить работу ТСОП-а можно посветив на него пультом от ТВ, и проверив осцилографом/тестером на выходе сигнал. А работу ИК диода посмотрев на него через цифровой фотоаппарат/телефон/видеокамеру.

_________________
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как заставить ИК-радар на TSOP'е заработать?
СообщениеДобавлено: 04 окт 2009, 00:31 
Не в сети

Зарегистрирован: 02 сен 2009, 03:07
Сообщения: 11
Откуда: Moscow
АА....
Товарищи, мне стыдно признаться....
Я ТСОП'у за каким-то хреном землю с питанием перепутал...
И сидел, незаслуженно клял китайских произсодителей.

Посыпаю голову пеплом....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как заставить ИК-радар на TSOP'е заработать?
СообщениеДобавлено: 04 окт 2009, 09:06 
Не в сети
Аватара пользователя

Зарегистрирован: 23 окт 2007, 22:03
Сообщения: 3037
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец
Надеюсь ТСОП не спалил?

_________________
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как заставить ИК-радар на TSOP'е заработать?
СообщениеДобавлено: 30 дек 2009, 13:09 
Не в сети

Зарегистрирован: 27 ноя 2009, 12:40
Сообщения: 14
Откуда: Мурманск
прог. языки: C\C++
ФИО: Камбулин Иван
amdei, вот тута есть прекрасные копеешные схемки, работают как часы...
Попробуй... Мне даж настраивать не пришлось, я также вставлял туда китайские VS0038 от двд плеера.. :)

http://robozone.su/2008/04/22/modul-apparatnogo-generatora-dlja.html
http://robozone.su/2008/04/09/modul-ik-datchika-na-osnove-tsop2136.html


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO