niedziela, 11 maja 2014

Capacitive Touch Switch - czyli sensor dotykowy :)

Witajcie! W dzisiejszym odcinku chciałbym zaprezentować takie nietypowe "mrygadełko" diodą led. Mianowice chodzi mi tutaj o sensor pojemnościowy. Z tego typu sensorami możemy się spotkać np: w telefonach komórkowych gdzie zarządzanie aplikacjami odbywa się za pomocą wybierania na ekranie funkcji. W naszych zastosowania to raczej będzie się nadawało to jakiegoś włącznika światła czy urządzenia zbudowanego na mikrokontrolerze. Przedstawiony sposób jest o tyle fajny, że wykorzystujemy tylko jeden pin portu na nasz TouchSwitch. Ja na mojej płytce prototypowej podłączyłem kawałek typowej łączówki do pinu PC7 Atmegi32 a na jej końcu umieściłem rezystor 560K, dla lepszej czułości. Tutaj proponuje samodzielnie dobrać wartość rezystora i sprawdzić dla jakiej wartości czułość naszego TouchSwitcha będzie odpowiednia. Ja akurat taki rezystor miałem pod ręką. Kod jest bardzo prosty i nie wymaga tłumaczenia. Wszystkie ważniejsze kroki zostały opisane komentarzami:)
#include 
#include 

void touch_switch(void);
uint8_t key_lock;

int main(void)
{
	DDRC |= (1 << PC0);    // pin diody jako wyjcie

	while(1)
{

		touch_switch();

	}
}
void touch_switch(void)
{


		DDRC |= (1 << PC7);		//pin PC7 jako wejcie
		PORTC &=~(1 << PC7);		// stan niski na pin PC7
		_delay_ms(1);
		DDRC &=~(1 << PC7);		//pin PC7 jako wejcie
		_delay_us(20);



	if( !key_lock && (PINC & (1 << PC7) )) //tutaj sprawdzamy czy nasz sensor pojemnociowy jest dotknięty
    {
	  key_lock=150;				//ustawiamy stan zmiennej key_lock na wartoc początkową 150				

	  PORTC ^= (1 << PC0);                 //zmiana stanu diody

	} else if( key_lock && (PINC & 1 << PC7 )) key_lock++;	//sprawdzamy czy sensor został puszczony

}

Film pokazujący nasz czujnik w akcji:)



Oczywiście aby mieć bardziej profesjonalny czujnik można takowy zaprojektować sobie
np. w Eaglu oraz wytrawić płytkę.

Przyjemnej zabawy:)

Brak komentarzy:

Prześlij komentarz