Начинаю помаленьку изучать STM8 и попался интересный документ AN2927
( http://www.st.com/internet/com/TECHNICA ... 222886.pdf ) - описывается принцип работы с сенсорными кнопками, основанный на измерении емкости сенсорной площадки, вернее на измерении времени заряда/разряда этой самой емкости. Но так как всё время до этого работал с AVR, решил перенести этот проект под тинни13. Все названия сигналов взяты из AN2927. И так нам понадобится всего 3 ноги MK - Load (выход, с его помощью мы будем подавать напряжение на сенсорную площадку через резистор в 1Мом, этим же выходом будем разряжать накопленный заряд.) Acq -измерительная нога, может принимать три значения: выход в "1", выход в "0", вход без подтяжки к Vcc. Out - выход на котором будем контролировать срабатывание.
В двух словах, принцип работы сенсора очень прост: Load устанавливаем в 1, Acq - выход в 0, емкость сенсора разряжается, после этого
переводим Acq в состояние вход и начинаем инкрементировать переменную до тех пор, пока напряжение на сенсоре не достигнет 1. Получаем какое то время в относительных единицах необходимое для заряда, запоминаем его. После этого Load переводим в состояние 0,
Acq - выход в 1, заряжаем емкость сенсора, и переводим Acq в состояние вход, запускаем отсчет до тех пор, пока на входе Acq не появится 0. Соответственно то же сохраняем значение. Теперь у нас есть время заряда и время разряда емкости сенсора измеренное в попугаях. При прикосновении к сенсору емкость меняется и соответственно меняется время заряда/разряда, прибавляя к первоначальным данным по попугайскому крылышку имеем гистерезис, уменьшающий вероятность ложных срабатываний. Вкратце вроде как все, надеюсь понятно обьяснил. Схема и исходники прилагаются.
Сенсорная кнопка
- Реклама