Размышляя на тему как максимально экономить батарейку в проектах где основная задача выполняется по нажатию кнопок (как в пультах ДУ) в голову пришла очень простая и эффективная схема. Ее достоинство состоит в том, чтобы на кнопку возложить не только задачу вызывать ту или иную функцию, но и подавать питание на микроконтроллер. Таким образом потребление схемы в режиме ожидание падает до нуля (!), так как батарейка оказывается полностью отключенной от схемы.
Такой алгоритм просто реализуется на кнопках с несколькими парами контактных групп, чаще же в проектах используется обычная тактовая кнопка, которая умеет замыкать только два контакта между собой. Поэтому пошевелив извилинами накидал вот такую схему:
Как видно, при нажатии на любую кнопку, происходит запитывание микроконтроллера и одновременно с этим на соответствующей ножке выставляется высокий уровень. Диоды в схеме нужны чтобы отсечь попадание высокого уровня на остальные входы.
для проверки схемы собрал ее на макетке:
код обработки нажатия самый элементарный:
$regfile = “m16def.dat”
$crystal = 8000000
Config Portb = Output
Config Portc = Input
Do
If Pinc.0 = 1 Then
Portb.0 = 1
End If
If Pinc.1 = 1 Then
Portb.1 = 1
End If
If Pinc.2 = 1 Then
Portb.2 = 1
End If
Loop
End
Как видно схема оказалась вполне работоспособной и ко всем прочим прелестям умеет обрабатывать сразу несколько нажатий, поэтому обязательно найдет себе применение.
Последние статьи
- Лучшая практика проектирования при размещении компонентов печатной платы
- Android 6.0 на lancer X
- Простой усилитель мощности класса АВ своими руками.
- Двухтактный ультралинейный ламповый УНЧ на EL84 (6П14П).
- Люксметр на ATmega8 и цифровом датчике BH1750
- Контроллер для светодиодной ленты с ИК управлением
- Самодельный LED светильник на основе ИК датчика HC-SR501
- Простой усилитель низкой частоты на TDA7377 и NE5532
- Простейший звонок с двумя мелодиями
- LED Cube 8x8x8 на Arduino с RTC