roboforum.ru

Технический форум по робототехнике.

Емкостный датчик касания на ORduino

Емкостный датчик касания на ORduino

dccharacter » 23 янв 2011, 21:16

Всем привет,

Делаю датчик касания, схема описана на хабре: http://habrahabr.ru/blogs/DIY/111679/. У меня от пина на VCC резистор 2МОм, от пина к датчику конденсатор 0,1мкФ (маркировка 104).

Вот скетч:

Код: Выделить всёРазвернуть
#define SENS47K 7
#define SENS10K 3
#define SENS1M  4

void setup()
{
Serial.begin(115200);
}

void loop()
{
  unsigned int j;
  unsigned int ave;

  pinMode(SENS47K,OUTPUT);
  pinMode(SENS10K,OUTPUT);
  pinMode(SENS1M,OUTPUT);
 
  digitalWrite(SENS47K,LOW);
  digitalWrite(SENS10K,LOW);
  digitalWrite(SENS1M,LOW);
 
  delay(1);

  pinMode(SENS47K,INPUT);
  digitalWrite(SENS47K,LOW);


  for ( j = 0; j < 50000; j++) {
    if ( digitalRead(SENS47K) ) break;
  }


  //ave = ave*3/4+j/4;
 
  Serial.print("47K = ");
  Serial.println(j,DEC);


  delay(200);
}


Почему-то только каждое 6-е чтение нормальное. Пробовал усреднять:

Код: Выделить всёРазвернуть
ave = ave*3/4+j/4;


Результат поверг меня в еще большее смущение, ничего особо не меняется... То ли не так усредняю, то ли еще что...

Код: Выделить всёРазвернуть
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
// ПРИМЕЧАНИЕ - вот в этот момент касаемся сенсора
47K = 2110
47K = 17
47K = 11
47K = 10
47K = 10
47K = 25
47K = 1912
47K = 22
47K = 12
47K = 8
47K = 9
47K = 11
47K = 22
47K = 1903
47K = 19
47K = 13
47K = 10
47K = 10
47K = 18
47K = 1927
47K = 22
47K = 14
47K = 14
47K = 13
47K = 18
47K = 37
47K = 1765
47K = 26
47K = 17
47K = 13
47K = 14
47K = 25
47K = 2119

Re: Емкостный датчик касания на ORduino

=DeaD= » 23 янв 2011, 21:24

Что-то там на схеме половины ардуино нету - RX/TX вообще свободные, а в реальной Ардуино они ни разу не свободы :pardon:

Re: Емкостный датчик касания на ORduino

dccharacter » 23 янв 2011, 21:28

Эээээ, ну если присмотреться к скетчу, то можно сделать вывод, что я читаю данные с 7-го пина. Он, вроде, к РХ/ТХ отношения не имеет...

Да и потом - я ж просто принцип реализую в том железе, что у меня есть. Схема - я имею ввиду схему подключения датчика, сорри, если непонятно написал...

Re: Емкостный датчик касания на ORduino

=DeaD= » 23 янв 2011, 21:44

Упс, не присмотрелся, сразу в схему полез :) тогда нет идей. Осциком бы глянуть...
Может delay(1) маловат

Re: Емкостный датчик касания на ORduino

Michael_K » 23 янв 2011, 22:46

1.
Чел на хабре не догоняет про емкость - это НЕ емкостной датчик. Этот датчик меряет наводки на тело, а не емкость.

2. Вы с емкостью конденсатора ошиблись на несколько порядков. Я бы емкость не ставил вообще. Если ставить, то очень-очень маленькую - ну может быть десятки _ПИКО_фарад.

3.
Емкостные датчики я делал - это не сложно. Чтобы этот датчик стал емкостным, на площадку нужно наклеить кусок пластика с хорошей диэлектрической проницаемостью. Подойдет скотч. Хорошо бы его наклеить без пузырей.

По временам - не знаю что там у вас в коде, я просто считал такты в коротком цикле... безо всяких делэев. усреднял за 20 миллисекунд (чтобы подавить наводки от сети 50 Гц).

Re: Емкостный датчик касания на ORduino

dccharacter » 23 янв 2011, 23:35

Опять эээээ. Переделал схему на PIC-е. Датчик сделан по-другому (просто площадка сенсорная). Начинаю заряжать себя любимого, прикоснувшегося к сенсору, через 50 мкс запускаю АЦП. ВОт выход:

Код: Выделить всёРазвернуть
36 = 128
37 = 0
38 = 0
39 = 17
40 = 126
41 = 198
42 = 0
43 = 0
44 = 0
45 = 41
46 = 173
47 = 98
48 = 0
49 = 0
50 = 0
51 = 98
52 = 194


Здесь закономерность не такая как на ардуине, но она есть!!!!!!!!!!!!
Похоже правда какие-то наводки (скорее всего от сети) - давно заметил, что когда беру в руки осциллограф, он синусоиду рисует с частотой 50 герц.

Так, сейчас буду осмысливать предыдущий ответ.

Добавлено спустя 1 минуту 8 секунд:
Michael_K писал(а):2. Вы с емкостью конденсатора ошиблись на несколько порядков. Я бы емкость не ставил вообще. Если ставить, то очень-очень маленькую - ну может быть десятки _ПИКО_фарад.


Ставил "резонаторные" кондеры - 39пФ. Все то же, только меньше отсчеты.

Добавлено спустя 2 минуты 27 секунд:
Слушайте, а помните я для товарища собрал серво-контроллер на НЕ555? Так вот там немножко гуляла длительность импульса на сервомашинку. Очень пилообразно гуляла.

И тут, посмотрите на отсчеты:
Код: Выделить всёРазвернуть
377 = 213
378 = 224
379 = 247
380 = 213
381 = 226
382 = 239
383 = 203
384 = 227
385 = 245
386 = 212
387 = 217
388 = 248
389 = 209


Совпадение?

Re: Емкостный датчик касания на ORduino

noonv » 23 янв 2011, 23:44

а если ещё уменьшить скорость работы Serial?

Re: Емкостный датчик касания на ORduino

noonv » 23 янв 2011, 23:51

dccharacter писал(а):Добавлено спустя 1 минуту 4 секунды:
noonv писал(а):а если ещё уменьшить скорость работы Serial?

ЕЩЕ уменьшить? И так 115200, куда же еще уменьшать?

в сторону уменьшения, естественно :))))

Re: Емкостный датчик касания на ORduino

Myp » 24 янв 2011, 00:34

dccharacter писал(а):ЕЩЕ уменьшить? И так 115200, куда же еще уменьшать?

отключить вобще и оставить только моргающий светодиод :)

Re: Емкостный датчик касания на ORduino

dccharacter » 24 янв 2011, 00:41

Если бы не инертность глаза - без проблем!

Добавлено спустя 3 минуты 21 секунду:
Сделал довольно-таки робастный датчик на ПИКе, но он очень контактный. Даже очень близкое приближение пальца не меняет показаний. Наверное это тоже не емкостный а "на наводках". Но развлечение интересное.

Re: Емкостный датчик касания на ORduino

Angel71 » 24 янв 2011, 00:44

тут главное определиться с целью. одно дело самому покодить и схемку сделать. другое взять недорогую спец микру и не мучаться + разгрузить немного проц

Re: Емкостный датчик касания на ORduino

dccharacter » 24 янв 2011, 00:50

Цели у меня нет. С нового года не отпускает аппатия. На фоне этого прикрутил к ардуине контроллер от плейстейшна - мега вещь (два аналоговых джойстика, 15 цифровых кнопок и вибрация), вот слабал сенсорный датчик.

Уже отупение наступает. Вот скоро придут мосфетики для согласования уровней 5/3,3В i2c - поиграюсь с акселерометрами. А так - зачем и нафига оно нужно - не могу себе на вопрос ответить...

Re: Емкостный датчик касания на ORduino

Michael_K » 24 янв 2011, 02:19

dccharacter писал(а):Сделал довольно-таки робастный датчик на ПИКе, но он очень контактный. Даже очень близкое приближение пальца не меняет показаний. Наверное это тоже не емкостный а "на наводках". Но развлечение интересное.

Так и должно быть. Емкость будет большая, если диэлектрик будет хороший. Если воздух есть - емкость резко падает.
Вот тачпад на ноутах емкостной - он тоже на расстоянии не чувствует.

Re: Емкостный датчик касания на ORduino

=DeaD= » 24 янв 2011, 08:52

dccharacter писал(а):Цели у меня нет.

Предлагаю вам цель - сделать модуль акселя+гиро 6 осей, под продажу :)
Наверное сразу с МК на борту, типа ATMega168.

Re: Емкостный датчик касания на ORduino

dccharacter » 24 янв 2011, 11:34

Года за три осилю. Часы вон все никак не доделаю из винта, уже три драйвера спалил, вот жду компоненты на четвертый-шестой драйвера.

Это про то, где "требуется прошивка" с фильтром Калмана? Там там же на АРМе просят. У меня, кстати, и евал-борда есть с этим процем. Только как-то это вроде неинтересно. Я абсолютно не в теме, а поэтому даже постановка проблемы мне не ясна. А решать непонятно какой вопрос... Или тиражируемый модуль для Open Robotics???


Rambler\'s Top100 Mail.ru counter