Elektroniczny odstraszacz kretów :D

Prezentacje projektów
ODPOWIEDZ
Awatar użytkownika
niveasoft
Posty: 1207
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Elektroniczny odstraszacz kretów :D

Post autor: niveasoft » 15 cze 2022, 17:54

Kupiłem na Alledrogo dwa odstraszacze kretów po 20zł każdy. Reklamują je tak : Żeby kret się nie przyzwyczaił częstotliwości, odstępy w czasie i długość dźwięku się zmieniają.
Wyszło na to że nic z tego nie jest prawdą. Możecie na jednym foto zobaczyć co jest w środku. Zwykły brzęczek który można kupić za 5zł więc częstotliwość dźwięku jest stała. Do tego to 404Hz a krety nie lubią wyższych częstotliwości.
Do tego jest tam zbudowany na dwóch tranzystorach najprostszy bistabilny przerzutnik tak więc i odstępy są stałe i długość dźwięku jest stała.

Na foto z psem możecie zobaczyć, że trzeba te odstraszacze uszczelnić taśmą. Ja tego nie zrobiłem za pierwszym razem i zalała mi go woda...dlatego musiałem zbudować swój moduł elektroniczny :D Krzyżyk na wieczku jest po to by go po czasie łatwiej było znaleźć w trawie ;)

Użyłem Attiny2331, chociaż wystarczyłby jakiś Tiny13, bo mam ich dużo. Jako przetwornika dźwięku użyłem głośnika z laptopa bo mam całą masę różnych starych laptopów na części a te głośniki są małe i mają obudowy.
By nie używać wzmacniacza głośnik podłączyłem na wzór D-CLASS amplifier :D

Mój odstraszacz losuje nową częstotliwość, nowy czas długości dźwięku i nowy czas przerwy. Tak by kret się nie przyzwyczaił :D
Z wartościami można poeksperymentować.

Zużycie prądu baterii jest następujące : Podczas odtwarzania dźwięku ~24mA a podczas przerwy 9uA

Baterie kiedy je wkładałem zimą miały 1,59V. Po sześciu miesiącach mają 1,48V
Niemniej rozważam wbudowanie takiego odstraszacza w lampkę solarną z akumulatorem ;)

Teraz skuteczność. Krety się wyprowadziły do sąsiadów :D
  1. 'Electronic Mole Scare Device  by BARTek
  2. $regfile = "attiny2313.dat"                                 ' the used chip
  3. $crystal = 1000000                                          ' frequency used
  4. $hwstack = 40
  5. $swstack = 0
  6. $framesize = 24
  7. $baud = 38400
  8.  
  9. Config Portd = &B0000_1100 : Portd = 255                    'D2 &D3
  10.  Sw Alias Pinb.0 : Portb = 255
  11.  
  12.  
  13. Dim Period As Word , Adc_val As Word
  14. Dim On_off As Byte , Sound_on As Byte , Sound_time As Byte , Idle_time As Byte
  15. Dim T0_ticks As Byte , 100ms As Byte
  16.  
  17. Config Timer0 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  18.  Compare0a = 96                                             '100ms @1MHz/1024
  19.   On Compare0a Timer0_isr
  20.    Enable Compare0a
  21.  
  22.  
  23.  Set Acsr.acd                                               'disable AD
  24.  Stop Watchdog
  25.  
  26.  Enable Interrupts
  27.  
  28. Do
  29.  
  30.  If 100ms = 0 Then
  31.   100ms = 9
  32.      If Idle_time = 0 Then                                  'we reboot or its time
  33.       Sound_on = 1                                          'sound will be played
  34.       T0_ticks = 0                                          'reset time counter to be compared
  35.       Do                                                    'draw new time for pause
  36.        Idle_time = Rnd(99)                                  '99 maximum
  37.       Loop Until Idle_time > 9                              '9  minimum
  38.  
  39.      Else
  40.       Decr Idle_time                                        'countdown
  41.      End If
  42.  End If
  43.  
  44.  Do                                                         'draw freq everytime for better randomness
  45.   Period = Rnd(60)
  46.  Loop Until Period > 3
  47.  
  48.  Do
  49.   Sound_time = Rnd(30)                                      'draw period for sound
  50.  Loop Until Sound_time > 15
  51.  
  52.  
  53.  '-------[PLAYING HERE]--- (24mA)
  54.  While Sound_on = 1                                         'this flag will be cleared in ISR
  55.   Portd = &B0000_1000
  56.   Waitus Period
  57.   Portd = &B0000_0100
  58.   Waitus Period
  59.  Wend
  60.  '------------------------
  61.  Portd = 255                                                'playing end
  62.  
  63.  Config Powermode = Idle                                    'go to sleep (~9uA)
  64.  
  65. Loop
  66. End
  67.  
  68. 'ISR is needed to jump from While-Wend to measure time
  69. Timer0_isr:                                                 '100ms
  70.   If Sound_on = 1 Then
  71.     Incr T0_ticks
  72.     If T0_ticks = Sound_time Then                           'compare with drawn time
  73.      Sound_on = 0
  74.  
  75.     End If
  76.   Else
  77.      If 100ms > 0 Then Decr 100ms
  78.   End If
  79. Return
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
ODPOWIEDZ