Odstraszacz ultradźwiękowy może okazać się nieskuteczny, jeżeli generowany przez niego sygnał będzie ciągły albo przerywany, ale będzie powtarzał się w regularnych odstępach. Nawet najbardziej prymitywny organizm ma bowiem zdolność przystosowywania się do środowiska i poddawany działaniu stałych bodźców zewnętrznych, szybko się do nich przyzwyczaja. Dlatego zaprojektowany odstraszacz generuje sygnał w szerokim zakresie częstotliwości w losowych odstępach czasu.
Różne owady reagują na różne częstotliwości sygnałów ultradźwiękowych, więc częstotliwość generowanych ultradźwięków jest zmieniana w przedziale 20...40 kHz. Aby zwiększyć skuteczność odstraszacza i wyeliminować możliwość przyzwyczajenia się intruzów, częstotliwość jest zmieniana w sposób losowy.
Na rysunku 1 zamieszczono schemat ideowy odstraszacza. Do sterowania nim zastosowano nowoczesny mikrokontroler CY8C27143 w obudowie DIP-8. Nadajnik ultradźwięków Q1 włączono pomiędzy wyprowadzenia P1.0–P1.1, na których są generowane sygnały prostokątne o tej samej częstotliwości, ale w przeciwnych fazach. Zwiększa to amplitudę drgań nadajnika.
Odstraszacz jest zasilany z baterii 9 V. Dioda świecąca D1 sygnalizuje migotaniem rozładowanie. Sam mikrokontroler jest zasilany napięciem 5 V stabilizowanym przez U1. Dioda D2 zabezpiecza urządzenie przed odwrotnym podłączeniem baterii. Rezystory R2/R3 tworzą dzielnik, którego napięcie służy do monitorowania stanu baterii.
Program dla mikrokontrolera napisano w języku C z użyciem PSoC Designera. Cały projekt można znaleźć na płycie CD-EP 9/2010 i na serwerze FTP.
Blok Gen_ultr jest generatorem sygnału prostokątnego dla nadajnika ultradźwięków. Sygnał z generatora jest odwracany w bloku Inv_ultr. Blok Tim_dziel jest dzielnikiem częstotliwości dla bloku PRS16_1, pełniącego funkcję generatora pseudolosowego, którego sygnał uruchamia generator Gen_ultr w losowych odstępach czasu. Bloki ADC_BAT i PGA_BAT tworzą układ monitorowania napięcia baterii (napięcie z baterii jest mierzone przez 6-bitowy przetwornik A/C). Rdzeń mikrokontrolera pracuje z częstotliwością 93,75 kHz.
#include <m8c.h>
#include “PSoCAPI.h”
#define wPOLY 0x0CA0
#define wSEED 0xFFFF
void delay(); //procedura opóźnienia
BYTE czest_ultr; //częstotliwość generatora
BYTE flag_ultr; //zmienna flagi kierunku zmian cz. ultradźwięków
BYTE temp=0; //zmienna pomocnicza
BYTE adc_b; //zmienna próbki z ADC
void main() //program główny
{
flag_ultr=0; //wartości początkowe zmiennych
czest_ultr=100;
Inv_ultr_Start(); //Inicjalizacja mikrokontrolera
Gen_ult_WritePeriod((czest_ultr-1));
Gen_ult_WriteCompareValue((czest_ultr/2));
Gen_ult_Start();
PRS16_1_WritePolynomial(wPOLY);
PRS16_1_WriteSeed(wSEED);
PRS16_1_Start();
Tim_dziel_Start();
PGA_BAT_Start(PGA_BAT_LOWPOWER);
ADC_BAT_Start(ADC_BAT_LOWPOWER);
while(1) //petla glowna programu
{
if (flag_ultr==0)
{
Gen_ult_Stop(); // zwiększenie f. generatora
Gen_ult_WritePeriod((czest_ultr-1));
Gen_ult_WriteCompareValue((czest_ultr/2));
Gen_ult_Start();
delay();
czest_ultr--;
if (czest_ultr==49) flag_ultr=1;
}
if (flag_ultr==1) // zmniejszenie f. generatora
{
Gen_ult_Stop();
Gen_ult_WritePeriod((czest_ultr-1));
Gen_ult_WriteCompareValue((czest_ultr/2));
Gen_ult_Start();
delay();
czest_ultr++;
if (czest_ultr==100) flag_ultr=0;
}
adc_b = ADC_BAT_cGetSample(); //odczyt Ub
if (adc_b<14) //Ub za niskie - sygn. LED
{
temp++;
if (temp==25)
{
temp=0;
PRT0DR ^= 0x20;
}
}
else PRT0DR &= ~0x20; //Ub prawidłowe – wył. LED
};
}
}
void delay() //opóźnienie
{
unsigned int l, i;
for (i=0; i<25; i++)
{
for(l=0;l++;l=65000)
{
asm(„nop”);
asm(„nop”);
asm(„nop”);
asm(“nop”);
asm(“nop”);
asm(“nop”);
asm(“nop”);
asm(“nop”);
asm(“nop”);
asm(„nop”);
asm(„nop”);
asm(„nop”);
}
}
}
Na listingu 1 zamieszczono program sterujący. W pierwszej kolejności w programie konfigurowane są bloki mikrokontrolera. W pętli głównej programu, gdy flaga flag_ultr jest wyzerowana, następuje stopniowy wzrost częstotliwości ultradźwięków. Jeśli ich częstotliwość wyniesie około 40 kHz, jest ustawiana flaga Flag_ultr, a program od tego momentu będzie stopniowo zmniejszał częstotliwość sygnału do około 20 kHz. Po osiągnięciu dolnej granicy flaga Flag_ultr jest zerowana i cykl się powtarza. Choć program działa w nieskończonej pętli, generator ultradźwięków jest załączany sprzętowo przez generator pseudolosowy.
Napięcie baterii jest mierzone przez przetwornik A/C. Jeśli jest ona bliska rozładowania, wykonywana jest pętla obsługująca miganie diody D1.
Schemat montażowy układu pokazano na rysunku 2. Zmontowany z użyciem zaprogramowanego procesora odstraszacz nie wymaga uruchamiania i można go zamontować w jednej z dostępnych na rynku obudów. Należy tylko pamiętać o wykonaniu otworów, przez które będą wydostawać się ultradźwięki.
Zastosowań odstraszacza może być wiele, gdyż może płoszyć nie tylko owady, ale i inne zwierzęta, jak myszy czy psy.
Marcin Wiązania, EP
marcin.wiazania@ep.com.pl
- R1: 470 Ω
- R2: 10 kΩ
- R3: 3,3 kΩ
- C1, C3, C4: 100 nF (MKT)
- C2, C5: 47 µF/16 V
- U1: CY8C27143 (DIP8)
- U2: 78L05
- D1: LED 3 mm (czerwona)
- D2: 1N4007
- Q1: Nadajnik ultradźwiękowy TX1
- S1: złącze baterii 9 V