Емкостное зондирование

10

Есть ли способ, которым я могу заставить Arduino или другой микроконтроллер обнаружить изменение емкости?

Я думаю о том, чтобы на моей двери был экран, который включался только тогда, когда вы касались металлической дверной ручки.

littlebirdceo
источник

Ответы:

11

Вот учебник http://www.nerdkits.com/videos/halloween_capacitive_touch_sensor/

Фактический датчик, используемый для обнаружения присутствия руки, подробно описан в видео, но здесь приведен обзор. Наш датчик работает по тому же принципу, что емкостный сенсорный датчик работает на сенсорной панели вашего ноутбука. Эти емкостные сенсорные датчики основаны на предположении, что люди в основном являются водой. Когда вы приближаетесь к электрическому полю, вы изменяете емкость достаточно, чтобы быть замеченным датчиком.

В нашей системе мы создали RC-цепь с конденсатором и резистором параллельно. Мы используем MCU для зарядки конденсатора до 5 В (цифровое высокое напряжение). Затем мы превращаем контакт во входной контакт, который по существу отключает этот узел. Это позволяет конденсатору разряжаться через резистор. Время, за которое конденсатор разряжается, будет зависеть от значения резистора, умноженного на емкость. Мы выбираем значение резистора, достаточно большое, чтобы постоянная времени RC была достаточной для измерения с помощью MCU. В этом случае 100 кОм работали отлично. В этом случае датчик представляет собой два листа алюминиевой фольги, один из которых подключен к выводу MCU, а другой - к GND. Эти два листа создают конденсатор, который наш MCU заряжает и разряжает. Когда ваши руки перемещаются между двумя листами, это меняет электрическое поле, и, следовательно, емкость нашей оловянной фольги. Следовательно, конденсатор разряжается дольше, и это определяется кодом нашего микроконтроллера!

клабаккио
источник
6

Один из лучших способов измерения емкости - использование RC-цепи. Используйте цифровой порт ввода / вывода на микропроцессоре для зарядки и разрядки емкостного датчика через фиксированный резистор. Запустите таймер, когда начнете цикл зарядки / разрядки. Затем используйте компаратор, чтобы определить, когда конденсатор полностью заряжен / разряжен. Остановите таймер, когда сработает компаратор. Значение, сохраненное в таймере, можно затем использовать для расчета емкости датчика.

mjh2007
источник
4

Не специфичный для Arduino ответ, но у Microchip есть объяснение одного способа сделать это на PIC - который мог бы работать на AVR

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en545264

Единственное, что касается этих методов, так это отсутствие защиты от статического разряда.

Кина
источник
1

Емкостный сенсорный датчик может быть выполнен без дополнительного оборудования. Хитрость заключается в том, чтобы включить внутреннее подтягивание цифрового вывода и подсчитать количество циклов ЦП, которое требуется для подъема контакта.

Код и объяснение: http://playground.arduino.cc/Code/CapacitiveSensor

Maxy
источник
0

Я предпочитаю отводить аналоговую часть работы от микронтроллера, используя тестируемый конденсатор как часть генератора, а затем используя контроллер для измерения ширины паузы. Это дополнительная часть, но у меня были лучшие результаты в этом смысле.

Скотт Сейдман
источник