Sygnalizator akustyczny

Rys. Sygnalizator akustyczny.

Cele

Projekt miał na celu budowę konfigurowalnego sygnalizatora akustycznego. Układ działa w oparciu o mikrokontroler PIC16F87. Jako sygnalizator akustyczny został użyty głośnik piezoelektryczny. Wyprowadzenie ICSP ułatwia szybkie przeprogramowanie układu; zmianę zestawu generowanych sygnałów akustycznych, reakcję układu na stan dwóch linii sterujących oraz sygnalizację za pośrednictwem LED.

Wybrane zastosowania układu.

  1. sygnalizator w układach alarmowych,
  2. prosta centrala alarmowa wraz z sygnalizatorem,
  3. odstraszacz psów, ptaków.

Szerszy opis wybranych zastosowań.

1. Układ docelowo będzie pełnił funkcję sygnalizatora akustycznego umieszczonego na zewnątrz budynku i współpracującego z centralką alarmową. Po podaniu zasilania przez centralę do sygnalizatora (w przypadku naruszenia strefy chronionej) sygnalizator uruchomi kilkuminutowy sygnał o zmiennej częstotliwości. Po kilku minutach przez następne kilkanaście minut sygnał będzie pulsacyjny, by po jego wyłączeniu zasygnalizować naruszenie strefy za pomocą lampki LED – do czasu rozbrojenia alarmu.

2. Przewiduje się, że czasowo układ przejmie funkcję centrali alarmowej (zanim system alarmowy zostanie w pełni uruchomiony w obiekcie). Układ będzie dozorował dwie linie z czujnikami PIR sygnalizując naruszenie stref. Jedna ze stref znajduje się wewnątrz budynku, jej naruszenie spowoduje uruchomienie sygnału o zmiennej częstotliwości przez kilkanaście minut i zasygnalizowanie tego faktu poprzez zapalenie LED po wyłączeniu syreny. Druga strefa chroniona znajduje się na zewnątrz budynku. Jej naruszenie (np. przez zwierzęta) będzie skutkować uruchomieniem kilkusekundowych impulsów sygnału dźwiękowego o częstotliwości 22kHz.

3. Istnieje możliwość wykorzystania układu w celu odstraszania zwierząt. Układ będąc podłączonym do centrali alarmowej i pełniąc funkcję syreny alarmowej, może również generować w losowych odstępach czasu dźwięki niesłyszalne dla człowieka a odstraszające zwierzęta np. na częstotliwości 22kHz. Istnieje możliwość podłączenia dodatkowej linii dozorującej wtargnięcie zwierząt na obszar chroniony (czujnik PIR, mikrofalowy, bariera optyczna) co będzie skutkowało uruchomieniem sygnału odstraszającego.

Obsługa urządzenia

Po wgraniu oprogramowania sygnalizator jest gotowy do pracy. Podając stan wysoki (np. z detektora ruchu) na wejście “pre alarmu” zostaje uruchomiony krótki sygnał odstraszający o stałej częstotliwości. Podanie stanu wysokiego na wejście “panic” uruchamia alarm o modulowanej częstotliwości. Fakt wywołania alarmu jest sygnalizowany przez dłuższe zapalenie LED. Stan gotowości sygnalizowany jest krótkimi błyskami LED.

Projekt PCB

Rys. Wizualizacja PCB.

Zaprojektowana PCB urządzenia ma rozmiary 40mm na 63mm i wykonana jest w technologii THT (montaż przewlekany).
Płytka została udostępniona w fabryce PCBWay, gdzie można zamówić jej wykonanie pod tym linkiem.

Rys. Projekt PCB.

Podzespoły urządzenia

Rys. Rozmieszczenie podzespołów na płycie PCB.

 

Tab. Wartości podzespołów.

Oznaczenie Opis
C1, C2 220uF
R1,R3,R5 1k
R2 1M
R4 540
Q1 BD137
Q2 BC547
Q3 2N3904
U1 PIC16F87
U2 LM7805
Transformator brak danych
Głośnik brak danych

Program dla mikrokontrolera

Program dla mikrokontrolera został napisany w CCS C i jest dostępny do pobrania z repozytorium.

Plik programu “main.c” rozpoczyna się od definicji częstotliwości pracy zegara i fuse bitów.
Następnie zdefiniowane zostały piny sprawdzające stan wywołania typu alarmu i definicji pinu z LED.

#use delay(internal=4MHz)
 
#define SND PIN_B3
#define LED PIN_B0
 
#define PRE   PIN_B1
#define PANIC PIN_B2

Podanie stanu wysokiego na pin B1 mikrokontrolera odpowiada za wywołanie “pre-alarmu”, natomiast B2 uruchamia alarm typu “panic”.

Funkcja “play” odtwarza dźwięk o danej częstotliwości:

void play(int16 d){
      output_high(SND);
      delay_us(d);
      output_low(SND);
      delay_us(d);
}

Za wywołanie mignięcia LED odpowiada funkcja:

void blink(int16 x){
      delay_ms(800);
      output_high(LED);
      delay_ms(x);
      output_low(LED);
}

W kodzie zostały zdefiniowane przykładowe funkcje odpowiedzialne za ton alarmu; dziou(), uoidz(), sarna(). Przykładowo funkcja generująca sygnał o narastającej częstotliwości:

void dziou(){
    for(int16 x=100; x<1000; x++){
        play(x);
    }
}

Powyższe funkcje wywoływane są przez program:

void main()
{

output_low(SND);
//zerowanie wykrytych alarmów
char was_alarm = 0;
 
  while(true){
    
   //jesli był wywolany alarm
   if (was_alarm==1){
      blink(400);
   }
   //stan czuwania, alarmu nie było
   else{
      blink(10);
   }
    
    //wywołanie pre alarmu
   if(input(PRE)==true){
       was_alarm=1;
           sarna();
   }
 
   //wywolanie alarmu
   if(input(PANIC)==true){
       blink(900);
       was_alarm=1;
           for (int x=0; x<4; x++){
             //sekwencja dziou uoidz trwa 2,5 sekundy
             dziou();
             uoidz();
          }
   }
    
  }
   
}

Odnośniki

Pliki projektu:

Noty katalogowe:

Linki: