Понадобился мне как-то датчик движения с конкретными характеристиками, а именно чтобы датчик движения реагировал на определённом расстоянии. И вот для этих целей решил использовать готовый модуль «ультразвуковой дальномер» HC-SR04 (благо они у меня есть в наличии).
В качестве формирователя периода опроса дальномера, было решено использовать один из относительно дешёвых микроконтроллеров семейства Tiny (ATtiny13). Тактирование микроконтроллера оставлено на заводской установке (1,2 МГц. Фьюзы менять не нужно).
Схема датчика:
1.png [ 30.73 КБ | Просмотров: 11741 ]
Алгоритм работы датчика движения довольно прост. МК формирует импульс на вывод «Trig» дальномера HC-SR04. Дальномер в свою очередь, производит «замер расстояния» и результат о расстоянии формирует на своём выводе «Echo». Микроконтроллер считывает данный результат и на его основании формирует сигнал присутствия. Период формирования импульсов на вывод «Trig» составляет 68 мс. Расстояние на которое реагирует датчик устанавливается константой «Distance». В данной программе выбрано расстояние примерно 70 см. Значение константы при этом равно 180, которое и соответствует данному расстоянию.
Теперь немного подробнее о выборе константы для расстояния, на которое датчик будет реагировать. В данном алгоритме опрос вывода «Echo» дальномера HC-SR04 производится в прерывании по переполнению таймер-счётчика. Константа «Distance» записывается в регистр TCNT0 данного таймер-счётчика. Которая и влияет на период времени формирования очередного прерывания по переполнению регистра TCNT0 таймер-счётчика. Таким образом, чем больше значение константы «Distance», тем меньше расстояние реагирования датчиком. Константа равная значению 250 будет примерно соответствовать реагированию датчиком на расстояние в 5 см. Соответственно 240 будет соответствовать реагированию датчиком на расстояние в 15 см и тд. Значение константы равное нулю, будет соответствовать максимальному расстоянию реагирования датчиком. Оно составит примерно 235 см.
Сигнал реагирования на выходе МК формируется без задержек. А вот сброс данного сигнала имеет задержку около 2 сек.
Зелёный светодиод является индикатором выходного сигнала (дублирует выходной сигнал).
Исходник и схема в архиве.
HC-SR04 Tiny13.zip [12.17 КБ]
Скачиваний: 1937