erstellt 23.08.2016
Ultraschall Störsender
Weil einige Nachbarn sich immer öfter sogenannte Marderabwehrgeräte in den Garten stellen,die ein hörbar nervtötendes Geräusch verursachen
entschloss ich mich mit ein ebenso nervtötendes Geräusch dagegen zu halten.
Es gibt leider meines Wissen keine Gesetzliche Grundlage um ein solches Geräusch zu verbieten, so sah ich mich leider gezwungen zu dieser nicht Sozialen
Lösung zu greifen.
Mir schwebte daher ein Ton vor der sein Geräusch, durch einen großes Frequenzspektrum auf und ab schwellen ließ, so das es auch von Menschen die nicht mehr
die volle Hörfähigkeit haben, es hören können.
Das Projekt soll mit einen Atmega Mikroprozessor verwirklicht werden, und sollte folgende Vorausetzungen erfüllen.
  • Einstellbare Frequenz
  • Beim betätigen der beiden Taster für die Frequenzeinstellung soll eine Led kurz leuchten zur Anzeige das die Taster funktionieren
  • Nachdem eine Frequenz eingestellt wird sollt innerhalb einer kurzen Zeit diese Frequenz dauerhaft gespeichert werden.
  • Eine Rote Betriebsanzeige ( langsames kurzes aufblinken ).
  • Eine Grüne Led soll das erreichen der Grenzfrequenz anzeigen (schnelles kurzes blinken )
  • Wenn beim einschalten der Anlage die  Taster für "Frequenz hoch" festgehalten  wird soll die Schaltung im Wobbelmodus ( Ultraschall )laufen.
  • Wenn beim einschalten der Anlage der Taste für "Frequenz runter" festgehalten wird soll die Schaltung im Wobbelmodus ( hörbarer Schall ) laufen.


Pin Übersicht des Atmega 8 Mikroprozessor



Schaltung



Funktion
Der Prozessor selber wird über einen Spannungsregler mit einer konstanten 5 Volt Spannung versorgt, wobei die volle Batteriespannung direkt den Piezo ansteuert um
so eine höhere Ausgangsleistung zu ermöglichen.
Die Taster S1 sowie S2 dienen der Frequenzeinstellung, und die Led's dienen bis auf Led1 nur als Anzeige und zu Prüfzwecke bei der Erstellung der Schaltung ( können also auch weggelassen werden).
Hingegen ist Led1 zur Funktion der Schaltung wichtig, es würde zwar auch ohne Led1 funktionieren, allerdings wäre die Ausgangsleistung sehr viel geringer.
Die Schaltung hat drein Moden.

Modus 1
Wird während der Einschalter betätigt wird gleichzeitig die Taste S1 kurz festgehalten , befindet man sich im Modus in der ein hörbarer Ton gewobbelt wird.
Es wird also ein Ton erzeugt dessen Frequenz sich immer mehr erhöht um sich dann bei einer gewissen Tonhöhe wieder verringert,dies passiert dann laufend von vorne .

Modus 2
Wird während der Einschalter betätigt wird gleichzeitig die Taste S2 kurz festgehalten
 befinden wir uns im Modus in der ein Ultraschall -Ton gewobbelt wird.

Modus 3
Wird normal nur über den Ein/Ausschalter die Anlage eingeschaltet, wird ein Normaler Ton erzeugt dessen höhe sich mit den Taster einstellen lässt.
Nachdem einer der Taster nach einen Einstellvorgang für etwas 10 Sekunden nicht mehr betätigt wird, wird automatisch die Aktuell eingestellte
Frequenz dauerhaft abgespeichert, und steht dann nach dem Abschalten und erneuten Einschalten der Anlage sofort wieder zu Verfügung.















Bascom Programm
Programmzeile
Bemerkung
$regfile "m8def.dat"         
Definiert den Atmega als Atmega 8
$crystal = 1000000           
Gibt die Quarzfrequenz an in Herz
$hwstack = 32                
Default use 32 Hardware reservierte Speicher
$swstack = 10                
Default Software resvierung Speicher
Dim Eprom As Eram Word
Dim Ram As Word
Dim A As Word                
Variable für Warteschleife Timer ein / aus schalten
Dim Timer_null_wert As Byte
Dim C As Byte
Dim B As Word                
Variable für cmpare1A höher oder niedriger
Dim Speicherzaehler As Word
Dim H As Byte
Dim Aa As Word
Ddrc = &B00111000            
Port , C.3, C4 , C5 als Ausgänge
Ddrb = &B00000011           
PortB.1 als Ausgang setzen
Portd = &B00001100          
Pull Up an Portd2 und D3. setzen
On Timer0 Timer_null
Timsk.toie0 = 1             
interrupt für timer0 freigeben
Sreg.7 = 1                  
Globale Interrupt Freigeben
Tccr1a = &B01000000         
Timer 1 Konfiguration
Tccr1b = &B00001001         
Takt durch 1048 Teilen
Ram = Eprom
Waitms 50
Compare1a = Ram
Waitms 50
H = 10
If Pind.2 = 0 Then Goto Wobbel_low
If Pind.3 = 0 Then Goto Wobbel_high
Do
Portc.4 = 1                 
Betriebsled Rot einschalten
Waitms 10
If Pind.2 = 0 Or Pind.3 = 0 Then Portc.5 = 1 Else Portc.5 = 0
If Pind.2 = 0 Then Compare1a = Compare1a + B
If Pind.3 = 0 Then Compare1a = Compare1a - B
If Pind.2 = 0 Or Pind.3 = 0 Then Timer0 = 0     
Timer 0 auf null setzen
If Pind.2 = 0 Or Pind.3 = 0 Then Speicherzaehler = 0
If Pind.2 = 0 Or Pind.3 = 0 Then Tccr0 = &B00000101     
Timer 0 wird gestartet
If Compare1a > 0 Then B = 1  
Logaritmische Frequenzänderung
If Compare1a > 40 Then B = 3
ausgleichen , anpassen
If Compare1a > 100 Then B = 20
If Compare1a > 1000 Then B = 50
If Compare1a > 1500 Then B = 100
If Compare1a > 65534 Then Compare1a = 65534     
verhindert einenÜberlauf
If Compare1a < 2 Then Compare1a = 2      
verhindert einen unterlauf
Portc.4 = 0
Waitms 100
Loop
Abspeichern:
Ram = Compare1a
Waitms 50
Eprom = Ram
Waitms 50
Return
Timer_null:
Incr Speicherzaehler
If Speicherzaehler > 10 Then Gosub Abspeichern
If Speicherzaehler > 10 Then Tccr0 = &B00000000    
Timer 0 stoppen
Return
Wobbel_high:
Compare1a = 13           
35,87 KHz Khz  bis 21 KHZ
Do
For Aa = 1 To 12
Compare1a = Compare1a + 1
Waitms 500
Next Aa
For Aa = 1 To 12
Compare1a = Compare1a - 1
Waitms 500
Next Aa
Loop
Wobbel_low:
Compare1a = 25             
 19,3 Khz  bis 1 khz
Do
For Aa = 1 To 500
Compare1a = Compare1a + 1
Waitms 5
Next Aa
For Aa = 1 To 500
Compare1a = Compare1a - 1
Waitms 5
Next Aa
Loop

nach oben


Aktualsisiert 23.08.2016