Данное устройство было сделано мной и испытано на Arduino . Сенсор был спрятан под пластиковой пластиной толщиной 1,5мм и срабатывал при прикосновении в 100% случаев. Срабатывание проиходит для наглядноси на 13 пин Carduino, на котором висит светодиод, при необходимости можно поставить ключь на транзисторе и повесить на него реле(для управления мощными нагрузками) . Принцип данного девайса основан на измерении емкости человека. Вложение 5469
Нашел готовую библиотеку на сайте разработчика Arduino .
Сопротивление можно использовать от 1мОм до 10мОм , чем больше сопротивление тем больше чувствительность датчика.
Датчиком я сделал из фольгированого текстолита размером 25х25 мм
При срабатывании сенсора будет загоратся светодиод (L)
CapSense Sensor1 = CapSense(4,2); // назначить пины для сенсора void setup() { Serial.begin(115200); // настроить скорость порта }
void loop() { long temp1 = Sensor1.capSense(30); // измерить емкость и сохранить в temp1 delay(300); //пауза
if (temp1 > 60) // изменяя значение 60 мы регулируем чуствительность сенсора { digitalWrite(13, HIGH); } // включить светодиод else { digitalWrite(13, LOW); } // выключить светодиод]
Serial.println(temp1); // для клибровки вашего датчика // или для использования этого значения в компьютере }
При просмотре видео обратите внимание на зеленый светодиод слева.
24.09.2009, 23:32
format_c
Re: Применение емкостных Touch кнопок на Carduino.
начинаю ваять сенсорные кнопки.
вопросы:
1. влияет-ли размер сенсора на что-нибудь
2. какой длинны может быть провод от сенсора до Carduino
3. куда цеплять остальные сенсоры.
4. как arduino будет различать какой "нажат"
5. Можно ли использовать программку для работы сенсорных кнопок из этой темы http://www.compcar.ru/forum/showthread.php?t=4640
6. можно схемку ключа на транзисторе
Спасибо
З.Ы. понимаю, что вопросы могут быть тупыми, но я очень слабо разбираюсь в электронике
24.09.2009, 23:51
Chip
Re: Применение емкостных Touch кнопок на Carduino.
1- влияет , чем больше тем чувствительней.
2- не тестил на длину
3- 1 кнопка 1 цифровой вход, можно матричный принцип использовать
4- ответ выше
5- могу переделать эту программу под сенсорные кнопки.
Четвертый цифровой пин Carduino общий для всех кнопок
CapSense cs_4_2 = CapSense(4,2);
CapSense cs_4_5 = CapSense(4,5);
CapSense cs_4_8 = CapSense(4,8);
25.09.2009, 00:10
format_c
Re: Применение емкостных Touch кнопок на Carduino.
да, програмку было бы неплохо.
а можно схемку ключа на транзисторе.
25.09.2009, 00:12
Chip
Вложений: 1
Re: Применение емкостных Touch кнопок на Carduino.
Ключи бывают разными
Вот такой сойдет?
25.09.2009, 00:23
format_c
Вложений: 1
Re: Применение емкостных Touch кнопок на Carduino.
т.е. схемка подключения сенсоров будет такая?
все сопротивления по 4.7 мОм?
25.09.2009, 00:26
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Все верно , можно хоть на все порты кнопки повесить
Сопротивления можно и разные это скажется на чувствительности кнопки, чем больше сопротивление тем чувствительней кнопка, предел 10 мОм
Общим может также служить любой цифровой пин Carduino
В приведеном ниже примере, общий является 2-ой пин Arduino
PHP код:
CapSense Sensor1 = CapSense(2,3);
25.09.2009, 00:27
format_c
Re: Применение емкостных Touch кнопок на Carduino.
наверно сойдет. какой диод туда?
25.09.2009, 00:28
format_c
Re: Применение емкостных Touch кнопок на Carduino.
спасибо, буду ждать программку :)
25.09.2009, 03:00
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Выкладываю исходный код емкотных кнопок для Arduino, который будет работать с программой HKey Внимание если у вас резисторы стоят на одной или двух кнопках, то остальные кнопки в коде нужно закоментировать, иначе программа корректно работать не будет. Или придется использовать все семь кнопок которые прописаны в коде.
Если кому потребуется большее число кнопок то вы можете добавлять сами вплоть до 13-го цифрового порта, думаю как это сделать понятно по коду
void loop()
{
byte sens_on = 0;
long temp1 = Sensor1.capSense(30); // измерить емкость и сохранить
long temp2 = Sensor2.capSense(30); // измерить емкость и сохранить
long temp3 = Sensor3.capSense(30); // измерить емкость и сохранить
long temp4 = Sensor4.capSense(30); // измерить емкость и сохранить
long temp5 = Sensor5.capSense(30); // измерить емкость и сохранить
long temp6 = Sensor6.capSense(30); // измерить емкость и сохранить
long temp7 = Sensor7.capSense(30); // измерить емкость и сохранить
if (temp1 > 60) { sens_on = 10; }
if (temp2 > 60) { sens_on = 20; }
if (temp3 > 60) { sens_on = 30; }
if (temp4 > 60) { sens_on = 40; }
if (temp5 > 60) { sens_on = 50; }
if (temp6 > 60) { sens_on = 60; }
if (temp7 > 60) { sens_on = 70; }
bytes[0] = sens_on ;
Serial.write( bytes, 2);
delay(100); //Пауза между повторными нажатиями
}
25.09.2009, 10:45
format_c
Re: Применение емкостных Touch кнопок на Carduino.
Большое спасибо, буду пробовать
28.09.2009, 14:40
Alex-NN
Re: Применение емкостных Touch кнопок на Carduino.
Цитата:
Сообщение от format_c
Большое спасибо, буду пробовать
Как успехи?
28.09.2009, 14:45
format_c
Re: Применение емкостных Touch кнопок на Carduino.
да нет времени даже до магазина доехать
26.01.2010, 19:20
Z@GR
Re: Применение емкостных Touch кнопок на Carduino.
Цитата:
Сообщение от format_c
да нет времени даже до магазина доехать
так и не доехал до магазина в итоге? интересно же ...
30.01.2010, 02:11
AlexNS
Re: Применение емкостных Touch кнопок на Carduino.
Правильно ли я понял алгоритм?
устанавливаем пин который напрямую подключен на сенсор как вход без подтяжки, пин который подключен через резистор как выход на котором 0.
далее на короткий промежуток времени(около 1мс) устанавливаем на выход 1 и проверяем как долго эта единица будет на входе(сенсоре), если меньше 60(к примеру) то сенсор активирован, если больше - то нет.
Меня еще интересует помехоустойчивость, никто не пробовал в авто?
30.01.2010, 12:21
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Помехи небольшие и можно регулировать чувствительностью порог
01.02.2010, 13:50
ShOOtnick
Re: Применение емкостных Touch кнопок на Carduino.
Уважаемый Chip, уточните пожалуйста, сопротивление указано в миллиомах?
Просто дома не могу такое найти даже в россыпи smd резюков.. Вот грешным делом подумал, что, вдруг, очепятка вкралась... оно ведь всяко бывает... :rolleyes:
01.02.2010, 13:54
Chip
Re: Применение емкостных Touch кнопок на Carduino.
В мегаомах 1м=1000к
01.02.2010, 14:04
ShOOtnick
Re: Применение емкостных Touch кнопок на Carduino.
Цитата:
Сообщение от Chip
В мегаомах 1м=1000к
Спасибо за быстрый ответ!
Просто я привык, что мега - "М", а милии - "м" :)
01.03.2010, 22:47
gans
Re: Применение емкостных Touch кнопок на Carduino.
Ребят, подскажите а как сделать так что бы один раз нажал диод включился, второй раз нажал выключился???
01.03.2010, 23:10
Alex-NN
Re: Применение емкостных Touch кнопок на Carduino.
Цитата:
Ребят, подскажите а как сделать так что бы один раз нажал диод включился, второй раз нажал выключился???
Re: Применение емкостных Touch кнопок на Carduino.
Спасибо, разобрался.
01.10.2010, 04:31
poraboloid
Re: Применение емкостных Touch кнопок на Carduino.
Позвольте поинтересоваться, а наводки с сотового не дают ложных срабатываний сенсоров ?
Хочу применить емкостные сенсоры в машине, для управления режимами печки.
01.10.2010, 10:56
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Я не думаю что уровень наводок будет равен логическому уровню, хотя лучше проверить на практике
12.10.2010, 20:26
ParadoX_Tver
Re: Применение емкостных Touch кнопок на Carduino.
А не подскажите в чём может быть проблема. Полученное значение произвольно скачет, и соответственно диод постоянно мигает. Уже даже и не знаю на что подумать. И ещё вопрос возможно ли этим методом рассчитывать расстояние до объекта ? Видел на ютубе видео где в зависимости от расстояния руки над сенсором диод то ярче горит, то слабее.
12.10.2010, 22:27
Chip
Re: Применение емкостных Touch кнопок на Carduino.
PHP код:
if (temp1 > 60) // изменяя значение 60 мы регулируем чуствительность сенсора
12.10.2010, 22:35
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Цитата:
Сообщение от Chip
PHP код:
if (temp1 > 60) // изменяя значение 60 мы регулируем чуствительность сенсора
Цитата:
И ещё вопрос возможно ли этим методом рассчитывать расстояние до объекта ? Видел на ютубе видео где в зависимости от расстояния руки над сенсором диод то ярче горит, то слабее.
можно , только либу переделывать нужно
13.10.2010, 00:28
ParadoX_Tver
Re: Применение емкостных Touch кнопок на Carduino.
Цитата:
Сообщение от Chip
PHP код:
if (temp1 > 60) // изменяя значение 60 мы регулируем чуствительность сенсора
Это понятно. Значение прыгает от 1 до 2600, и при прикосновении на секунду сбрасывается на ноль и потом снова начинает прыгать...
13.10.2010, 03:36
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Номинал резистора какой?
13.10.2010, 15:48
ParadoX_Tver
Re: Применение емкостных Touch кнопок на Carduino.
переберал от 1 до 10 Мом
15.10.2010, 03:48
Chip
Re: Применение емкостных Touch кнопок на Carduino.
А контактная площадка заизолирована?
13.12.2010, 20:05
zhserg
Re: Применение емкостных Touch кнопок на Carduino.
Не стал создавать новую тему, напишу в этой.
Вышеприведенную библиотеку я применил для управления подсветкой в кухне (в гарнитуре у нас в дверках верхних шкафов белые матовые пластиковые вставки и за них я приклеил светодиодную ленту).
Идея такова - входя на кухню, прикладываем ладонь к стенке шкафчика где установлен датчик (он у меня из 10коп монетки), загорается подсветка и горит 5 мин, потом сама выключается, если до того не будет повторного "нажатия".
Схему не нарисовал, т.к. она очень простая и не отличается от примера в начале темы. Управление лентой через полевой транзистор IRLR2905. Если кому будет нужно, то нарисую.
Вот код программы:
PHP код:
#include <CapSense.h> // подключить библиотеку
CapSense Sensor1 = CapSense(12,7); // назначить пины для сенсора
int LEDpin = 3; // подключение LED ленты на 3-ий пин
byte sens = 0;
unsigned long lastTime = 0; // последнее измерение
unsigned long timeLight = 300000; // продолжительность свечения 5 мин
void loop()
{
long temp1 = Sensor1.capSense(30); // измерить емкость и сохранить в temp1
if (temp1 > 60) // изменяя значение, мы регулируем чуствительность сенсора
{ if (sens == 0 ) {sens = 1;}
else {sens = 0;}
on_off_LED (sens);
if (sens == 1) {lastTime = millis();} // засекаем время
}
delay(500); //пауза между нажатиями
if (((millis() - lastTime) > timeLight) && (sens == 1)) {
sens = 0; // если прошло 5 мин, то выключаем
on_off_LED (sens);
}
// Serial.println(temp1);
}
void on_off_LED (byte on) // плавное включение и выключение
{
if (on == 1) {
for (int i=0; i <= 128; i++){
analogWrite(LEDpin, i);
delay(3);
}
}
else{
for (int i=128; i >= 0; i--){
analogWrite(LEDpin, i);
delay(3);
}
}
}
26.12.2011, 15:17
utking
Вложений: 3
Re: Применение емкостных Touch кнопок на Carduino.
Добрый день , подскажите что не так?! резистор 1Мом из сотового телефона .
На сенсор ни как не реагирует.
Сенсор проверяется в антистатическом помещении (пол антистатический линолеум , на ногах антистатические тапки), может из за этого?!
26.12.2011, 19:18
zhserg
Re: Применение емкостных Touch кнопок на Carduino.
Переключи на цифровые входы. У тебя вроде к аналоговым подключено.
28.12.2011, 14:50
utking
Re: Применение емкостных Touch кнопок на Carduino.
заработало поставил большой резистор)) спасибо
27.10.2013, 22:50
Omigovolt
Re: Применение емкостных Touch кнопок на Carduino.
появился один вопрос как эти кнопки будут вести себя при статическом электричестве? если я к примеру случайным образом разряжусь через эту кнопку после того как сниму синтетическую футболку.
27.10.2013, 22:52
Chip
Re: Применение емкостных Touch кнопок на Carduino.
Так она же гальванически развязана, то есть находится под пластиком или под пленкой
27.10.2013, 23:19
Omigovolt
Re: Применение емкостных Touch кнопок на Carduino.