- Zasilanie 12 V DC.
- Pobór prądu w trybie aktywnym do 50 mA, w trybie czuwania ok. 10 mA.
- Bazuje na mikrokontrolerze ATtiny13.
- Efekt akustyczny tworzony za pomocą oprogramowania.
- Płytka drukowana o wymiarach (30×30) mm.
W opisanym projekcie sygnalizatora za generowanie odpowiedniego przebiegu sterującego membraną piezoelektryczną odpowiada miniaturowy mikrokontroler ATtiny13. Dzięki temu może on wytwarzać również inne dźwięki, przy jednoczesnej redukcji ceny podzespołów.
Schemat ideowy
Schemat ideowy proponowanego rozwiązania sygnalizatora zamieszczono na rysunku 1. Na górze znajduje się nieskomplikowany blok zasilacza, dostarczający napięcia dla mikrokontrolera oraz układu wykonawczego. Dioda D1 zabezpiecza sygnalizator przed uszkodzeniem w przypadku odwrotnej polaryzacji zasilania. Kondensatory C2 i C3 zapobiegają wzbudzeniu stabilizatora US1.
Tranzystor T1 oraz współpracujące z nim komponenty tworzą wejściowy obwód sygnału wyzwalania. Możliwe są dwa rodzaje sygnału wyzwalającego: albo o polaryzacji dodatniej (napięcie większe od 1 V, np. zwarcie do zasilania), albo ujemnej (np. zwarcie do masy). Są to wejścia, odpowiednio, TRG+ i TRG-. Daje to użytkownikowi dużą dowolność pod względem sposobu uruchomienia sygnalizatora. Wejście wyzwalające aktywne przez dłuższy czas powoduje cykliczne wydawanie dźwięków.
Rezystor R1 polaryzuje wejście potencjałem masy w sytuacji, gdy nie jest do niego przyłożone żadne inne napięcie. R2 ogranicza prąd bazy T1 – po podaniu napięcia na wejście TRG+, tranzystor ten nasyca się i ściąga potencjał linii TRIGGER niemal do zera. Wejście TRG- zostało zabezpieczone rezystorem R4 na wypadek nieoczekiwanej sytuacji, np. zwarcia tego wejścia do zasilania. Diody D2 i D3 otwierają się, kiedy potencjał linii TRIGGER znajdzie się poza oczekiwanym zakresem, zaś rolą rezystora R5 jest ograniczenie prądu diod znajdujących się na wejściu mikrokontrolera. Taki stopień wejściowy zapewnia skuteczną ochronę przed skutkami omyłkowego przyłączenia przewodów lub wyładowań elektrostatycznych.
Przetwornik piezoelektryczny pracuje wraz z równoległym obwodem rezonansowym, zwiększając przy okazji znajdującą się w nim pojemność. Tranzystor T1 cyklicznie nasyca się i zatyka, co powoduje – poprzez samoindukcję cewki L1 – pojawianie się na okładkach przetwornika impulsów napięcia znacznie większego od zasilającego. Rezystor R6 zmniejsza dobroć tego układu rezonansowego, co zmniejsza głośność, za to subiektywnie poprawia brzmienie sygnalizatora; staje się ono mniej „metaliczne”.
Nieużywane wyprowadzenia mikrokontrolera Attiny13A zostały spolaryzowane za pośrednictwem rezystorów 10 kΩ, co zwiększa odporność układu na ładunki elektrostatyczne.
Montaż i uruchomienie
Układ sygnalizatora zmontowano na jednostronnej płytce drukowanej o wymiarach (30×30) mm, której schemat montażowy pokazano na rysunku 2. Widok zmontowanego prototypu (od strony elementów lutowanych powierzchniowo) zamieszczono na fotografii 3. Na płytce znajduje się jeden otwór o średnicy 3 mm, który w zupełności wystarcza do jej trwałego przymocowania.
Pamięć flash mikrokontrolera należy zaprogramować gotowym wsadem oraz zmienić bity zabezpieczające: wyłączyć podział częstotliwości zegara przez 8 oraz ustawić Brown-Out Detector na 4,3 V. Ustawienie tzw. fusebitów pokazano na rysunku 4. Pierwsza zmiana jest konieczna do poprawnego działania, druga jedynie zmniejsza prawdopodobieństwo zawieszenia się układu przy wolno narastającym napięciu zasilającym.
Prawidłowo zmontowany i zaprogramowany układ jest gotowy do działania po wlutowaniu przetwornika piezoelektrycznego. Powinien być zasilany napięciem ok. 12 V (9…15 V) – im wyższe napięcie, tym głośniejsze będą generowane dźwięki. Pobór prądu wynosi ok. 10 mA w stanie spoczynku i do 50 mA podczas wydawania dźwięku (przy napięciu 12 V).
Dla ciekawskich
Program napisano w języku C w środowisku WinAVR – zamieszczono go na listingu 1. Generowanie dźwięku odbywa się za pomocą przerwań, generowanych z częstotliwością 37,5 kHz. Zostało tutaj zaimplementowane bardzo proste, programowe sterowanie wypełnieniem impulsu (PWM) do regulacji głośności. Im wyższa rozdzielczość PWM, tym mniejsza jest częstotliwość. Pozwolono tutaj na użycie opóźnień typu delay(), ponieważ jest to jedyne zadanie mikrokontrolera oraz zależności czasowe nie są krytyczne.
// Sygnalizator ding-dong
// ATtiny13, wyłączony CKDIV8 + ustawiony BOD 4,3V
// Michał Kurzela @ 2018
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define WYZW_0 bit_is_clear(PINB,PINB4) //wejście wyzwalające (TRIGGER)
#define PULSE_1 PORTB|=(1<<PORTB3) //wyjście na tranzystor
#define PULSE_0 PORTB&=~(1<<PORTB3)
//rozdzielczość w danej fazie brzmienia
volatile uint8_t rozdz_pwm;
//wartość PWMu w danej chwili, zmieniana w pętli głównej
volatile uint8_t wart_pwm = 0;
//aktualnie odliczona wartość na potrzeby realizacji PWM
volatile uint8_t licznik = 0;
ISR(TIM0_OVF_vect)
{
//inkrementuj wartość licznika, jeżeli jest zadana wartość górna
if(wart_pwm){licznik++;}
//przepełnienie licznika
if(licznik > rozdz_pwm){licznik = 0;}
//programowa realizacja PWM
if(licznik > wart_pwm) PULSE_1; else PULSE_0;
}
int main(void)
{
DDRB = 0b11101111; //konfiguracja we/wy
//wejście TRIGGER jest Hi-Z, ponieważ ma zewnętrzny
//rezystor podciągający
PORTB = 0b11100111;
//Timer0 zgłosi przerwania z częstotliwością 9,6MHz / 256 = 37500 Hz
//(bez preskalera)
TCCR0B |= (1 << CS00);
TIMSK0 |= (1 << TOIE0);
sei(); //aktywacja systemu przerwań
while(1)
{
if(WYZW_0)
{ //wejście TRIGGER aktywuje się poziomem niskim
rozdz_pwm = 57; //dźwięk "ding"
//dźwięk powoli cichnie
for(wart_pwm = rozdz_pwm/2; wart_pwm < 47; wart_pwm++)_delay_ms(45);
rozdz_pwm = 68; //dźwięk "dong"
for(wart_pwm = rozdz_pwm/2; wart_pwm < 68; wart_pwm++)
{
_delay_ms(35);
if(wart_pwm > 64)_delay_ms(30);
}
wart_pwm = 0; //wyłączenie dźwięku
PULSE_0;
licznik = 0;
_delay_ms(1000);
}
}
Na zaciskach przetwornika piezo odkłada się napięcie, którego oscylogram widnieje na rysunku 4. Pomimo zasilania układu napięciem 12 V, chwilowa wartość tego napięcia może przekraczać 30 V, co jest skutkiem zastosowania dławika L1. Tutaj widać moment przejścia z dźwięku „ding” na „dong”: pierwszy cichnie (małe napięcie), drugi wybrzmiewa pełną siłą (wysokie napięcie).
Częstotliwości dźwięków oraz czas ich trwania zostały dobrane eksperymentalnie. Nic nie stoi na przeszkodzie, aby je dostosować do swoich wymagań.
Michał Kurzela, EP
- R1…R3, R5, R7, R9…R12: 10 kΩ
- R4, R8: 1 kΩ
- R6: 470 Ω
- JP1: 0 Ω (SMD 1206, zwora)
- C1: 22 μF/25 V (elektrolit.)
- C2, C3, C5, C6: 100 nF (SMD 0805)
- C4: 10 μF/10 V (SMD 0805)
- D1: M7 (DO214AC)
- D2, D3: 1N4148 (MiniMELF)
- T1, T2: BC817 (opis w tekście)
- US1: 78L05F (SOT89)
- US2: ATtiny13, ATtiny13A (SO8)
- L1: 47 mH (pionowy, opis w tekście)
- Przetwornik piezo 45 mm bez generatora np. PIEZO T45A (opis w tekście)