Страница 1 из 1

IR датчик на основе BRM-1022

Добавлено: Ср май 09, 2012 19:53:45
mattheus
Почитал "Контроллер MRC28 › Модуль ИК-датчика на основе TSOP2136" (http://robozone.su/2008/04/09/modul-ik- ... p2136.html). Собрал себе такую же плату, с мелким изменением: а) вместо TSOP2136 использовал BRM-1022 который нашел на местном радиорынке (соответствующим образом поменял местами VCC и GND (ножки 2 и 3)) б) добавил последовательно с каждым светодиодом по одному постоянному резистору 75Ом, т.к. подумал что если переменный резистор выкрутить в ноль, то можно спалить светодиоды. т.к. на них подается все 5 вольт, а вроде не положено.
(Даташит на IR сенсор BRM-1022 и светодиоды HIRB5-43D-D в прилагаемом архиве).

Сигнал 38кГц подается с ножки PORTB2 микроконтроллера ATTiny 2313A. Для его генерации используется таймер 0. Микроконтроллер работает от встроенного генератора на 8Мгц. Программа генерации меандра 38 кГц на ножке OCR0A (PORTB2):

Код: Выделить всё

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Toggle on compare match
// OC0B output: Disconnected
TCCR0A=0x42;
TCCR0B=0x01;
TCNT0=0x97;     // TCNT0=0x97; OCR0A=0x68; - should be 38kHz*2, but actually 37kHz*2
OCR0A=0x68;     // TCNT0=0x9A; OCR0A=0x65; - should be 39.25kHz*2, but actually 38.1kHz*2 
OCR0B=0x00;
Полная программа в прилагаемом архиве (файл IR Test.c). Так же в архиве проект в Proteus ISIS, которым проверялось что генерируемая частота 38кГц. На практике получается частота 37кГц (проверял мультиметром). Чтобы сделать "на практике" 38кГц - подшаманил в коде:

Код: Выделить всё

TCNT0=0x9A; OCR0A=0x65; 
. По идее должно было бы быть 39.25кГц, но на практике 38кГц. Странно... Может такое быть из-за того что неправильно откалиброван встроенный генератор в микроконтроллере?

В архиве прилагается схема и плата. Не смотря на то, что название заканчивается на "... TSOP48xx" TSOP48xx совпадает по параметрам с BRM-1022, поэтому так называется.

Собственно проблемы и симптомы:
1) Когда мощность светодиодов стоит низкая (сопротивление переменного резистора порядка 500-600Ом), то датчик срабатывает (на выходе лог. 0), когда я двигаю (подвожу) рукой или предметом перед датчиком. Но через пол секунды-секунду сам по себе возвращает выход в лог. 1, хотя предмет остается перед датчиком и должен отражать сигнал.
2) Когда ставлю мощность светодиодов на максимум - датчик никогда не срабатывает (на выходе всегда лог.1), хоть води перед ним рукой, хоть нет.

Результаты снимались с выхода как мультиметром, так и просто подключенным светодиодиком. Пробовал и 38кГц по показаниям мультиметра и 38кГц по "рассчетам" - результат одинаковый. Больше не знаю что делать - поэтому спрашиваю совета у сообщества... Буду раз полезному совету.

Re: IR датчик на основе BRM-1022

Добавлено: Ср май 09, 2012 19:56:58
mattheus
Перечитал. Уточню: ожидается, что когда датчик видит препятствие, то на выходе должен быть лог.0, причем не кратковременно, а постоянно, пока датчик видит препятствие. Дальность предполагается тоже приличная, т.к. например пульты от телевизора на расстоянии несколько метров срабатывают при отраженном от стены сигнале.