- zmiana stanu wyjścia następuje po podwójnym klaśnięciu,
- napięcie zasilania: 9 V,
- prąd obciążenia (przekaźnik wyłączony/załączony): 10/60 mA,
- maksymalne napięcie styków przekaźnika: 240V AC,
- maksymalny prąd styków przekaźnika: 10 A.
Zaprezentowany układ umożliwia sterowanie pracą urządzeń elektrycznych za pomocą dźwięku, a dokładnie za pomocą klaśnięć w dłonie. Było już wiele takich urządzeń ale to zostało zaimplementowane w zupełnie nowy, a zarazem prosty, sposób, dzięki dobrodziejstwom techniki mikroprocesorowej.
Budowa i działanie
Schemat urządzenia nazwanego Clap2 został pokazany na rysunku 1. Jest to bardzo prosty system mikroprocesorowy, którego pracą steruje miniaturowy mikrokontroler ATtiny13 firmy Microchip (dawniej Atmel). Taktowany jest wewnętrznym, wysokostabilnym generatorem RC o częstotliwości 128 kHz.
W obwodzie wejściowym sygnału audio zaprojektowano prosty wzmacniacz z użyciem tranzystora T1 oraz kilku elementów biernych, do którego jest dołączony mikrofon elektretowy. Wzmocniony sygnał audio trafia do wejścia nieodwracającego komparatora analogowego wbudowanego w strukturę mikrokontrolera, dla którego drugim poziomem odniesienia jest napięcie doprowadzane do wejścia odwracającego pozyskane z prostego dzielnika napięcia z użyciem potencjometru POT. W ten prosty sposób sygnał audio, którego poziom przekracza próg ustawiony za pomocą dzielnika POT, powoduje zmianę stanu wyjścia (ustawienie) wbudowanego komparatora analogowego.
Zadziałanie komparatora generuje przerwanie systemowe, a w podprogramie obsługi sprawdzany jest stan licznika układu czasowo-licznikowego Timer0. Licznik jest taktowany przebiegiem zegarowym o częstotliwości 125 Hz pozyskanym z podzielenia częstotliwości taktującej mikrokontroler przez podzielnik równy 1024. Dzięki takiemu rozwiązaniu każde zdarzenie – klaśnięcie, powoduje przechwycenie stanu licznika układu czasowo-licznikowego Timer0. To pozwala określić odstęp pomiędzy kolejnymi tego typu zdarzeniami, i w efekcie selektywne sterowanie przekaźnikiem wyjściowym REL (wyjście PB3 mikrokontrolera).
Schemat blokowy kompletnego systemu akwizycji zdarzeń urządzenia Clap2 został pokazany na rysunku 2. Zaimplementowany system akwizycji zdarzeń korzysta w pełni z zasobów sprzętowych mikrokontrolera za wyjątkiem dwóch, bardzo krótkich funkcji obsługi przerwań systemowych: funkcji obsługi przerwania komparatora analogowego (ANA_COMP_vect) oraz funkcji obsługi przerwania od przepełnienia licznika Timer0 (TIM0_OVF_vect). Pierwsza z funkcji odpowiada za pomiar czasu pomiędzy kolejnymi klaśnięciami odebranymi przez układ wejściowy mikrofonu elektretowego, zaś druga z nich jest niezbędna dla mechanizmu detekcji podwójnego klaśnięcia.
Mechanizm jest prosty – pierwsze podwójne klaśnięcie w dłonie włącza przekaźnik, drugie podwójne klaśnięcie powodujące wyłączenie, ale powinno nastąpić nie wcześniej, niż po 2 sekundach od pierwszej serii.
Program sterujący
Kod odpowiedzialny za inicjalizację układu czasowo-licznikowego Timer0 został pokazany na listingu 1.
//Konfiguracja Timera0: tryb Normal,
//preskaler = 1024 (f=125Hz)
TCCR0B = (1<<CS02)|(1<<CS00);
//Włączenie przerwania od przepełnienia Timera0
TIMSK0 = (1<<TOIE0);
//Konfiguracja komparatora analogowego:
//włączenie przerwania od zbocza rosnącego
//na wyjściu komparatora
ACSR = (1<<ACIE)|(1<<ACIS1)|(1<<ACIS0);
//Wyłączenie cyfrowych buforów wejściowych
//na analogowych wejściach komparatora
DIDR0 = (1<<AIN1D)|(1<<AIN0D);
Dalej, na listingu 2 pokazano kod obu funkcji obsługi przerwań systemowych: komparatora analogowego i układu czasowo-licznikowego Timer0, odpowiedzialnych za mechanizm detekcji podwójnego klaśnięcia i sterowanie przekaźnikiem wyjściowym.
//Definicje stałych mechanizmu dekodowania klaśnięć
#define FIRST_RISING_EDGE 0
#define SECOND_RISING_EDGE 1
//Przerwanie wyzwalane zboczem rosnącym
//na wyjściu komparatora analogowego,
//czyli de facto wyzwalane w momencie,
//gdy napięcie na wejściu nieodwracającym komparatora
//będzie większe niż na wejściu odwracającym komparatora
ISR(ANA_COMP_vect) {
if(Status == FIRST_RISING_EDGE) {
TCNT0 = 0;
Status = SECOND_RISING_EDGE;
} else {
//Sprawdzamy czy od pierwszego do drugiego klaśnięcia
//upłynął czas 200-700ms i przełączamy wyjście OUT
if(TCNT0 > 25 && TCNT0 < 87) OUT_TOGGLE;
Status = FIRST_RISING_EDGE;
}
CLAP_ON;
}
//Przerwanie wyzwalane przepełnieniem Timera0
//po czasie ok.2s, jeśli nie odebrano kolejnego "klaśnięcia"
ISR(TIM0_OVF_vect) {
Status = FIRST_RISING_EDGE;
}
Tyle w kwestiach programowych. Urządzenie jest niezmiernie proste, w związku z tym kod aplikacji nie jest zbyt obszerny. Prostotę tą uzyskano w dużej mierze dzięki użyciu zasobów sprzętowych mikrokontrolera, przez co skompilowany kod aplikacji zajmuje niecałe 200 bajtów.
Montaż i uruchomienie
Schemat płytki PCB wraz z rozmieszczeniem elementów został pokazany na rysunku 3.
Zaprojektowano niewielką, dwustronną płytkę drukowaną z zastosowaniem wyłącznie elementów przewlekanych montowanych po stronie TOP. Montaż urządzenia rozpoczynamy od przylutowania wszystkich rezystorów i diody D1. Następnie lutujemy kondensatory, później wszystkie elementy półprzewodnikowe (w tym diody LED CLAP i OUT), a na samym końcu mikrofon elektretowy MIC (zachowując odpowiednią polaryzację elementu), potencjometr montażowy POT, przekaźnik sterujący K1 oraz złącze przyłączeniowe AC.
Warto pocynować ścieżki obwodu drukowanego, które będą przewodziły większe prądy (celowo nie zostały pokryte soldermaską). Chodzi o ścieżki pomiędzy stykami wykonawczymi przekaźnika K1, a gniazdem przyłączeniowym AC.
Poprawnie zmontowany układ wymaga regulacji progu zadziałania detektora dźwięku (klaśnięć) czego dokonujemy kręcąc ośką potencjometru POT (zaznaczono wartości MAX i MIN).
SUT1: 1
SUT0: 0
CKSEL1: 1
CKSEL0: 1
CKDIV8: 1
Dioda LED oznaczona CLAP powinna zaświecać się na chwilę (200 ms) przy każdym klaśnięciu w dłonie mającym zmienić stan przekaźnika K1. Należy tak ustawić czułość układu by dioda ta nie zaświecała się przy najgłośniejszych dźwiękach otoczenia, zaś reagowała na dźwięki klaśnięć w dłonie. Z kolei dioda świecąca OUT zaświeca się w przypadku załączenia przekaźnika wyjściowego K1.
Na płytce urządzenia (po stronie TOP) przewidziano specjalne pola lutownicze (MOSI, MISO, SCK, RES, VCC, GND), dzięki którym możliwe jest podłączenie zamontowanego mikrokontrolera do programatora w celu zaprogramowania pamięci Flash.
Robert Wołgajew, EP
- R1: 150 Ω
- R2: 10 kΩ
- R3: 5,6 kΩ
- R4: 100 kΩ
- R5: 820 Ω
- R6: 1 kΩ
- C1, C4: 1 μF ceramiczny MLCC
- C2: 100 nF ceramiczny
- C3: 10 μF/16 V (∅ 5 mm) elektrolityczny
- U1: ATtiny13 (DIP-08)
- U2: 78L05 (TO-92)
- T1, T2: BC546B (TO-92)
- D1: 1N4148 (DO-35)
- CLAP: dioda LED 3 mm zielona
- OUT: dioda LED 3 mm czerwona
- K1: przekaźnik G5LE-14-9
- MIC: mikrofon LD-MC-6035P
- POT: potencjometr montażowy leżący 10 kΩ
- AC: złącze śrubowe AK500/2