erstellt
12.11.2011 |
Ultraschallgenerator
mit
Atmega
8 |
Normalerweise kann der
Mensch nur
bestimmte Schallwellen hören , diese liegen je nach
Lebensalter und Empfindlichkeit
des Gehörs so zwischen 20 und 16 000 Hz. Die für den Menschen nicht mehr hörbaren Schallwellen oberhalb der Maximalen hörbaren Frequenz beim Mensch so in etwas bei 14000 Hz werden als Ultraschall bezeichnet, die unterhalb von ca. 20 Hz als Infraschall. Ultraschallwellen werden z.B. von vielen Tieren erzeugt, auch das reiben zweier Papierblätter aneinander erzeugt unter anderen auch Ultraschallwellen. Infraschall Wellen also Wellen unterhalb von etwa 20 Schwingungen pro Sekunde werden erzeugt durch heftige Windböen, Gewitterdonner, Erdbeben , Hubschrauber, Windräder und sonstigen meist großen langsam drehenden Maschinen. Das heißt aber nicht das der Mensch sie überhaupt nicht wahrnehmen kann, nur eben nicht mit seinem Gehör, aber Infraschall spürt man mit seinem Körper. Jeder kennt das meist mulmige Gefühl wenn einer dieser großen Hubschrauber über einen hinweg fliegt ,weil die relativ langsam rotierenden Rotorblätter Infraschall erzeugen. Fast alle Tiere und auch Kleinkinder können dagegen sehr viel höhere Frequenzen hören, manche ( Fledermäuse ) können sogar nur die sehr hohen Frequenzen hören. Die maximal von der Luft noch übertragbaren Frequenz liegt bei etwa 45 000 Hz. Im Wasser können Ultraschallwellen sehr gut übertragen werden, weil Wasser diese Schwingungen weniger dämpft als Luft. Deswegen werden solche Schwingungen im Wasser auch zur Ortung benutzt und breiten sich im Wasser mit ca. 1500m/Sekunde fort, also um einiges schneller als in der Luft mit ca 330m/Sekunde. In der Medizin werden Ultraschallwellen in der Sonografie verwendet, dort arbeitet man in der Regel mit Frequenzen zwischen 1,7 MHz und 3,5 MHz. In der Wissenschaft arbeitet man mit Frequenzen zwischen 15 KHz und 10 GHz. |
Diese
Schaltung
dient zum Test,
in wie weit der Mensch oder Tier Ultraschallwellen
wahrnehmen kann, ob
hörbar
oder evtl.fühlbar ? Mit dieser Versuchsanordnung werden Ultraschallwellen erzeugt die in einem gewissen Bereich einstellbar sind . |
Zur
Schaltung |
Die
Spannungsversorgung
besteht aus einer 9 Volt Block Batterie die einerseits
über einen
Spannungsregler den Mikroprozessor mit Spannung versorgt und andererseits direkt auf den Ultraschallwandler geht, damit dieser mit der vollen Batterie Spannung versorgt wird um die maximale Leistung zu erzielen. Zur Leistungsmaximierung gehört es auch den Ultraschallgeber in einem Frequenzbereich zu betreiben , der seine eigene Resonanzfrequenz entspricht. Diese ist sehr unterschiedlich und sollte dem Datenblatt entnommen werde. Im hier vorliegendem Fall hat der Ultraschallgeber eine Resonanzfrequenz von 23 KHz +- 2 KHz. Die Leuchtdioden dienen in der Hauptsache dazu bestimmte Verhaltensweisen des Prozessors in der Testphase zu kontrollieren. Über den USB Anschluss wird das Programm in den Prozessor gebrannt. Der Transistor ist ein NPN Standard Typ (BC547). Die Funktion des aktuellen Programm sieht vor das mit Taster S3 die Frequenz verringert und mit Taster S2 erhöht wird , bei Resonanzfrequenz des Ultraschallgebers blitzen alle 4 Led's im Rhythmus auf und es wird die größte Ultraschall-Leistung abgegeben , unterhalb der Resonanzfrequenz blinkt Led 4 und oberhalb Led 3 wenn das obere Ende der Frequenzskala erreicht ist blinkt Led 1 und am unteren Ende Led 2 . Das betätigen des Tasters S2 wird durch ständiges Leuchten von Led 2 angezeigt und das betätigen des Tasters S3 durch ständiges Leuchten von Led 4 |
Datenblatt zum US
Geber Datenblatt Transistor BC547 |
Zum
Programm |
|
Version 1I |
|
Programmzeile |
Beschreibung |
$regfile "m8def.dat" |
Definiert den Atmega als Atmega 8 |
$crystal
=
1000000
|
Gibt
die
Quarzfrequenz
in
Herz
an |
$hwstack
=
32
|
Default use 32 Hardware reservierte Speicher |
$swstack
=
10
|
Default Software Resvierung Speicher |
DDRC
=
&B00111100 |
PortC.2,
C.3,C.4,C.5
als
Ausgänge
setzen |
DDRB = &B00000010 | Portb.1 als Ausgang setzen |
Portd=&B00001100 |
PullUp
an
Portd.2,Portd.3
setzen
|
Tccr1a = &B01000000 | Konfiguration
des
Timer
1 |
Tccr1b
=
&B00001001
|
Konfiguration
des
Timer
1
Takt
wirtd
durch
1048
geteilt. |
Ram=Eprom |
Wert
aus
Eprom
ins
Ram
kopieren |
waitms
50 |
Pause
damit
kopiert
werden
kann |
Compare1a = Ram | Wert
aus
Ram
als
Vorgabewert
für
Vergleicher setzen |
waitms
50 |
Pause
zum
Kopieren |
Do |
Hauptprogramm
Schleifenanfang |
waitms
100 |
Pause |
Portc.5=0 |
Leds
aus |
Portc.4=0 |
Led
aus |
if
pind.2=0
then compare1A=compare1A +1 |
Taster
S3
gedrückt
dann
Vorgabewert
erhöhen |
if
Pind.2=0
then Gosub Runterlauf |
Taster
S3immer
noch
gedrückt
dann
in
Unterroutine
"Runterlauf" springen |
if
Pind.3=0
then Compare1A=Compare1A -1 |
Taster
S2
gedrückt
dann
Vorgabewert
um
1
verringern |
If
Pind.3=0
then Gosub Hochlauf |
Taster
S2
immer
noch
gedrückt
dann
in
Routine "Hochlauf" springen |
if
compare1A
>65534 then Compare1A=65534 |
Verhindert
einen
Überlauf |
if
Compare1A
> 65534 then Gosub Unterlauf |
Springt
in
Unterroutine
um
einen
fast
Überlauf
anzuzeigen |
if
Compare1A<2
Then Compare1A=2 |
Verhindert
einen
Unterlauf |
if
Compare1A=21
Then Gosub Ultraschall |
Springt
in
Unterroutine
um
23
Khz
anzuzeigen |
Loop |
Rücksprung
nach
Loop |
Unterroutine
Hochlauf |
|
Hochlauf: |
Routinen
Sprungandresse |
Ram=Ram
-1 |
Ram
Variable
um
1
verringern |
Eprom=Ram |
Ram
ins
Eprom
kopieren |
Waitms
100 |
Zeit
zum
kopieren
lassen |
Portc.3=0 |
Led
3
aus |
Return |
Rücksprung |
Unterroutine
Runterlauf |
|
Runterlauf: |
Routinen
Sprungandresse |
Ram=Ram+1 |
Ram
um
1
erhöhen |
Eprom=Ram |
Ram
ins
Eprom
kopieren |
Waitms
100 |
Zeit
zum
kopieren
lassen |
Portc.2=1 |
Led4
an |
Waitms
100 |
Pause |
Portc.2=0 |
Led4
aus |
Return |
Rücksprung |
Unterroutine Ueberlauf |
|
Ueberlauf: |
Routinen
Sprungandresse |
Portc.5=1 |
Led1
an |
Return |
Rücksprung |
Unterroutine Unterlauf | |
Unterlauf: |
Sprungadresse |
Portc.4=1 |
Led2
an |
Return |
Rücksprung |
Unterroutine
Ultraschall |
|
Ultraschall: |
Routinen
Sprungandresse |
Portc.2=1 |
Led4
an |
waitms
8 |
Pause |
Portc.2=0 |
Led4
aus |
Portc.3=1 |
Led3
an |
Waitms
8 |
Pause |
Portc.3=0 |
Led3
aus |
Portc.4=1 |
Led2
an |
Waitms
8 |
Pause |
Portc.4=0 |
Led2
aus |
Portc.5=1 |
Led1
an |
Waitms
8 |
Pause |
Portc.5=0 |
Led1
aus |
Waitms
2000 |
Pause |
Return |
Rücksprung |
End | Programmende |
Programm-Funktion |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mit
Timer
1
wird ein Takt zwischen 7,6 Hz und 250 Khz erzeugt . Über die Tasten kann die Frequenz in bestimmten Schritten erhöht oder verringert werden. Die untere Led (Led4 im Schaltplan) blinkt beim verringern, die 2.Led von unten (Led3 im Schaltplan ) blinkt beim erhöhen der Frequenz. Die obere Grüne Led ( Led 1 im Schaltplan) zeigt an wenn die Höchste und die rote Led ( Led 2 im Schaltplan) wenn die niedrigste Frequenz erreicht ist. Wenn alle 4 Led's gleichzeitig blinken ist die Resonanzfrequenz des Ultraschallgebers von 23 Khz erreicht. Die erzeugte Ausgangsfrequenz kann am Pin OC2 ( PD.7) abgenommen werden. Beim Einschalten des Gerätes wird der zuletzt eingstellte Wert wieder zur Verfügung gestellt. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Die
Ausgangsfrequnz
berechnet
sich
wie
folgt: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Arbeitsfrequenz
des
Prozessors
teilen
wir
durch
den eingestellten Prescaler, der daraus entsprechende Wert steuert erst meinen Timer an. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 000 000/1=1000 000 Hz | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wenn
ich nun mit 1 MHz den Timer ansteuere bedeutet das ,dass er
in 1
Sekunde bis 1 000 000 zählen kann, da meine Timer eine Auflösung von 16 Bit hat kann er nur bis 65535 zählen damit würde er 15,25 mal Überlaufen in 1 Sekunde. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1000 000 / 65535 = 15,25 Hz | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aber
die Frequenz
ist mir zu klein also muss ich dafür sorgen das er nicht bis
65535
zählt sondern gib ihm einen Vergleichswert , so das er schon vorher beim erreichen des Vergleichswert einen Interrupt auslöst. Bei einem Vergleichswert von beispielsweise 21 zählt mein Zähler mit 1 MHz in der Sekunde , um bei jedem 21. Takt einen Interrupt auszulösen muss also die 1000 000 durch 21 geteilt werden. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1000 000/ 21=47 619 Hz | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Weil
aber bei jedem
Überlauf der Status des Ausgang - Pin OC1A geändert wird , benötige ich 2 Änderungen um eine Schwingung zu erzeugen , also muss der Wert noch einmal durch 2 geteilt werden. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
47
619 / 2= 23 809 Hz |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei einer
Arbeitsfrequenz von 1 MHz und einem Vorteiler von 1, und
Vergleichswert
von 21 komm ich also auf 23 809 Hz. Je höher der Comparewert desto kleiner die Frequenz weil der Timer ja länger zählen muss. Meine minimale Frequenz beträgt ca 7 Hz, und die maximale 23809 Hz. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Programm hier laden | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Programm hier anzeigen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wobbelfunktion |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Was
ist eine Wobbelfunktion ? Stellen wir uns vor wir erhöhen die Frequenz ständig um sie dann wenn sie einen gewissen Wert erreicht hat wieder zu reduzieren. Wenn wir das ziemlich schnell also nicht von Hand sondern durch unseren Mikroprozessor erledigen lassen, wird so ein gewisser Frequenzbereich durchlaufen was man dann als Wobbeln bezeichnet. Im hier vorliegenden Fall bewegt sich die Wobbel Frequenz zwischen 17,79 KHz und 23,73 KHz. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Um
diese Funktion noch als Erweiterung in die vorhandene
Schaltung zu
implementieren, muss das Programm noch um einige
Programmzeilen modifiziert werden. Die zusätzlichen Zeilen sind in der Tabelle unten Blau dargestellt . Aufgerufen wird diese Funktion indem beim Einschalten des Schalters S1 einer der Tasten S2 oder S3 festgehalten wird. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aktualisiert 26.02.2021 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright by Ms 2009 |