Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 29.11.2012, 00:47  
salarm
Частый гость
 
Регистрация: 05.11.2010
Сообщений: 11
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
salarm на пути к лучшему
По умолчанию Re: Кто использовал сенсорные кнопки?

Сообщение от CERGEI1982 Посмотреть сообщение
А как насчет от ложных срабатываний? от статики или наводок или еще в железе не пробовали?
Во что то новенькое PIC16F72X/PIC16LF72X Built-in mTouch™ capacative sensing module
Пробывал pic16lf1827 (CSM). В CCS есть деректива #USE TOUCHPAD . Работает прекрасно , ложных срабатываний не наблюдал . Сенсоры - батарейки(2016) с проводками напрямую к ножкам .
Реклама:
salarm вне форума  
Непрочитано 29.11.2012, 17:53  
serj_neo
Временная регистрация
 
Аватар для serj_neo
 
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
serj_neo на пути к лучшему
По умолчанию Re: Кто использовал сенсорные кнопки?

Доброго времени суток. Имею несколько наработок с сенсорами на PIC16F1825.
Начал с микрочиповкого аппнота и заметил несколько граблей.
Вот рабочий кусок кода
Код:
#define sensors 3   // Сенсоров 3
unsigned char Buttons;//Нажатые кнопки
unsigned char CopyButtons;//
unsigned int average[sensors];//среднеарифметическое для каждого сенсора
unsigned char trip[sensors];//Значение сработки сенсора
unsigned char gusterezis[sensors];//Значение отпускания сенсора
unsigned int raw[sensors];//Текущее измерение
unsigned char Index;//Шагаем по сенсорам
bit fStartCalibSens;//Если =1 то делаем непрерывное усреднение


static void interrupt isr(void)
{  
    if (TMR1GIE && TMR1GIF)
    {
        TMR1GIF = 0;
        TMR0    = 0;

	raw[Index] = TMR1L;//Считаем измеренное значение
	raw[Index] +=((unsigned int)TMR1H ‹‹ 8);
	if(!fStartCalibSens){//Если только включился контроллер
	  if(raw[Index] ‹ average[Index]){
	    if (raw[Index] ‹ (average[Index] - (unsigned int)trip[Index]) ) {// – trip
	      Buttons |= (1‹‹Index);
	    } else if (raw[Index] › (average[Index] - (unsigned int)trip[Index] + (unsigned int)gusterezis[Index])){// – trip
		Buttons &= ~(1‹‹Index);
		}
	}
	else {
		Buttons &= ~(1‹‹Index);
	}
	if(CopyButtons != Buttons){
		CopyButtons = Buttons;
	}
}
//Если только включился контроллер то производить автокалибровку путём усреднения
if(fStartCalibSens)average[Index] = average[Index] + ((long)raw[Index]-(long)average[Index])/16;
//Здесь усреднение производить раз в минуту в течении одной секунды(убираем температурный дрейф) 
      else if (!(Buttons & (1‹‹Index)) && Del_1Min == 0 && Del_5sec==0)
	average[Index] = average[Index] + ((long)raw[Index]-(long)average[Index])/16;
	
      if(++Index › sensors-1)Index = 0;
	CPSCON1 = Index+5;
	TMR1ON = 0; 
	TMR1L = 0x00;
	TMR1H = 0x00;
	TMR1ON = 1; 
    }  
    
    if (T0IE && T0IF)
    {
        T0IF = 0;
    }
}

void main(void){

  trip[0] = 120;
  trip[1] = 140;
  trip[2] = 160;
  gusterezis[0] = 24;
  gusterezis[1] = 24;
  gusterezis[2] = 24;
  Index = 0;
  TRISA = ~0x35;
  TRISC = ~0x20;
  ANSELA = 0x00; //CPS3 initialized as analog inputs
  ANSELC = 0x0E;
  CPSCON0 = 0b10001100; // Cap sense on, high range oscillator,//0x8C
  //CPSCON1 = 0x03; //Cap sense channel input 3 is selected
  OPTION_REG = 0x47; // fosc/4, hi-lo edge transition, 1:16 prescaler
  WPUC = 0xE0;
  TMR0IF = 0; // clear TMR0 interrupt flag
  TMR0IE = 1; // enable TMR0 interrupt 
  T1CON = 0xC5; // Timer1 initialization
  T1GCON = 0xE1; // Timer1 gate init /Toggle Mode/TMR0 time base
  TMR1GIF = 0; // Clear Gate Interrupt Flag
  TMR1GIE = 1; // Enable Gate Interrupt

  fStartCalibSens = 1;

  __delay_ms(100);
  average[0] = raw[0]-50; 
  average[1] = raw[1]-50;
  average[2] = raw[2]-50;
}
А вот тут сей код эзается.


Если кому поможет то буду рад.

Последний раз редактировалось serj_neo; 29.11.2012 в 18:38.
serj_neo вне форума  
Эти 2 пользователя(ей) сказали Спасибо serj_neo за это сообщение:
dead_moroz (17.04.2013), dsfj (03.08.2013)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто использовал дисплеи от сотовых телефонов - помогите! Afandi Делимся опытом 12 14.01.2012 09:48
Сенсорные кнопочки на МК day177 Микроконтроллеры, АЦП, память и т.д 31 06.12.2008 14:06
Сенсорные кнопочки vmike Автоматика и аппаратура связи 1 31.05.2008 12:00
Кто использовал ЖКИ с контроллером KS0713 ? Diusha Микроконтроллеры, АЦП, память и т.д 2 01.12.2006 08:20


Часовой пояс GMT +4, время: 02:54.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot