Blitzmessung mit dem Zähler
Blitze
nur zu zählen bewährt sich anscheinend nur bei einer geringen Reichweite des
Empfängers. Bei großer Reichweite ist dagegen der Alarm zu empfindlich.
Deshalb wird hier nach einem neuen Verfahren gesucht.
Die
bisherige Auswertung mit dem AD-Wandler hat einerseits relativ viel
Rechenzeit gekostet und konnte andererseits den Pegelunterschied nicht
gut abbilden. Dagegen scheint das folgende Verfahren besser
geeignet: Das verstärkte Signal des Empfangskreises wird direkt an den
Eingang eines Zählers gelegt. Je nach Höhe des Impulses werden mehr
oder weniger viele Schwingungen gezählt. Das Zählergebnis ist
proportional zum Logarithmus der Anfangsamplitude, weil der
Schwingkreis exponentiell ausschwingt. Damit kann ein großer Bereich
unterschiedlicher Pegel ausgewertet werden. Dass die größeren Pegel den
Verstärker bereits übersteuern spielt keine Rolle.
Das
folgende Oszillogramm zeigt eine Impulsantwort am Ausgang des
Verstärkers. Der Impuls wurde durch Entladen eines
100-nF-Kondensators mit 5 V über eine Drahtschleife in der Nähe der
Empfangsspule erzeugt. In diesem Fall wurden 9 Impulse gezählt. Das
entspricht einem durchschnittlichen Blitz in einer Entfernung von 100
km.
Zusätzlich zur Spulenantenne könnte man noch eine Stabantenne
anschließen, was die Empfindlichkeit und das Rundstrahlverhalten verbessert. Gleichzeitig
steigt damit aber auch die Empfindlichkeit gegen technische Störungen im Haus.
Die reine Magnetantenne hat dagegen einen sehr guten Störabstand und zeigte in
zwölf Stunden keinen einzigen falschen Störimpuls.
Die
Impulse werden hier mit einem ES-M32 über den Timer0 des Mega32
erfasst. Nach jeder Messung wird der Timer wieder auf Null gesetzt. Die
Daten werden Bye-weise im EEPROM gespeichert, sodass sie später
ausgelesen werden können. So können bis zu 1023 Blitze registriert
werden. Außerdem läuft auch eine einfache Auswertung der Warnstufe.
Download: Blitzwarner32EEtimer0.zip
'Blitzdatenlogger, ES-M32 mit LCD und EEPROM
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 16
$swstack = 32
$framesize = 128
Baud = 9600
Dim N As Word
Dim U As Word
Dim D As Word
Dim A As Byte 'Adresse
Dim Trigger As Byte
Dim Sta As Byte 'Startadresse , Trigerpunkt
Dim Eeadr As Word
Dim Ramadr As Byte
Dim I As Byte
Dim J As Byte
Dim B As Byte
Dim Ticks As Word 'Zeitmessung
Dim Ticks2 As Word
Dim Level As Word
Dim Daten(8) As Byte
S1 Alias Pind.2
S2 Alias Pind.3
S3 Alias Pind.6
S4 Alias Pind.7
Config Portd = &B00110000
Portd.2 = 1
Portd.3 = 1
Portd.6 = 1
Portd.7 = 1
Out1 Alias Portd.4
Out2 Alias Portd.5
Config Adc = Single , Prescaler = 8 , Reference = Off
Start Adc
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2
Initlcd
Cls
Open "com1:" For Binary As #1
Config Timer0 = Counter , Edge = Falling
'For N = 0 To 50
' Readeeprom B , N
' Print #1 , B
'Next N
Ramadr = 1
Timer0 = 0
Do
B = Timer0
If B > 0 Then
Daten(ramadr) = B
Ramadr = Ramadr + 1
If Ramadr > 8 Then Ramadr = 1
If B > 80 Then
B = 80
Waitms 300
End If
If Eeadr < 1023 Then Writeeeprom B , Eeadr
Eeadr = Eeadr + 1
Print #1 , B
D = B
D = D * 100
Level = Level + D
If Level > 20000 Then Level = 20000
Timer0 = 0
End If
If Level > 10 Then
Level = Level - 1 '1 Blitz in 10 min vergessen
If Level > 2000 Then Level = Level - 9 '1 Blitz in 1 min vergessen
If Level > 6000 Then Level = Level - 20 '3 Blitze in 1 min vergessen
End If
If Level < 1000 Then Portd = &B11001100 'weniger als 1 Blitz in 10 min
If Level > 1000 Then Portd = &B11011100 '>10 Blitze pro min
If Level > 2000 Then Portd = &B11101100 '<1 Blitz pro min
If Level > 6000 Then Portd = &B11111100 '>3 Blitze pro min
Locate 2 , 1
Lcd Level
Lcd " "
For Ticks = 1 To 10
J = Ischarwaiting(#1)
If J > 0 Then
Get #1 , J
If J = 100 Then
B = 0
For N = 0 To 1023
Writeeeprom B , N
Next N
End If
A = J * 128
For N = 1 To 128
Readeeprom B , A
Put #1 , B
A = A + 1
Next N
End If
Waitms 100
Next Ticks
For N = 0 To 7
D = N * 2
D = D + 1
Locate 1 , D
A = N + 1
D = Daten(a)
Lcd D
Next N
Loop
End
Die
folgende Messung zeigt etwa 70 Blitze eines Gewitters, das von
Frankreich nach Belgien zog und zwischen 150 km und 100 km entfernt
war. Gegen Ende kam das Gewitter zwar näher, die Intensität der Blitze
nahm aber leicht ab.
21 19 21 3 17 19 17 13 17 12 6 9 10 18 18
18 5 5 6 12 7 18 18 9 8 2 9 7 2 10 8 3 10
9 8 8 8 9 8 1 9 8 1 10 5 3 10 8 9 4 6 10
9 10 2 3 3 2 2 2 2 2 3 2 3 5 3 1 2 4 2 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
Am Dienstagmorgen waren schwache
Gewitterimpulse zu empfangen. Sie konnten einem Gewitter in Norditalien
zugeordnet werden, das in einer Entfernung von ca. 800 km lag. Später gab es
ein starkes Gewitter in Tschechien, etwa in einer Entfernung von 500 km. Die
Blitze waren deutlich zu erkennen:
5 7 5 5 5 8 8 9 8 8 8 9 8 7 7 5 1 7 8 8 7 8
Einzelne Gewitter zogen dann immer näher, waren aber nicht zu messen. Am Abend
zog ein ausgedehntes Gewitter vom Bodensee in Richtung München, aber nicht ein
einziger Blitz konnte empfangen werden. Ein kleineres Gewitter in etwa
100 km Entfernung im Sauerland blieb ebenfalls ganz ohne Messergebnisse.
Aus diesen Beobachtungen kann ich den Schluss ziehen, dass es leider nicht
möglich ist aus der Intensität auf die Entfernung zu schließen. Anscheinend
gibt es sehr große Unterschiede in der Intensität der Blitze, die größer
ausfallen als die Unterschiede in der Entfernung.
Gewitter im Nahbereich
In
der Nacht zum Mittwoch zog ein Gewitter direkt über Essen. Ich
wurde vom Donner geweckt. Sofort ins Labor, was zeigen die
Messungen. Große Enttäuschung: Die gezählten Blitze waren nicht
besonders häufig und nicht besonders stark. Anscheinend stimmt der
Gedanke nicht, dass nahe Blitze besonders hohe Intensitäten haben. Das
Bild zeigt das abziehende Gewitter. Es liegt jetzt am Morgen über dem
Münsterland und ist immer noch als deutliches Knistern im Radio zu
hören.
Parallele Beobachtungen mit anderen Methoden zeigten
folgendes: Das umgebaute Retroradio gab tatsächlich den korrekten
Gewitteralarm. Aber auch der TA7542 zeigte bei weitem nicht jeden Blitz
an. Bei diesem Gewitter gab es besonders viele relativ kleine Blitze,
in vielen Fällen wohl zwischen den Wolken. Im Radio hörte man auf
Mittelwelle das bekannte Knistern. Es fehlte oft eine deutliche
Hauptentladung, die Blitze bestanden aus einer Serie kleinerer
Entladungen. Das Oszilloskop zeigte diese kleinen Blitze auch am
Ausgang des TA7642, aber mit einer recht kleinen Amplitude, die unter
der Auslöseschwelle lag.
Insgesamt war die Erkennung eines nahen
Gewitters bei 500 kHz wesentlich besser als bei 10 kHz. Ich vermute,
der 10-kHz-Empfänger reagiert nur deutlich auf große Blitze, vielleicht
auch besonders lange Blitze aus hohen Wolken, weil dann die Frequenz
besser stimmt. Für die Vorwarnung sind aber eventuell die vielen
kleinen Entladungen wichtiger, deren Energiemaximum bei höheren
Frequenzen liegt. Also doch wieder 500 kHz?
Sferics-Empfang mit Zähler, TA7642 mit Zwischenverstärker
Hier
ein Versuch mit dem TA7642 auf 500 kHz mit einem Zwischenverstärker.
Der Transistor ist im Normalfall durchgesteuert. Nur Impulse ab einer
bestimmten Pegel können den Transistor sperren und einen Ausgangsimpuls
erzeugen. Wenn ein Mittelwellenradio läuft und das Oszilloskop am
Ausgang angeschlossen ist erkennt man viele kurze Impulse, die zu den
stärkeren Sferics gehören. Zu einem Blitz gehören immer mehrere
Impulse. Wie viele es sind, hängt stark von der Entfernung ab. Wenn man
sich mitten in einem Gewittergebiet befindet, knistert es unablässig
auch wenn gerade kein Blitz zu sehen ist. Ein Gewitter in 100 km
Entfernung erzeugt dagegen nur ab und zu mal einzelne Impulse. Die
Empfindlichkeit kann in weiten Grenzen über den Basiswiderstand des
Transistors beeinflusst werden. Mit nur 100 k wird einiges an
Verstärkung verschenkt. Mindestens 20 dB wären noch drin. Mit etwas
Glück kommt am Ende heraus, dass man mit einer kleineren Ferritantenne
auskommen kann.
2 4 2 1 3 1 10 1 4 2 2 1 1 3 4 1 1 3 1 1
4 1 3 1 3 2 1 1 3 1 1 1 2 1 4 1 2 1 2 1 4
3 2 1 2 1 1 1 2 1 1 1 1 1 2 1 3 3 1 2 1 2
1 1 1 2 3 1 1 3 1 1 3 3 1 2 1 3 1 1 1 2 1
1 1 2 1 1 2 2 2 1 2 1 1 2 2 1 1 2 1 2 1 1
1 2 2 1 3 1 1 5 1 1 1 1 2 1 1 1 1 1 6 1 1
1 3 2
Der
Empfänger brachte eine korrekte Warnung bei einem Gewitter in ca. 30 km
Entfernung. Die gezählten Impulse passen gut zu dem was im Radio zu
hören ist. Starkes Knistern, immer mehrere Impulse pro Blitz. Man kann
sehen, dass oft nur ein Impuls erkannt wurde, manchmal aber auch bis zu
zehn Impulse in einer Sekunde. Insgesamt knistert es bei einem nahen
Gewitter so stark, dass ein paar künstliche Störimpulse von
Lichtschaltern usw. nicht ins Gewicht fallen. Die Summe macht’s, und
deshalb hat man mit diesem Verfahren einen guten Störabstand, denn wenn
ein nahes Gewitter knistert, dann richtig.
Die Auswertung
wurde an den neuen Empfänger angepasst. Die in der Variablen Level
aufsummierten Impulse werden diesmal exponentiell abgebaut, wie bei
einer RC-Glättung mit einer Zeitkonstante von mehreren Minuten. Das
Highbyte des aktuellen Levels wird nach jeweils einer vollen Minute ins
EEPROM gespeichert. Man kann daher später nachsehen, wie sich die
Blitze angesammelt haben und ob die Schwellwerte für die einzelnen
Warnstufen günstig gewählt waren. Den aktuellen Level kann man
jederzeit auch im LCD ablesen. Im Moment z.B. wird durch ein Gewitter
in etwa 100 km Entfernung ab und zu ein Level von 200 erreicht, was
aber noch deutlich unter der ersten Warnstufe (1000) liegt.
Download: Blitzwarner32EEtimer0n2.zip
'Blitzdatenlogger, ES-M32 mit LCD und EEPROM, Gezählte Sferics-Impulse
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 16
$swstack = 32
$framesize = 128
Baud = 9600
Dim N As Word
Dim U As Word
Dim D As Word
Dim A As Word 'Adresse
Dim Trigger As Byte
Dim Sta As Byte 'Startadresse , Trigerpunkt
Dim Eeadr As Word
Dim Ramadr As Byte
Dim I As Byte
Dim J As Byte
Dim B As Word
Dim C As Word
Dim Ticks As Word 'Zeitmessung
Dim Ticks2 As Word
Dim Level As Word
Dim Blitze(10) As Word
Dim Daten(8) As Byte
S1 Alias Pind.2
S2 Alias Pind.3
S3 Alias Pind.6
S4 Alias Pind.7
Config Portd = &B00110000
Portd.2 = 1
Portd.3 = 1
Portd.6 = 1
Portd.7 = 1
Out1 Alias Portd.4
Out2 Alias Portd.5
Config Adc = Single , Prescaler = 8 , Reference = Off
Start Adc
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2
Initlcd
Cls
Open "com1:" For Binary As #1
Config Timer0 = Counter , Edge = Falling
'Dim D As Word
'Dim B As Byte
'Dim Level As Word
'Dim Eeadr As Word
'Dim N As Byte
'For N = 0 To 50
' Readeeprom B , N
' Print #1 , B
'Next N
Ramadr = 1
Timer0 = 0
Do
B = Timer0
If B > 0 Then
Daten(ramadr) = B
Ramadr = Ramadr + 1
If Ramadr > 8 Then Ramadr = 1
If B > 80 Then
B = 80
Waitms 300
End If
' N = B / 10
D = B
D = D * 30 '20 Entladungen auf einen Blitz?
Level = Level + D
If Level > 10000 Then Level = 10000
Timer0 = 0
End If
If Level > 1 Then Level = Level - 1 '1 Blitz in 10 min vergessen
D = High(level)
Level = Level - D 'exmonentielle Abnahme, T ca 5 min
Ticks2 = Ticks2 + 1
If Ticks2 >= 60 Then
Ticks2 = 0
Print #1 , D;
Print #1 , " ";
If Eeadr < 1023 Then Writeeeprom D , Eeadr
Eeadr = Eeadr + 1
End If
If Level < 1000 Then Portd = &B11001100 'kein Gewitter
If Level > 1000 Then Portd = &B11011100 'fern
If Level > 2000 Then Portd = &B11101100 'mittel
If Level > 4000 Then Portd = &B11111100 'nah
Locate 2 , 1
Lcd Level
Lcd " "
For Ticks = 1 To 10
J = Ischarwaiting(#1)
If J > 0 Then
Get #1 , J
If J = 100 Then
B = 0
For N = 0 To 1023
Writeeeprom B , N
Next N
End If
A = J * 128
For N = 1 To 128
Readeeprom B , A
Put #1 , B
A = A + 1
Next N
End If
Waitms 100
Next Ticks
For N = 0 To 7
D = N * 2
D = D + 1
Locate 1 , D
A = N + 1
D = Daten(a)
Lcd D
Next N
Loop
End
Ergebnisse für den Anfang des Gewitters am 20.6.13:
0 0 0 0 0 1 1 1 1 1 2 2 2
2 3 2 3 3 3 4 3 6 6 7 8 9
10 10 10 11 11 14 13 13 15
17 20 27 28
Man
sieht wie der Level kontinuierlich ansteigt. Für den Tag waren
schwere Unwetter angesagt. Hier ein Kurzprotokoll der Ereignisse
mit Uhrzeit, Entfernung des Gewitters, im LCD angezeigtem Level
und LED-Warnstufe.
12:22: 60 km, Level 1000, Warnung 1
12:28: 50 km, Level 2000, Warnung 2
12:29: 30 km, Level 3000, Warnstufe 3
12:50: Es wird sehr dunkel, Gewitter aber noch immer > 20 km entfernt
12:50: Die Grenze von 10000 ist erreicht und wird begrenzt, wahr wohl zu knapp gewählt ...
Schneller Umbau, neue Grenze 50000 ...
12:57
Gewitter nur noch 10 km entfernt. Programm neu gestartet, Warnstufe
schnell wieder auf 3, Level erreicht 10000 in kurzer Zeit
13:00 Leiser Donner ist aus der Ferne zu hören. Einzelne Blitze in 10 km Entfernung. Level 30 000
13:08 Erster Blitz ist zu sehen: Warnstufe konstant 3, Level 50000. Ich schalte den PC aus, das wird mir zu heiß...
Bis
14 Uhr gibt es ein heftiges Gewitter mit Blitzen, die teilweise weniger
als 300 m entfernt einschlagen. Danach zieht das Unwetter langsam nach
Norden ab. Um 16 Uhr ist wieder alles still, keine Warnung mehr.
Fazit
dieses Gewitters: Die Warnstufen waren sinnvoll gewählt. Man
hatte etwa eine halbe Stunde Vorwarnzeit und konnte alles vorbereiten,
Fernseher aus, Antenne abziehen, Telefonanlage trennen, usw.
Anstieg und Abfall des Levels in 128 Minuten
Hinweise von Heinz D. :
Das
meiste, was Sie vermuten, vermute ich auch. In der Vergangenheit habe
ich die Impulse zunächst differenziert und dann, ob stark, ob schwach
(mangels Tiny) einfach auf einen Kondensator aufintegriert. Eine
(Gleichrichter-) Diode hat das unvermeidliche Rauschen abgeschnitten.
Ein hochohmiges Anzeigeinstument hat nicht nur angezeigt, sondern auch
im Laufe einer Stunde den Kondensator entladen.
Mathematisch
könnte man sagen: AM-Demodulation => Differziator =>
Schmitt-Trigger => Integrator (=> entladen). Das kann die
Software auch.
Im Moment läuft:
CD2003 auf 500kHz: Referenz
CXA1191 auf 500kHz: wenig schlechter, fast gleich
MW-Retro 500kHz: sehr unempfindlich
SI4734 auf 2300kHz: sehr unempfindlich
SI4734 auf 153kHz: trotz DLF deutliche Impulse
Degen DE1103 auf 100kHz: deutliche Impulse, guter Rauschabstand und etwas besser als CD2003 und 20 mal so teuer.
Das
lässt mich hoffen, dass ein (zwei) abgestimmter DCF77 Ferrit, ein T45
mit Vorverstärker x20, ein (zwei) ADC, Aref 1,1V DIREKT eine Anzeige
(und eine Peilung) ermöglicht. Ggf. ein M16/32/64/128 mit Gain x200 und
mehr Pins für eine Anzeige. Damit wäre ein M16-ADC im unteren
uV-Bereich empfindlich. (auf ELEXS stand am 14.6.12 mal was mit Gain
x200 ?)
Die Langzeitmessungen mit Spectrum Lab haben keine
Hinweise auf besonders gut geeignete Frequenzbereiche ergeben. Vom
reinen NF-Bereich habe ich mich ein wenig verabschiedet. Für einen
Breitband-Empfänger 50-150kHz sehe ich noch Chancen.
Youtube-Film: MW-Radio als Blitzdetektor: http://youtu.be/-moXN55WfbA
Das ist meine Referenz CD2003+TDA2822: Tamashi LX5
Die
Dinger gabs bei Saturn für 2,99 im Ausverkauf, da habe ich alle
mitgenommen. ES IST SERIENMÄSSIG !!! nicht manipuliert !!! Die LED geht
nur bei nahen Blitzen an , wie gerade um 13.30uhr
Pollin2313-Gewitter-Detector (Pollin-Spiel-1), von Heinz D. mit tatkräftiger Hilfe von Lukas (8)
(Diese Beschreibung ist knapp gehalten. Sie sollten erst alle anderen Beiträge lesen.)
Bei
1MHz verbraucht die Platine nur etwa 3mA. Die Platine haben wir nicht
voll bestückt, deshalb eignen sich auch Lochraster-Aufbauten aus
Tiny2313, LCD und LED. Als Empfänger eignet sich jedes MW-Radio (wg.
4,5V-Speisung fürs LCD). Im Beispiel wird die bekannte Schaltung mit
TA7642 und BC548 als Differenzierer benutzt (zusammen unter 4mA). Die
Antenne ist in der Pralinenschachtel bewusst weit weg vom T2313
montiert. Die Abschirmung ist ein Nussdosen-Deckel. Eine 5V-Solarzelle
liegt auch bereit.
Pollinplatine (Umbauanleitung):
Der
Eingang T0 ist an der linken, oberen Ecke (T4). Die
Pulldown-Widerstände (R13+R12 für LED4) dürfen nicht bestückt werden,
da die Software ist mit einem Pullup programmiert ist.
Der
Buzzer (47 Ohm) verbraucht viel Strom, deshalb haben wir den Transistor
nicht bestückt und eine LED von Kollektor nach Basis geschaltet.
Außerdem muss R14 entfallen (spart 5mA).
Daraus ergibt sich dann eine Minimalbestückung: R1, R3, R4, C1, D1, 2313, LED, Buzzer, LCD.
Das Bascom-Programm:
Timer0
sammelt die Impulse ein. Damit er nicht überläuft wird nach 1s
(einstellbar) der Wert abgeholt, aufsummiert und die Anzeige refrescht.
Falls Impulse auftreten wird ein kurzer Ton (über die LED) ausgegeben.
Mit höherer Warnstufe (von Herrn Kainka übernommen, einstellbar) wird
der Ton höher. Am Schluss wird der Blitz-Zähler abwärts gezählt
(einstellbar) um beim Ausbleiben der Blitze die Warnstufen langsam
wieder zurück zu nehmen.
Die DATA-Zeile ganz oben scheint
sinnlos zu sein. Hat man im Laufe der Zeit mehrere AVR rumliegen,
vergisst man schnell was drauf war. Die DATA-Zeile ist im .hex-File in
der ASCII-Darstellung im Klartext zu lesen und kann die Sucherei
deutlich verkürzen.
Das Programm hat so viele
Einstellmöglichkeiten (CONST), dass fast jeder Empfänger unterstützt
werden kann. Außerdem können die LED1 bis 3 bestückt und herangezogen
werden.
Damit es schneller geht wurden 50Hz eingespeist: Das Gerät in Youtube
Download: Pollin2313-Gewitter-bas-hex.zip
' Pollin Spiel T2313 mit Blitz-Empfänger an T0
Data "P o l l i n - T 2 3 1 3 G e w i t t e r D e t e c t o r"
' der Name ist im Klartext immer lesbar!
'###############################################################################
' 1 /Reset/ISP6 R1=10k 10k
' 2 D0/Rx/T1/LED1 R6=150/R7=33k (Rx) frei
' 3 D1/Tx/T2/LED2 R8=150/R9=33k (Tx) frei
' 4 A1/Xtal/LCD_RS LCD
' 5 A0/Xtal/LCD_E LCD
' 6 D2/Int0/T_On R5=33k frei
' 7 D3/Int1/T3/LED3 R10=150/R11=33k frei
' 8 D4/T0/T4/LED4 R12=150/R13=33k Eingang vom Empfänger
' 9 D5/T1/oc0b/Buzz R4=150/R14=1k/Tr1/D1 optische/akustische Anzeige
' 10 GND/ISP10+8+6 GND
' 11 D5/ICP/LCD_Vdd LCD
' 12 B0/Ain0/LCD_DB4 LCD
' 13 B1/Ain1/LCD_DB5 LCD
' 14 B2/oc0a/LCD_DB6 LCD
' 15 B3/oc1a/LCD_DB7 LCD
' 16 B4/oc1b/LCD_Vo R3=56/R2=10k LCD kann frei gemacht werden
' 17 B5/SDA/mosi/ISP1 frei
' 18 B6/Do/miso/ISP9 frei
' 19 B7/SCL/SCK/ISP7 frei
' 20 +5Vcc/ISP2 C1 +5V
'###############################################################################
Led1 Alias Portd.0 : T1 Alias Pind.0
Led2 Alias Portd.1 : T2 Alias Pind.1
T_on Alias Pind.2
Led3 Alias Portd.3 : T3 Alias Pind.3
Led4 Alias Portd.4 : T4 Alias Pind.4
Buzz Alias Portd.5
$regfile = "attiny2313.dat"
$crystal = 1000000
$hwstack = 32 '32
$swstack = 32 '8
$framesize = 32 '24
'$lib "mcsbyte.lbx"
'$baud = 19200
Const Empfangen = 1 'Senden-Empfangen Umschalter
Ddra = &B00000011 : Ddrb = &B00001111 : Ddrd = &B01000000 : Portd.6 = 1 'lCD=on
Ddrd.5 = 1 : Buzz = 1 'Buzz
Led4 = 1 'T0 pullup
Config Timer0 = Counter , Edge = Rising
Config Lcd = 16 * 2 , Chipset = Ks077 'Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Porta.0 , Rs = Porta.1
Initlcd : Cls
Dim Blitze As Word 'display
Dim Musik As Byte
Dim Temp As Byte
Dim Text As String * 8
Dim Zeit As Byte 'für entladen
Const Gelb = 1000 : 'fern
Const Rot = 2000 : 'mittel
Const Rotrot = 4000 'nah
Const Totzeit = 1000 'Anzeigezeit
Const Entladzeit = 2 't=entladen*totzeit
Const Entladwert = 2 'Entlade-Wert
Locate 1 , 1 : Lcd "Blitz- " : Locate 2 , 1 : Lcd "Detector" : Wait 2 : Locate 1 , 1 : Lcd " "
Do
#if Empfangen
'intgrieren
Waitms Totzeit : Temp = Timer0 : Timer0 = 0 : Blitze = Blitze + Temp
'anzeigen
Locate 1 , 1 : Lcd "BL " : Lcd Blitze : Lcd " "
If Blitze <= Gelb Then : Text = "LE GRUEN" : Musik = 15 : End If
If Blitze > Gelb Then : Text = "LE GELB " : Musik = 100 : End If
If Blitze > Rot Then : Text = "LE ROT " : Musik = 75 : End If
If Blitze > Rotrot Then : Text = " GEFAHR " : Musik = 60 : End If
Locate 2 , 1 : Lcd Text
If Temp > 0 Then Sound Buzz , 32 , Musik 'optisch/akustisch
Buzz = 1 'LED/Buzz aus
If Blitze > 65000 Then Blitze = 65000 'Fehlerbehandlung
'entladen
If Zeit = Entladzeit Then
If Blitze > Entladwert Then Blitze = Blitze - Entladwert
Zeit = 0
Else
Incr Zeit
End If
#else 'Sender
' Wait 2 : For Blitze = 1 To 5 : Buzz = 0 : Waitus 50 : Buzz = 1 : Waitms 50 : Next Blitze
Wait 2 : For Blitze = 1 To 5 : Buzz = 1 : Waitus 50 : Buzz = 0 : Waitms 50 : Next Blitze
#endif
Loop
Elektronik-Labor AVR HF Projekte