Чи є спосіб, щоб я міг змусити Arduino або інший мікроконтролер виявити зміну ємності?
Я думаю про те, щоб у моїх дверях був екран, який включається лише тоді, коли ти торкнешся металевої ручки дверей.
Чи є спосіб, щоб я міг змусити Arduino або інший мікроконтролер виявити зміну ємності?
Я думаю про те, щоб у моїх дверях був екран, який включається лише тоді, коли ти торкнешся металевої ручки дверей.
Відповіді:
Так.
Найпростішим способом було б використовувати резистор високої вартості (1-10М) та дотримуватися вказівок цього старого повідомлення на форумі arduino: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1171076259
Ось підручник http://www.nerdkits.com/videos/halloween_capacitive_touch_sensor/
Фактичний датчик, який використовується для виявлення присутності руки, детально пояснений у відео, але ось огляд. Наш датчик працює за тим самим принципом, що ємнісний сенсорний сенсор працює на сенсорній панелі вашого ноутбука. Ці ємнісні сенсорні датчики працюють на припущенні, що людина переважно вода. Коли ви знаходитесь поблизу електричного поля, ви змінюєте ємність достатньо, щоб його помітив датчик.
У нашій системі ми паралельно встановили RC ланцюг з конденсатором і резистором. Ми використовуємо MCU для зарядки конденсатора до 5 В (цифрової високої напруги). Потім ми перетворюємо штифт на вхідний штифт, який по суті відключає цей вузол. Це дозволяє конденсатору розряджатися через резистор. Кількість часу, яке потрібно конденсатору для розряду, буде залежати від величини резистора, меншої від ємності. Ми вибираємо величину резистора достатньо велику, щоб константа часу RC була достатньо довгою, щоб ми могли виміряти з MCU. У цьому випадку 100К Ом спрацювали чудово. Датчик у цьому випадку - це два аркуші алюмінієвої фольги, один підключений до штифта MCU, а один підключений до GND. Ці два аркуші створюють конденсатор, який наш MCU заряджає та розряджає. Коли ваші руки рухаються між двома листами, це змінює електричне поле, і, отже, ємність нашого олова з фольги. Тому конденсатор займає більше часу для розряду, і це виявляється кодом на нашому мікроконтролері!
Один з найкращих способів, який я знайшов для вимірювання ємності, - це використання RC-ланцюга. Використовуйте цифровий порт вводу / виводу на мікропроцесорі для зарядки та розряду ємнісного датчика через нерухомий резистор. Запустіть таймер, коли розпочнете цикл заряду / розряду. Потім використовуйте компаратор, щоб виявити, коли конденсатор повністю заряджений / розряджений. Зупиніть таймер, коли компаратор відключається. Значення, збережене в таймері, потім може бути використане для обчислення ємності датчика.
Не відповідь Arduino, але Microchip має пояснення одного із способів зробити це на PIC - який, можливо, може працювати на AVR
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en545264
Тільки стурбованість цими методами полягає у відсутності захисту від статичних розрядів
Ємнісний сенсорний сенсор можна зробити без додаткового обладнання. Трюк полягає в тому, щоб увімкнути внутрішнє підтягування цифрового штифта і порахувати цикли процесора, необхідні для підтягування шпильки.
Код та пояснення: http://playground.arduino.cc/Code/CapacitiveSensor
Я вважаю за краще відбирати аналогову частину роботи від мікронтролера, використовуючи досліджуваний конденсатор як частину осцилятора, а потім за допомогою контролера вимірювати ширину сигналу. Це зайва частина, але я мав кращі результати таким чином.