Светодиодные светильники с датчиком движения

Продолжаем тему практического применения MSP430. Она была начата в третьем номере журнала за 2007 год статьей Маркуса Пфайфера о беспроводных решениях для систем безопасности на базе этого контроллера. Теперь речь пойдет о построении датчика движения с низким энергопотреблением. Он найдет применение в системах контроля доступа и в промышленной автоматике.

Сигналы системы в момент определения движения

Данная статья начинает цикл материалов по использованию MSP430, в которых будут рассмотрены основные принципы построения приложения. Исходные тексты программ и подробное описание можно найти на сайте Texas Instruments.

Аппаратная часть.

В системе для оценки движения используется сдвоенный пироэлектрический пассивный инфракрасный (PIR) датчик и микроконтроллер MSP430F2013. Микроконтроллер имеет встроенный 16-битный сигма-дельта АЦП, обеспечивающий интерфейс с датчиком. Благодаря наличию аналоговой части, 16-мегагерцовому 16-битному RISC ядру, MSP430F2013 обеспечивает необходимую производительность и низкую стоимость системы в целом.

Показана упрощенная схема подключения датчика к микроконтроллеру. Внешние компоненты включают резистор смещения RB, необходимый для датчика, и два RC-фильтра, образованные R1/C1 и R2/C2.

Фильтры выполняют две разные функции. Так как вход сигма-дельта АЦП, SD16_A, - дифференциальный, нужно обеспечить положительный и отрицательный входы. R1/C1 работает как низкочастотный фильтр для устранения зубчатых искажений (anti-aliasing) на входе Ax+. Второй фильтр, R2/C2, создает смещение на входе Ax- аналого-цифрового преобразователя. Это нужно из-за большого сдвига между выходным сигналом датчика и сигналом Vss. Рисунок отображает ключевые сигналы системы в момент определения движения.

Канал 1 отображает выходной сигнал датчика. При напряжении на датчике 3 В выходное смещение составляет приблизительно 500 мВ. Ax- подключен к Vss, а выход датчика - к Ax+, при этом коэффициент усиления SD16_A PGA равен единице. Из-за малого динамического диапазона выходного сигнала датчика ( канал 2), требуется его усиление, что препятствует возможности прямого подключения Ax- к Vss.

Канал 2 отображает выходной сигнал датчика после фильтрации. Кроме фильтрации, выходной сигнал датчика также подвергается смещению для соответствия динамическому диапазону SD16_A.

Прямое напряжение смещения также подается на вход Ax-. Для этой цели служит фильтр низких частот R2/C2. Канал 3 отображает выходной сигнал R2/C2 фильтра. Математическая разность второго и третьего каналов отображается каналом M1. Это дифференциальное напряжение входов сигма-дельта АЦП.

В приложении устанавливается коэффициент усиления PGA, равный 4, и коэффициент передискретизации, равный 256. Если требуется повысить чувствительность системы, можно задавать коэффициенты усиления и передискретизации равными 32 и 1024 соответственно.

Порт ввода/вывода используется для управления светодиодом. Светодиод излучает при обнаружении движения. Этот же сигнал может использоваться для управления аналогового переключателя или реле для включения осветительной или другой системы.

В качестве последнего аспекта разработки аппаратной части можно использовать линзу Френеля для вычисления направления на движущийся объект. Внутренняя архитектура двойного датчика обеспечивает хорошую помехоустойчивость и защиту от ложного срабатывания, но также создает ограничения по углу обзора. Использование линз позволяет уменьшить эти ограничения.

Программное обеспечение.

Для достижения низкого энергопотребления аналого-цифровое преобразование и обработка оцифрованных данных сводится к минимуму, достаточному для определения движения.

Программный код состоит из трех элементов: основной программы, обработчика прерываний сторожевого таймера и обработчика прерываний аналого-цифрового преобразователя. Для синхронизации используется сигнал внутреннего низкочастотного малопотребляющего VLO осциллятора. Частота этого сигнала составляет приблизительно 12 кГц, и он подается на линию ACLK. Частота этого сигнала затем делится на 8 и подается на сторожевой таймер, чтобы «будить» ядро каждые 32768 циклов/12 кГц/8 = 341 мс. После инициализации периферийных устройств, ядро входит в режим LPM3 и ожидает прерывания сторожевого таймера.

Каждые 341 мс сторожевой таймер генерирует прерывание. В обработчике этого прерывания выполняются две основные функции: инициируется новая выборка АЦП и включается светодиод, если зафиксировано движение. Если во время предыдущей выборки движение не было зафиксировано (светодиод выключен), включается опорный сигнал SD16_A и производится новое аналогово-цифровое преобразование. Перед тем как выйти из обработчика прерывания, изменяются значения регистра статуса так, что DCO и SMCLK, использующиеся для тактирования АЦП, остаются активными. Это означает, что ЦПУ переходит из режима LPM3 в режим LPM0 после выполнения функции RETI.

Сигма-дельта АЦП, SD16_A, выполняет преобразование за 256 циклов/1 МГц DCO*4 = 1,024 мс. В регистре начальной задержки INTDLYx устанавливается значение 4. Эта установка позволяет АЦП выполнить 4 преобразования перед прерыванием ядра для того, чтобы предотвратить появление неправильных значений после фильтрации с децимацией. Для более подробной информации можно обратиться к документу MSP430x2xx Family Users Guide.

После завершения преобразования запускается процедура обработки прерывания от SD16_A и отключается внутренний источник опорного напряжения. Вычисляется абсолютная разница между новым и предыдущим значением и сравнивается с порогом. Превышение порога означает обнаружение движения. В этом случае включается светодиод. При выходе из обработчика прерываний ЦПУ входит в режим LPM3 (DCO и SMCLK выключены) и снова ожидает прерывания от сторожевого таймера WDT+.

Используя этот алгоритм, можно добиться энергопотребления, достаточного низкого для того, чтобы подключать устройство к стандартной батарейке на 3 В. Средний ток составляет приблизительно 9,4 мкА. Приведены данные по длительности и энергозатратности функций системы.

Алгоритм, реализованный в этом примере, достаточно прост. 2 кБ Flash и 16 MIPS вычислительной мощности микроконтроллера MSP430F2013 позволяет реализовать алгоритмы более высокого уровня с более сложной обработкой.

Подробные схемы устройства, списки компонентов, исходные тексты программ можно найти на сайте производителя.