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

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Ср май 05, 2010 16:39:11

Сообщение 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кГц по "рассчетам" - результат одинаковый. Больше не знаю что делать - поэтому спрашиваю совета у сообщества... Буду раз полезному совету.
Вложения
Board-Assembled.jpg
Внешний вид платки
(99.51 КБ) 287 скачиваний
IR Sensor Module TSOP48xx - Board.png
Плата
(26.43 КБ) 555 скачиваний
IR Sensor Module TSOP48xx - Circuit.png
Схема
(19.8 КБ) 517 скачиваний
Q - IR Sensor.rar
Архив с:
- Схемой
- Платой
- Даташитами
- Программой для Attiny 2313А
- Проектом в Протеус 7.2
(503.47 КБ) 177 скачиваний
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Ср май 05, 2010 16:39:11

Сообщение mattheus »

Перечитал. Уточню: ожидается, что когда датчик видит препятствие, то на выходе должен быть лог.0, причем не кратковременно, а постоянно, пока датчик видит препятствие. Дальность предполагается тоже приличная, т.к. например пульты от телевизора на расстоянии несколько метров срабатывают при отраженном от стены сигнале.
Контактная информация:
Реклама
Ответить

Вернуться в «Практика»