Данное устройство было сделано мной и испытано на 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); //Пауза между повторными нажатиями
}