Мы с другом хотим разработать универсальный пульт дистанционного управления для обучения , такой как этот , для учебных целей. В основном мы хотим хранить и воспроизводить инфракрасные импульсы.
Мы хотим обнаруживать сигналы 36 кГц, 38 кГц и 40 кГц. Сигнал 40кГц будет иметь период 25 с.
Мы хотим использовать 8-битный микроконтроллер PIC, на данный момент мы выбрали PIC16F616, который будет работать на 20 МГц высокоскоростном кварцевом генераторе. У нас есть два варианта:
- Используйте
Interrupt On Change
модуль. - Используйте режим захвата модуля CCP.
Первый вариант будет следующим:
Предположим , регистр устанавливается как: unsigned char _10_us = 0;
. Этот регистр будет содержать время. Модуль TMR2 с периодическим регистром настроен на создание прерывания каждые 10 . Когда происходит прерывание, оно увеличивает регистр и завершает работу. Это даст максимальное время 2,55 мсек. Если требуется больше измерения времени, дополнительные регистры, такие как, могут быть определены и увеличены по мере необходимости._10_us
_1_ms
_10_us
_10_us
Эта опция заставляет меня почесать голову; Прерывание TMR2 будет происходить примерно через каждые 50 инструкций. Обработка прерываний займет около 20 инструкций. У меня осталось 30 инструкций для вычисления и сохранения периода в массиве. Будет ли этот метод работать?
Второй вариант будет следующим:
Настройте режим захвата модуля CCP, чтобы он генерировал прерывание, когда на выводе CCP1 происходит событие (от высокого к низкому). В подпрограмме прерывания он установит флаг, чтобы задача в программе могла рассчитать (при необходимости) и сохранить значение CCPR1H (вероятно, не понадобится) и CCPR1L. Затем мы изменим конфигурацию режима захвата, чтобы он вызывал прерывание при возникновении границы от низкого до высокого уровня. И тогда он будет ждать следующего события. Я не могу оценить эффективность этого метода, поскольку я никогда не использовал его.
Другой вариант?
Мы можем использовать инфракрасный демодулятор ИС, такой как серия TSOP17xx . Это решило бы нашу проблему полностью. Однако некоторые вопросы приходят на ум.
Наше требование к расстоянию для чтения невелико; 1 метр (~ 3 фута). Если мы выберем TSOP1738, который предназначен для работы в 38 кГц, насколько хорошо это будет работать с сигналами 36 кГц и 40 кГц?
На странице 4 таблицы TSOP17xx показан график «Частотная зависимость чувствительности». Насколько мы поняли;
- 40 кГц, что составляет ~ 1,053 от 38 кГц, даст относительную чувствительность ~ 0,6.
- 36 кГц, что составляет ~ 0,95 от 38 кГц, даст относительную чувствительность ~ 0,65.
Что означают эти значения? Можем ли мы использовать TSOP1738 и хорошо?