Sie sind auf Seite 1von 38

Blitzerkennung mit

AGC          
   
         

Elektronik-Labor
 AVR
 HF  Projekte 

Die
Verstärkung und Empfindlichkeit eines TA7642 ist sehr stark von der
Betriebsspannung abhängig. Deshalb war die Verstärkung selten genau
richtig. Ein neues Verfahren
zur optimalen Verstärkungseinstellung
(Automatic Gain Control AGC) verwendet einen PWM-Ausgang des
Controllers. Die
PWM-Ausgangsspannung wird in zwei Stufen
geglättet und als
Versorgungsspannung für den Empfänger verwendet. So gelingt es die
Verstärkung optimal einzustellen. Und damit wird es nun sogar möglich,
eine kleine
Festinduktivität als Ferritantenne für den Blitzempfänger
einzusetzen.  Zusammen mit dem Zwischenverstärker erreicht man
die
gleiche Empfindlichkeit wie mit einer normalen
Ferritantenne.
Beim
Start des Programms wird die optimale Einstellung gesucht. Dazu fährt
die Controller den PWM-Ausgang langsam hoch, bis das Eigenrauschen des
Empfängers einen
Pegel erreicht, der den Zähler erhöht. Danach
muss nur noch ein gewisser, experimentell ermittelter Betrag
subtrahiert werden. Das Ergebnis hat sich als langzeitstabil
erwiesen.
Das Verfahren berücksichtigt auch andere Einflüsse z.B. der Temperatur
oder eines erhöhten Störnebels durch Schaltnetzteile oder ähnliches.
Wenn man an einem
neuen Ort Fehlmeldungen erhält, muss man den
Controller nur einmal neu starten.

Download: Blitzwarner32EEtimer0n3.zip

Config Timer2 = Pwm , Pwm = On , Compare = Clear , Prescale = 1


' 8 Bit PWM Ausgang Portd.7

Timer0 = 0
Pwm = 80

Do
Pwm = Pwm + 1
Pwm2 = Pwm
Waitms 50
Loop Until Timer0 > 30

Pwm = Pwm - 45
Pwm2 = Pwm

Waitms 100

Das
Programm für den Mega32 verwendet den Timer2 als PWM-Ausgang. Alle
weiteren Programmteile bleiben unverändert. Deshalb kann der Verlauf
des Warnlevels auch
nachträglich in Ruhe angesehen werden. Das folgende
Bild zeigt zwei kurze Phasen mit vielen Sferics.  Und all das
mit
der extrem kleinen Antenne. Das ursprüngliche Ziel ist
damit fast
erreicht. Nur die Warnschwellen müssen noch besser angepasst werden.

Blitzwarner mit HT47F46


Die
gleiche Empfängerschaltung wurde auch an einem Holtek-Controller
ausprobiert. Als Basis diente eine Platine aus dem Lernpaket
Modellbahn-Beleuchtung. Das
Lochrasterfeld reichte gerade
aus. 
Auch hier dient die kleine Festinduktivität als Ferritantenne. Der Kern
des Bascom-Programms konnte leicht in C übertragen werden.
Diesmal gibt
es drei Warnstufen. Beide Systeme laufen jetzt immer gleichzeitig. Wenn
dann ein Gewitter kommt, kann ich Vergleiche ziehen, welche
Warnschwelle besser
passt.

_tmrc = 0x50; //timer mode 3: Event counter


_pbc = 0xff;
_pac = 0x10; //set port A to output port, PA4 I Impuls-Eingang
_pa = 0; //zero port A (all light on)
_pdc0 = 0; //PC0 Ausgang
_pd0 = 1; //PWM einschalten
_pwm = 0; //PWM-Ausgabe 0...255
_eadi = 0; //Kein Interupt
level = 0;

i= 80;
_ton = 0; //Timer starten
_tmr = 0; //Timerregister loeschen
_ton = 1; //Timer starten
while (_tmr < 10) {
i = i + 1;
_pwm = i;
_delay(30000);
}
i = i - 40;
_pwm = i;
mydelay(10);

while (1){
_ton = 0; //Timer stoppen
_tmr = 0; //Timerregister loeschen
_ton = 1; //Timer starten
mydelay(10); //1000 ms
count = _tmr;
if (count > 0){
_pa = 128;
_delay(50000);
_pa = 0;
}
count = count << 5; //*32
level = level + count;
if (level > 60000) {level = 60000;}
decay = level >> 8;
level = level - decay;
if (level < 2000) {_pa = 0;}
if (level > 2000) {_pa = 2;}
if (level > 4000) {_pa = 4;}
if (level > 8000) {_pa = 8;}
}

AGC-Gewittererkennung
mit Tiny13
Die
automatische Feineinstellung der Betriebsspannung des AM-Empfängers hat
sich bewährt. Eine Platine mit dem Holtek-Controller läuft im
Dauerbetrieb. Es gab auch
über mehrere Tage keinen Fehlalarm. Einmal
wurde die gelbe Warnstufe erreicht. Zu der Zeit konnte man einen hohen
Wolkenturm sehen, aus dem ein Gewitter hätte werden
können. Ich
vermute, in der Wolke gab es bereits die typischen Vorentladungen.
Besonders die Möglichkeit, eine kleine Festinduktivität als
Ferritantenne zu verwenden,
macht diese Technik attraktiv. Nun
soll auch der Tiny13 zum Einsatz kommen, damit möglichst
viele Leute sich an den Versuchen beteiligen können.

Der
Tiny13 hat nur einen Timer. Weil dieser als PWM-Ausgang benötigt wird,
muss für das Zählen der Blitzimpulse eine andere Lösung gesucht werden.
Hier wurde deshalb
ein Softwarezähler gebildet, der über die steigende
Flanke des Signals am Interrupteingang Int0 getriggert wird. Der Zähler
wird übrigens nicht in Einerschritten erhöht
sondern jeweils um 32,
weil damit eine Multiplikation an anderer Stelle eingespart werden
kann.

Die AGC besteht auch hier aus einer Schleife, in der die
Betriebsspannung kontinuierlich hochgefahren wird, bis der Zähler durch
das verstärkte Rauschen des Empfängers
anspricht. Während des
Suchvorgangs geht die rote LED an, was eine Funktionskontrolle erlaubt.
Die optimale Einstellung wird zwischen einer Betriebsspannung zwischen
2,8 V und 3,2 V gefunden.

Zum
Test laufen hier inzwischen zwei Systeme (Holtek und Tiny13) parallel,
dazu noch ein Mittelwellenradio. So kann ich ganz nebenbei
besondere Ereignisse erkennen und
die Auswertung beobachten. Manchmal
gibt es starke Einzelimpulse. Sie können von einem weit entfernten
Blitz oder vom Lichtschalter des Nachbarn stammen. In der
Auswertung
werden deshalb Einzelimpulse verworfen ( If Count > 1 ). Gestern
gab
es ein Geräusch, das wohl von einer alten Klingel mit Spule, Anker und
Unterbrecher
stammte. Offensichtlich hat jemand zweimal geklingelt.
Mein Holtek-Controller ging auf Warnstufe Gelb, aber der Tiny13 blieb
ohne Warnung. Der Unterschied liegt in der
Begrenzung auf acht Impulse.
 Zweimal Klingeln bringt zwar so viele Impulse wie ein nahes
Gewitter, die Begrenzung bringt aber die nötige Selektivität. Das
Gewitter hat
einfach mehr Ausdauer als der Briefträger. Die Methode
hilft auch gegen frisierte Mopeds mit modifizierter Zündspule und
entstörungsfreiem Kerzenstecker. Die Regel "zwei
bis acht Impulse pro
Sekunde" hat sich aus vielen Versuchen herauskristallisiert und
entspricht erstaunlich genau dem, was Heinz D. ganz am Anfang schon im
Zusammenhang
mit seinem Blitzgenerator
vorgeschlagen hat.

Download: Blitzwarner2T13.zip
'Gewitterwarner 2, Tiny13
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 16
$swstack = 16
$framesize = 16

Config Portb = &B00011101

Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up 'PWM B0


Start Timer0

Config Int0 = Rising 'INT0 B1


On Int0 Isrint0
Enable Int0

Dim I As Byte
Dim Count As Word
Dim Level As Word
Dim Decay As Word

Count = 0
I = 0
Portb.2 = 1 'LED B2, rot
Do
I = I + 1
Pwm0a = I
Enable Interrupts
Waitms 50
Disable Interrupts
Loop Until Count > 200 'Ub einstellen
Portb.2 = 0
I = I - 50
Pwm0a = I
Wait 2
Level = 0

Do
Count = 0
Enable Interrupts
Waitms 1000 '1 s zählen
Disable Interrupts
If Count > 1 Then 'min 2 Impulse
Level = Level + Count 'Count
Portb.3 = 1 'Blitz-LED B3, grün
Waitms 20
Portb.3 = 0
Waitms 20
End If
Decay = Level
Shift Decay , Right , 8
Level = Level - Decay 'Level nimmt ab
If Level < 2000 Then Portb = &B00000000
If Level > 2000 Then Portb = &B00001000 'grün
If Level > 4000 Then Portb = &B00010000 'gelb
If Level > 6000 Then Portb = &B00000100 'rot
Loop

Isrint0:
Count = Count + 32 'Software-Counter
If Count > 250 Then Count = 250 'max 8 Impulse
Return

End

Gewitterdetektor mit Reisewecker, von Heinz D.

(wird vor der (Langzeit-) Messung auf 0 gestellt), entspricht zu 99,9% 'Blitzwarner2T13' mit AGC von B. Kainka
Man nehme den Blitzwarner2T13 und einen Wecker für'n Euro. Nach der
Obduktion des Weckers werden die Spulenanschlüsse nach außen verlegt und festgelegt,
damit sie
nicht dauernd abreißen. Der Impulszähler verbraucht zur Anzeige keinen
Strom und kann bis 43200 Impulse summieren. Der gesamte Stromverbrauch liegt bei 1,1mA(T13)
+ 0,3mA(TA7642) = 1,4mA.  
Das ist etwas mehr, als ich dachte. Nun kann ich versuchen mit der
gegebenen Hardware, Int0 und POWERDOWN zu experimentieren.
Eine Version mit
Taschenrechner als Anzeige ist in Vorbereitung. Damit sollte der Stromverbrauch
deutlich unter 1mA bleiben (vielleicht demnächst).
Die Schaltung: an den PortB.3+4 ist der Motor angeschlossen. Meine
Motoren haben 82Ohm (bis 120 Ohm), das hält der T13 aus. Parallel zur roten LED kann ein
Piezo
geschaltet werden.

Download:  blitz10-motor-bas-hex.zip

P.S. Eine Langfristige Versorgung sollte mit einer Solarzelle gelingen,


da ein Betrieb auf der Fensterbank ohnehin günstig ist. Übrigens: Falls der Motor rückwärts läuft, ist das
Metall-U verkehrt
herum drin.

'1307-Blitz 10 mit Uhr-Motor (Verschlimmbesserung 1) von Heinz D.


'unter Verwendung des Gewitterwarner 2 von B. Kainka
'mit ### sind die zugefügten Zeilen markiert
'###############################################################################
' 1 /Reset/B5/Ad0
' 2 B3/Ad3 LED grün oder Motor
' 3 B4/Ad2 LED gelb oder Motor
' 4 GND
' 5 B0/mosi/oc0a Pwm->TA7642
' 6 B1/miso/Int0/oc0b TA7642->In
' 7 B2/Sck/Ad1/T0 LED rot und Buzzer
' 8 +Vcc
Lrot Alias Portb.2
Mot0 Alias Portb.3
Mot1 Alias Portb.4
'###############################################################################
$regfile = "attiny13.dat"
$prog &HFF , &H6A , &HFF , &H00 '9,6MHz/8=1,2MHz
$crystal = 1200000
$hwstack = 16
$swstack = 16
$framesize = 16

'Config Adc = Single , Prescaler = 2 , Reference = Avcc ' Pre 8...32


'Start Adc
'Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
'Open "comb.2:9600,8,n,1,INVERTED" For Input As #2

Config Portb = &B00011101

Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up 'PWM B0


Start Timer0

Config Int0 = Rising 'INT0 B1


On Int0 Isrint0
Enable Int0

Dim I As Byte
Dim Count As Word
Dim Level As Word
Dim Decay As Word
Dim Motor As Byte '### odd/even-Merker

Count = 0
I = 0
Lrot = 1 'Portb.2 = 1
Do
I = I + 1
Pwm0a = I
Enable Interrupts
Waitms 50
Disable Interrupts
Loop Until Count > 200 'Ub einstellen
Lrot = 0 'Portb.2 = 0
I = I - 50
Pwm0a = I
Wait 2
Level = 0

Do
Count = 0
Enable Interrupts
Waitms 200 '1 s zählen
Disable Interrupts
If Count > 1 Then 'min 2 Impulse
Level = Level + Count 'Count

'### Uhr-Motor toggle


If Motor = 0 Then '###
Mot1 = 0 '###
Mot0 = 1 '### gerade Sekunde
Motor = 1 '###
Else '###
Mot0 = 0 '###
Mot1 = 1 '### ungerade Sekunde
Motor = 0 '###
End If '###
'### optisch/akustisch
Sound Lrot , 40 , 60 '### WAIT
Mot0 = 0 '###
Mot1 = 0 '###
Lrot = 0 '###

' Portb.3 = 1 'Blitz-LED B2


' Waitms 20
' Portb.3 = 0
' Waitms 20
End If
Decay = Level
Shift Decay , Right , 8
Level = Level - Decay 'Level nimmt ab
' If Level < 2000 Then Portb = &B00000000
' If Level > 2000 Then Portb = &B00001000 'grün
' If Level > 4000 Then Portb = &B00010000 'gelb
' If Level > 6000 Then Portb = &B00000100 'rot
Loop

Isrint0:
Count = Count + 32 'Software-Counter
If Count > 250 Then Count = 250
Return

End
Data "B l i t z 1 0 - M o t o r " 'Prog-Name

Erweiterung: Gewitterdetektor mit Reisewecker und POWERDOWN

Für
den Powerdown-Mode muss die Versorgung des TA7642 vom PWM-Anschluss
getrennt und direkt an +3V gelegt werden. Ein Wochenende voller
Experimente hat
folgendes erbracht: 2 kaputte TA7642, es gibt 'leise'
und 'laute' TA7642 und er arbeitet am besten bei (170uA-) 200uA. Ragc =
10k/+3V (8k2/+2,5V Akku) (2k2/+1,5V)
(22k/+5V). Die 100uF-Kondensatoren
entfallen.

Stückliste (+3V):
470R x1, 10k x1, 100k x2, 1M x1
Lx= 220uH, Cx= 500pF, 100nF x4
TA7642, BC547C, LED, Tiny13
Wecker, Batteriehalter 3V, Gehäuse

Der gesamte Stromverbrauch liegt nun bei 0,4mA (T13V, der alte), Ziel erreicht.

Download: blitz10B-motor.zip

Die
Stellung des Motors wird im EEPROM gespeichert. Auf den Begleit-Ton zur
LED wurde verzichtet, um Einstreuungen in den TA7642 zu minimieren. Je
nach Motor
muss Waitms 50 ggf. etwas erhöht werden.

'1307-Blitz 10B mit Uhr-Motor und Powerdown von Heinz D.


'###############################################################################
$regfile = "attiny13.dat"
$prog &HFF , &H7A , &HFF , &H00 '9,6MHz
$crystal = 9600000
$regfile = "attiny13.dat"
$hwstack = 32
$swstack = 8
$framesize = 16

Ddrb = &B00011100
Lrot Alias Portb.2 : Mot0 Alias Portb.3 : Mot1 Alias Portb.4

Config Int0 = Rising


Enable Interrupts
Dim Motor As Byte 'toggle Switch

Do
'Uhr-Motor toggle
Lrot = 1 'Anzeige
Readeeprom Motor , 0 'EEPROM-Adr=0
If Motor = 0 Then 'gerade Sekunde
Mot0 = 1 : Motor = 1
Else 'ungerade Sekunde
Mot1 = 1 : Motor = 0
End If
Writeeeprom Motor , 0 'EEPROM-Adr=0
Waitms 50 'ggf. 100
'Stromsparen
Portb = 0 'alles aus
Enable Int0 :
Power Powerdown 'einschlafen
nop
Disable Int0 : 'wachgeworden?
Loop
End
Data "B l i t z 1 0 - B - M o t o r " 'Prog-Name
'dieses Programm dient Ausbildungszwecken
'###############################################################################
' 1 /Reset/B5/Ad0
' 2 B3/Ad3 Motor
' 3 B4/Ad2 Motor
' 4 GND
' 5 B0/mosi/oc0a aux
' 6 B1/miso/Int0/oc0b TA7642->Int0
' 7 B2/Sck/Ad1/T0 LED rot + 470R
' 8 +Vcc TA7642 Vcc ~200uA
'###############################################################################

(Hinweis
von B. Kainka: Ich habe zuerst gesucht, wo ist denn hier die
Interrupt-Routine? Dann hab ich es kapiert: es gibt keine. Der
Controller wird schlafen gelegt und
wacht bei jedem Blitz einmal kurz
auf. Dann führt er einen Schritt aus und geht wieder schlafen.)

29.7.13: Gewittermelder
mit zu hoher Verstärkung, von Martin Müller 

Habe letztens
den AGC-Gewittermelder mit Tiny13 auf dem
Steckbrett aufgebaut, zwei frische
1,5 V–Mignonzellen angeschlossen und 
aufs Gewitter gewartet.
Als nach
wenigen Minuten Warnstufe Grün angezeigt wurde, konnte ich bei Blitzortung.org
das nächste Gewitter in ca. 80 km Entfernung lokalisieren.
Ganz schön
empfindliches Gerät,
dachte ich. Wenige Minuten später wurde dann Warnstufe
Gelb und kurze Zeit später Warnstufe Rot
gemeldet. Am Himmel, war überhaupt kein Gewitter auszumachen, und
auch die
Anzeige bei Blitzortung.org erschien nur wenig verändert. Irgend etwas konnte also nicht stimmen.
Habe mir also
das Signal an Pin 6 des Tiny angeschaut und
folgendes
gesehen:

Signal an INT0 vor Hard- bzw. Softwareanpassung

Kein Wunder,
dass bei solchen Signalen Warnstufe Rot innerhalb kürzester Zeit erreicht wird.
Aber wie kommt es dazu?
 

Nachdem
externe Störeinflüsse ausgeschlossen werden konnten, wurde der PWM – Ausgang
des Tiny (Pin 5) beim Einschalten untersucht.

 
PWM0A am Ende der AGC-Reglung

Die
Periodendauer beträgt ca. 425 µs was einem PWM - Wert (Variabe
I) von 255 entspricht. Am Ende der Initialisierung beträgt die Impulsdauer ca.
50 µs was einem
PWM – Wert von ca. 30 entspricht. Von diesem Wert 30 werden
dann im Programm 50 abgezogen. Im richtigen Leben landet man nun beim einem
Wert von – 20, bei dem
gar nichts mehr passieren würde. In der Prozessorwelt
erreicht man jedoch den Wert 236, da der erste Wert der kleiner 0 ist, nicht -1
sondern 255 heißt.
Das lässt
sich leicht
an folgenden Oszillogramm erkennen.

PWM0A nach  AGC-Reglung

Bei diesem
Wert, ist die Versorgungsspannung für den TA 7642 deutlich höher als
erforderlich, so dass der ganze Analogteil des Gewittermelders übersteuert
wird, und die
wilden Signale an Pin 6 des Tinys
hervorbringt.
 

Ich denke,
dass die eigentliche Ursache für dieses Phänomen in der Exemplarstreuung
von TA7642 und BC547 C zu suchen ist. Erwischt man hier Exemplare mit hoher
Verstärkung, stellt sich das beschriebene Phänomen ein.
 

Das Problem
lässt sich sowohl hard- als auch softwaremäßig
beheben.
 

Die
Hardwarelösung
 

  

Man erhöht
einfach die zum Siebglied an PWM0A gehörenden Widerstände von 470 Ohm auf 1k
bzw. von 1K auf 2,2k.  

Die nun
abzuleitenden Oszillogramme sehen wie folgt aus:

PWM0A am Ende der AGC-Reglung


Hardwarelösung

 
 
 

PWM0A nach  AGC-Reglung Hardwarelösung

 
 

Die
Softwarelösung

Man zieht am
Ende der AGC – Reglung nicht fest den Wert 50 von der Variablen I ab, sondern
reduziert die Variable I um z.B. 50%, weil das nämlich am einfachsten geht...

An
entsprechender Stelle wird:

 
I = I - 50

zu:

Shift I , Right
 

Die
Widerstände des Siebglieds bleiben dabei unverändert.

PWM0A am Ende der AGC-Reglung


Softwarelösung

 
  

PWM0A nach  AGC-Reglung Softwarelösung

Signal an INT0 nach Hard- bzw.


Softwareanpassung

Nachtrag
 

Initial wurde
die Schaltung auf einem üblichen SYB-46 Steckbrett,
wie es in vielen Lernpaketen verwendet wird, aufgebaut und der o.g. Effekt
bemerkt. Da ich zunächst das
Steckbrett in Verdacht hatte, habe ich dann die
Schaltung auf meinem „guten“ Laborsteckbrett aufgebaut, was auch keine Änderung
erbrachte.

Nachdem ich
von Herrn Kainka den Hinweis bekam, dass möglicherweise doch hohe
Übergangswiderstände an den Steckbrettkontakten die Ursache sein könnte, wurde
die Schaltung letztendlich auf einer Punktrasterplatine aufgelötet. Auch dies
führte zu keiner Funktionsverbesserung.

Es wäre
interessant zu erfahren, wer noch die Beobachtung gemacht hat, dass der
Gewittermelder Warnungen ausgibt ohne, dass dafür eine äußere Ursache erkennbar
ist.

Nachtrag von
B. Kainka: Diese Ergebnisse kann ich bestätigen. Nach diesem
Bericht habe ich meine Schaltung noch mal durchgemessen und konnte
sehen, dass die PWM-
Impulse gefährlich kurz sind. Vermutlich habe ich
die letzten Einstellungen bei einer Batteriespannung knapp unter 3 V
vorgenommen. Wenn andere
Bauteile zufällig viel mehr
Verstärkung haben und ganz frische
Batterien zum Einsatz kommen, muss die ursprüngliche Dimensionierung zum Problem führen. Die
Dimensionierung von Martin Müller ist
wesentlich sicherer gegen
Bauteile-Streuungen.

Nachtrag von Martin Müller: Da der letzte Stand meiner Gewitterexperimente der Aufbau der Schaltung auf der Lochrasterplatine mit den ursprünglichen
Widerstandsdimensionierungen war, läuft die Schaltung seitdem mit der Softwarekorrektur ohne Fehlalarme. Hier im östlichen Rhein-Main-Gebiet bleibt man von Gewittern
häufig verschont, so dass das Gerät noch keine Chance hatte, ein echtes Gewitter zu melden. Künstliche Blitze werden aber erkannt.

Hatte
zwischenzeitlich versucht die PWM mit 75% bzw. 62,5% vom Endwert der
AGC-Reglung zu betreiben. Bei 75% gibt es noch Fehlalarme, bei 62,5%
habe ich den
Eindruck, dass die Schaltung wirklich sehr (evtl. zu)
empfindlich (für vernünftige Warnmeldungen) ist. Also bin ich wieder zu
den 50% zurückgekehrt.

Als Spule verwende ich aktuell die 220µH aus "Transistorradio selber bauen". Hatte versuchsweise auch eine 220µH Spule aus meinen Beständen ausprobiert, dabei aber
keine wirklichen Unterschiede feststellen können. Bei anderer Schwingkreisdimensionierung (nominal 390µH und 330pF) hatte ich den Eindruck, dass die Schaltung
empfindlicher wird, dies aber nicht weiter verfolgt.

Power-Down-Betrieb von Frank Schacht

Ich habe den Gewitterdetektor mit Tiny13 auch nachgebaut (ebenfalls auf dem kleinen Steckboard von z.B. Advendskalender). Direkt nach dem Anlegen der Spannung
(KEIN frischer Satz Batterien) leuchtete kurz die rote -LED, wie erwartet. Doch danach fing sofort die Grüne an zu blitzen, und zeigte damit Signale, kurz darauf wurden
Level Grün, Gelb und auch Rot angezeigt. Mein erster Test mit nem MW-Radio (Retro -Style auch mit TA7642) brachte keine nennenswerten Ereignisse auf dem
Frequenzband.--> Rätseln und Grübeln brachte mich auf die Idee mal mit einem alten hochohmigen Kopfhörer die Signale an zu hören. Beste Stelle, den
Kollektorwiderstand mit dem Kh brücken.

Ergebnis:
Es rauscht und prasselt! Kein Wunder! Ich hatte jedoch einen
entscheidenden Fehler beim Aufbau gemacht, da ich nur eine
Schottky-Diode BAT48 zur Hand hatte
(anstatt der 1N4148) habe ich diese
verwendet, sie hat aber eine viel geringere Durchlassspannung! Nach
langem Suchen fand ich endlich den original-Typ damit ging es
erstmal.
An neuem Batteriesatz und etwa einem Tag Dauerbetrieb, traten die
selben falschen Anzeigen wieder auf, und meine Rote LED war gestorben
(!!! Mit 3V und
Rv=470Ohm!! Erst ganz dunkel und danach kmplett tot!)

Das nahm ich zum Anlass den AtTiny noch etwas zum Stromsparen anzuregen. Und zwar setzte ich einfach nach den Abfragen : IF Level >... einen kleinen Block ein der wie
folgt aussieht:

IF Level=0 then 'Nix zu tun


Enable Interrupts
IDLE
End If

Dadurch spart der MC etwas Strom, wenn er nix zu tun hat, aber das PWM0A bleibt an, und der Int0 wird sicher ausgelöst! Nach kurzem Betrieb an einem frischen Satz
Batterien erfolgte wieder eine dauernde (fehlerhafte) Anzeige von Ereignissen, die nicht da sind. Ich programmierte nun noch die Zeile I=I-50 in I=I-60 um (so dachte ich bis
eben, jedoch muss ich das nochmal überprüfen, da sich ein Tippfehler eingeschlichen hatte. (anstatt I=I-60 stand da I=I-6-0 !) Aber seit dem hält er Ruhe, selten blitzt die
Grüne LED auf. (wohl durch irgendwelche Störungen in der Atmosphäre) Der Kh-Test ergab ein leises Rauschen über dem Kollektorwiderstand.  Nun warte ich sehnlichst
auf ein echtes Gewitter, um den Detektor zu testen.

PS.: An Übergangswiderständen im Board kann es wohl nicht liegen, da ich vor Kurzem mit dem selben Board erfolgreich einen UKW-Pendler mit zwei NF-Transistoren
aufgebaut habe (Grundidee ist von Ihrer wunderbaren Seite! DANKE dafür!) Der Aufbau auf einer Lochraster Platine war dann der totale Reinfall, aber das ist eine andere
Story!

Software-Update von Burkhard Kainka

Aus
den beiden letzten Vorschlägen habe ich meine neue "offizielle" Version
des Tiy13-Gewitterwarners gebaut: Mit 50%- PWM-Einstellung und
Power-Down. Diese
Software läuft nun im Dauertest in meiner
Testschaltung (alte Dimensionierung der Widerstände mit 470 Ohm und 1
kOhm). Eine Überprüfung mit dem Oszilloskop zeigt,
dass die
Empfindlichkeit genau richtig eingestellt wird. Mein Kriterium dafür
ist, dass mein Ohmmeter im Abstand von ca. 15 cm Impulse mit
Vollausschlag produziert, wenn
die beide Messspitzen berühre. Das zeigt
das folgende Video:

Youtube-Video: Funktion der ALC 

Download: Blitzwarner2T13_2.zip

'Gewitterwarner 2 mit Erweiterungen von Martin Müller und Frank Schacht

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 16
$swstack = 16
$framesize = 16

'Config Adc = Single , Prescaler = 2 , Reference = Avcc ' Pre 8...32


'Start Adc
'Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
'Open "comb.2:9600,8,n,1,INVERTED" For Input As #2

Config Portb = &B00011101

Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up 'PWM B0


Start Timer0

Config Int0 = Rising 'INT0 B1


On Int0 Isrint0
Enable Int0

Dim I As Byte
Dim Count As Word
Dim Level As Word
Dim Decay As Word

Count = 0
I = 0
Portb.2 = 1
Do
I = I + 1
Pwm0a = I
Enable Interrupts
Waitms 50
Disable Interrupts
Loop Until Count > 200 'Ub einstellen
Portb.2 = 0
Shift I , Right 'durch 2
Pwm0a = I
Wait 2
Level = 0

Do
Count = 0
Enable Interrupts
Waitms 1000 '1 s zählen
Disable Interrupts
If Count > 1 Then 'min 2 Impulse
Level = Level + Count 'Count
Portb.3 = 1 'Blitz-LED B2
Waitms 20
Portb.3 = 0
Waitms 20
End If
Decay = Level
Shift Decay , Right , 8
Level = Level - Decay 'Level nimmt ab
If Level < 2000 Then Portb = &B00000000
If Level > 2000 Then Portb = &B00001000 'grün
If Level > 4000 Then Portb = &B00010000 'gelb
If Level > 6000 Then Portb = &B00000100 'rot
If Level = 0 Then 'Nix zu tun
Enable Interrupts
Idle
End If
Loop

Isrint0:
Count = Count + 32 'Software-Counter
If Count > 250 Then Count = 250
Return

End

Fragen und Korrekturen, von Hans-Joachim Vogt

Mit
Interesse verfolge ich das Projekt Blitzerkennung mit AGC. Ich habe es
heute funktionstüchtig nachgebaut, zwei Sachen sind aber unklar:
Warum
wird beim PWM eigentlich die Diode eingesetzt? Das ist doch dann nur
noch ein "Spitzenwertgleichrichter", auf Grund der sehr geringen
Stromaufnahme des
Empfängers sind die H-Impulse so extrem kurz.

Antwort:
Ohne Diode würde es auch funktionieren, allerdings mit mehr
Strombedarf. Mit der Diode verhält sich die Schaltung etwas mehr wie
eine Konstantstromquelle.
Man kann es auch wie ein Poti betrachten. 25
% PWM macht aus dem 1-k-Widerstand effektiv 4 k.
 
Zweiter Punkt ist in der Software:
 
 If Count > 1 Then 'min 2 Impulse
 
ist
meiner Ansicht nicht richtig, Count wird ja in Isrint0 generell um 32
erhöht. Wenn man nach dem Kommentar geht, müsste doch eigentlich >
32 stehen damit ein einzelner
Impuls ignoriert wird.

Antwort:
Stimmt genau! Das hatte ich übersehen, als "mal 32" in die
Interruptroutine abgewandert ist.  Jetzt wird mir auch klar, warum
der Controller zu empfindlich auf
Störimpulse reagiert hat. Es müsste
also korrekt heißen:

 If Count > 32 Then 'min 2 Impulse

Beobachtungen und Experimente von Martin Müller

Letzte Nacht gab es hier wohl ein Gewitter, von dem ich im Tiefschlaf leider nichts mitbekommen habe :(

Meine
Frau ist allerdings vom Donnergrollen aufgewacht. Der Gewittermelder (,
den ich zu Ihrer Begeisterung :-) im Schlafzimmer platziert hatte,)
habe allerdings lediglich
Warnstufe "Grün" angezeigt.

Habe
deshalb die PWM wieder auf 62,5% erhöht. Bei diesem Wert gibt es
bislang auch keine Fehlalarme. Bin schon ganz gespannt darauf, falls es
hier dann mal wirklich
gewittert und ich das Gewitter nicht wieder
verschlafe...

Zur Einstellung der PWM auf 62,5% wird im Listing eine Hilfsvariable "J" eingerichtet.

Dim J As Byte
.
.
.
J=I
Shift J , Right
Shift J , Right
I=I-J
Shift J , Right
I=I-J

Pwm0a = I
Leider
besitze ich nur ein Exemplar des TA7642 (bei Conrad in Frankfurt ist er
momentan nicht vorrätig), so dass ich keine direkten
Vergleichsbeobachtungen mit
unterschiedlichen PWM-Einstellungen oder
unterschiedlichen Spulen bzw. Schwingkreisdimensionierungen machen
kann.

Noch einige Gedanken zur Spule:


Hatte mein Exemplar
der 220µH-Spule deswegen im Gewittermelder verwendet, um eine möglichst
gute Vergleichbarkeit mit Ihren Experimenten zu bekommen. Für das ein
anderes Projekt habe ich Spulen mit nominal 390 µH, die einen etwas
größeren Spulenkörper/Ferritkern besitzen. Es ist vorstellbar, dass
diese (Schwingkreis 390 µH / 330
pF) eine gute Alternative zu (220 µH /
470 pF) sein könnten.

29.7.13:
Nachdem
der Gewittermelder ein lokales Gewitter in der Nacht von Samstag auf
Sonntag offensichtlich nicht ordentlich erkannt hat wurde am
Sonntag die PWM-Reglung
von 50% auf 62,5% erhöht. Den Schaltungsaufbau
habe ich nicht verändert. Dann wurde auf die vorhergesagten Gewitter
gewartet. Am späten Sonntagnachmittag zog von
Südwesten eine
Gewitterfront heran, wobei bei Betrachtung auf Blitzortung.org schon zu
vermuten war, dass sie meinen Wohnort nicht erreichen, sondern in
einigem Abstand
südöstlich vorbeiziehen wird.

ab 17:43: wiederholtes Aufblinken der grünen LED Entfernung ca. 50 km


18:05 - 18:09: grüne LED leuchtet dauerhaft Entfernung ca. 35 km
18:10 - 18:24: wiederholtes Aufblinken der grünen LED Entfernung ca. 60 km bei den letzten Blitzen
Schade,
dass das Gewitter nicht näher kam und Stufe gelb und rot ausgelöst
hat... Stufe grün bei 35 km Entfernung finde ich eigentlich ganz gut.

(Meine
Einschätzung (B.K):  Auch Stufe Grün bei 20 km Abstand finde ich
noch passend. Es kann sein, dass hier die Sonne scheint und 20 km
weiter ein lokales Gewitter
steht oder einfach vorbeizieht. 35 km
könnte in der Praxis vielleicht schon zu empfindlich sein, d.h. mit zu
häufiger Warnung, wenn später nichts passiert. )

Softwaremodifikationen für den Gewittermelder von Martin Müller

Nachdem
ich den Gewittermelder in der Version „Blitzwarner2T13_2“ aufgebaut
habe, sind mir noch einige Softwaremodifikationen eingefallen. Zur
Hardware: Ich habe
inzwischen noch ein paar TA7642 auftreiben können,
und so noch einige Versuche mit dem Gewittermelder durchgeführt.
 Die  primär verwendete 220µH-Spule scheint
wirklich mit
Abstand die am besten geeignete zu sein. Vergleiche mit anderen
Spulen/Schwingkreisen, kommen, bei ansonsten identischer Schaltung und
Lichtschalterblitzen,
schlechter weg.

Levelbegrenzung

Letztens 
gab es ein ziemlich großes Gewitter, dessen Beginn ich, weil unterwegs,
leider nicht mit dem Gewittermelder beobachten konnte. Als ich mitten
im Gewitter nach
Hause kam, leuchtete erwartungsgemäß die rote LED der
Schaltung. Auch nachdem das Gewitter schon deutlich weiter gezogen war,
blieb die rote LED noch für eine
gefühlte Ewigkeit angeschaltet.
Wahrscheinlich wurden während dieses Gewitters exorbitant hohe
„Level-Werte“ erreicht, so dass ich mich entschlossen habe, an
geeigneter
Stelle die Zeile
If Level > 7000 Then Level = 7000 

einzufügen. Warnstufe „rot“ wird ab Level > 6000 erreicht, und röter als rot geht sowieso nicht.

Reduktion der Stromaufnahme durch Änderung der Taktfrequenz

Beim
Gewittermelder konnte ich in der o.g. Version bei 3 V Betriebsspannung
eine Stromaufnahme (wenn keine LED leuchtet) von ca. 900 µA
messen.  Damit würden 2
Mignon-Zellen theoretisch ca. 3 Monate im
Dauerbetrieb durchhalten. Der Tiny wird dabei mit einer Taktfrequenz
von nominal 1,2 MHz betrieben. Ändert man die 
entsprechenden
Fusebits, kann man die interne Frequenz auf 128 kHz reduzieren.
Durch
die verringerte Taktfrequenz braucht der Tiny z.B. beim Abarbeiten von
Zeitschleifen deutlich weniger Taktzyklen, was die Stromaufnahme
reduziert. Natürlich muss
man Bascom mitteilen, dass man die
Taktfrequenz geändert hat. Aus

$crystal = 1200000

wird

$crystal = 128000
Wenn
man Fusebits ändert, sollte man ziemlich genau wissen was man tut.
Ansonsten ist es möglich, dass man den Tiny „verfused“ und nur noch mit
einem sogenannten „HV-
Programmer“ auf ihn zugreifen kann. Jedenfalls
hat sich nach Reduktion der Taktfrequenz die Stromaufnahme von ca. 900
µA auf ca. 470 µA verringert. Damit würden die
Mignon-Zellen länger als
5 Monate durchhalten.

Die beiden genannten Änderungen wurden in Version „Blitzwarner2T13_2a“ berücksichtigt.

AGC-Dynamisierung

Die
Definition der einzelnen Warnstufen ist die wahrscheinlich schwierigste
Entscheidung in der Softwaregestaltung beim Gewittermelder. Die
Festlegung der
Betriebsspannung für den TA7642 (über Pwm0a) beeinflusst
ebenfalls, wann welche Warnstufe erreicht wird. Durch Erhöhen von Pwm0a
erhöht sich auch die
Empfindlichkeit der Schaltung. Abhängig  von
Einsatzmöglichkeit und persönlichen Präferenzen gibt es hier sicher
viele Variationen.

Möchte man den Gewittermelder nicht nur


stationär betreiben, sondern auch als Begleiter für Wanderungen oder
Radtouren verwenden, kann es vorteilhaft sein, Warnstufen
oder 
AGC zu dynamisieren.

Die Idee der vorgestellten


Softwaremodifikation ist es, Warnstufe „grün“ schon bei etwas weiter
entfernten Gewittern (ca. 40 km) zu aktivieren. Stufe „gelb“ und „rot“
sollen
aber erst aktiviert werden, wenn man dem Gewitter wirklich
deutlich näher kommt. Ist man also unterwegs, und alle LEDs sind aus,
braucht man sich keine Gedanken zu
machen. Leuchtet die grüne LED und
geht sie wieder aus, kann man entspannt zur Kenntnis nehmen, dass es im
weiteren Umkreis gewittert. Stufe „gelb“ fordert dann schon
dazu auf,
sich einen „gewitterfesten Unterschlupf“ zu suchen.

Abweichend 
von „Blitzwarner2T13_2“ wird der initiale Pwm0a-Wert auf 62,5% statt
50% vom Endwert der AGC-Reglung gesetzt. Dazu wird die Hilfsvariable
„J“ benutzt.

Dim J As Byte
.
.
.
Shift
I ,
Right                                            
'durch 2
J=I
Shift J , Right , 2
J = J +
I                                                    
'PWM=62,5%
Pwm0a = J

Wenn Warnstufe „grün“ satt überschritten wurde, wird Pwm0a auf 50% reduziert.

 If Level > 3000 Then Pwm0a = I              'PWM=50%

Wird Warnstufe „grün“ deutlich unterschritten, wird Pwm0a erneut auf 62,5% gesetzt.

If Level < 1000 Then Pwm0a = J              'PWM=62,5%


Idle-Mode

In „Blitzwarner2T13_2“ wurde der Idle-Mode durch

If
Level = 0
Then                                        
'Nix zu tun
   Enable Interrupts
   Idle
  End If

aktiviert.

Optimierungsfähig
dabei ist, dass mit diesem Programmteil der Idle-Mode nur nach dem
(Neu-)Start des Tinys solange „Level = 0“ jungfräulich ist, erreicht
werden kann.
Wurden  die ersten Blitze detektiert, so kann durch
die verwendete Binärarithmetik

Decay = Level
  Shift Decay , Right , 8
 
Level = Level -
Decay                                 
'Level nimmt ab

die Variable „Level“ nicht mehr den Wert 0 erreichen.

Besser ist es den Idle-Mode durch

If
Decay = 0
Then                                        
'Nix zu tun
   Enable Interrupts
   Idle
  End If

zu aktivieren.

Weiterhin kann es günstig sein , der Variablen „Level“ am Programmanfang nicht den Wert 0 sondern z.B. 255 zuzuordnen.

Die genannten Modifikationen sind, ebenso wie die Korrektur von Herrn Vogt in „Blitzwarner2T13_2b“ berücksichtigt.

Power-Down-Mode

Möchte
man die Stromaufnahme noch weiter reduzieren, kann man überlegen, statt
des Idle-Modes den Power-Down-Mode zu verwenden. In
„Blitzwarner2T13_2c“ wird
der Gewittermelder zunächst für 30 Messungen
a 1 Sekunde angeschaltet. Wird in dieser Zeit kein Blitz erkannt, geht
der Tiny dann für gute eineinhalb Minuten in den
Tiefschlaf. Dabei wird
auch die Versorgungsspannung für den TA7642 ausgeschaltet. Realisiert
werden „Wach- und Schlafphase“ durch 2 For-Next-Schleifen. Natürlich
kann es sein, dass erste Blitze sich die im Power-Down-Modus entladen
nicht erkannt werden. Die auch in dieser Modifikation bestehende
AGC-Dynamisierung kann das
genannte Phänomen eventuell kompensieren.
Jedenfalls sinkt die Stromaufnahme im Power-Down-Modus auf ca. 100 µA.
Gemittelt kommt man so auf eine Stromaufnahme
von ca. knapp 200 µA,
womit die erwähnten Mignon-Zellen ein ganzes Jahr (wenns nicht
dauergewittert) durchhalten könnten.

Zu überlegen wäre, ob man


„Blitzwarner2T13_2c“ noch um einem täglichen „Zwangsreset“ 
erweitert, damit sich im Dauerbetrieb, bei schwächer werdenden
Batterien, die
Pwm0a-Werte automatisch anpassen können.

Download: Blitzwarner2T13_2abc.zip

'Gewitterwarner 2 mit reduzierter Taktfrequenz, Levelbegrenzung und AGC-Dynamisierung

$regfile = "attiny13.dat"
$crystal = 128000 'Taktfrequenz
$hwstack = 16
$swstack = 16
$framesize = 16

'Config Adc = Single , Prescaler = 2 , Reference = Avcc ' Pre 8...32


'Start Adc
'Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
'Open "comb.2:9600,8,n,1,INVERTED" For Input As #2

Config Portb = &B00011101

Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up 'PWM B0


Start Timer0

Config Int0 = Rising 'INT0 B1


On Int0 Isrint0
Enable Int0

Dim I As Byte
Dim J As Byte
Dim Count As Word
Dim Level As Word
Dim Decay As Word

Count = 0
I = 0
Portb.2 = 1
Do
I = I + 1
Pwm0a = I
Enable Interrupts
Waitms 50
Disable Interrupts
Loop Until Count > 200 'Ub einstellen
Portb.2 = 0
Shift I , Right 'durch 2
J = I
Shift J , Right , 2
J = J + I 'PWM=62,5%
Pwm0a = J
Wait 2
Level = 255

Do
Count = 0
Enable Interrupts
Waitms 1000 '1 s zählen
Disable Interrupts
If Count > 32 Then 'min 2 Impulse
Level = Level + Count 'Count
Portb.3 = 1 'Blitz-LED B2
Waitms 20
Portb.3 = 0
Waitms 20
End If
Decay = Level
Shift Decay , Right , 8
Level = Level - Decay 'Level nimmt ab

If Level < 1000 Then Pwm0a = J 'PWM=62,5%


If Level < 2000 Then Portb = &B00000000
If Level > 2000 Then Portb = &B00001000 'grün
If Level > 3000 Then Pwm0a = I 'PWM=50%
If Level > 4000 Then Portb = &B00010000 'gelb
If Level > 6000 Then Portb = &B00000100 'rot
If Level > 7000 Then Level = 7000 'Levelbegrenzung
If Decay = 0 Then 'Nix zu tun
Enable Interrupts
Idle
End If

Loop

Isrint0:
Count = Count + 32 'Software-Counter
If Count > 250 Then Count = 250
Return

End

Energiesparmodus, von Joris Müller

Ich
habe das Programm bezüglich der Stromaufnahme noch etwas
optimiert, in dem ich den Analog-Komparator (ca. 70 µA) und
den Analog-Digital-Wandler (ca. 210 µA)
abschalte. Damit reduziert
sich die Ruhestromaufnahme in meiner Schaltung auf ca. 205 µA
(davon ca. 160 µA für den TA7642). Rein rechnerisch ergäbe sich
damit bei 2
Mignon-Zellen mit einer jeweiligen Kapazität von 2000
mAh eine reine Empfangslaufzeit von  407 Tagen (natürlich
ohne Gewitter / Störungen).

$regfile = "attiny13.dat"
$crystal = 128000

$hwstack = 16

$swstack = 16
$framesize = 16

Stop Ac 'Analogkomparator deaktivieren -> Energie sparen (ca. 70 µA)


Stop Adc ' Analog-Digital-Wandler deaktivieren -> Energie sparen (ca. 210 µA)
Stop Watchdog 'Wchdog-Timer deaktivieren -> Energie sparen (nur zur Sicherheit, ist
normalerweise schon 'off' per fuse default, aber evtl. nicht bei jedem)

Config Portb = &B00011101

...

Bastelaktivität im Rahmen der Nachwuchsarbeit beim Ortsverband Goch L06, Rolf Hoymann, DL1EA.

Unsere
seit mehreren Jahren bestehende Elektronik-Bastelgruppe, bestehend aus
ca. 10 Jugendlichen, hat den Gewittermelder mit ATiny 13 und AGC
nachgebaut. Dazu
wurde eine Platine entworfen und gefertigt, sodass der
Aufbau relativ zügig erfolgen konnte.
Da
alle Jugendlichen bereits über Löterfahrung verfügten bereitete der
Aufbau trotz einiger sehr feiner Lötpunkte keine Schwierigkeiten.
Bereits nach einer Baustunde war die
erste Platine bestückt und konnte
in die Funktionsprobe gehen. Alle bestückten Platinen funktionierten
einwandfrei, eine jedoch erst nach intensiver Fehlersuche. Eine defekte
LED war der Grund und nachdem sie ersetzt war konnte auch sie die
Funktionsprobe  bestehen. Getestet wurden die fertigen Melder mit
einem Blitzgenerator und den
Funken eine Piezogasanzünders. Wir hatten
eine kleine Bastelmappe geschrieben, in der wir in einfachen Worten und
leicht zu verstehen die Funktion des Gewittermelders
dargestellt haben,
sowie einige grundlegende Informationen zur Entstehung von Blitzen und
Gewittern beschrieben haben.
Übereinstimmend
konnten wir feststellen, dass sich dieses Projekt sehr gut für eine
Elektronik Bastelgruppe eignet, dazu kommt auch, dass so ein
Gewittermelder eine echte
Anwendungsmöglichkeit bietet.

Gewitterwarner mit PIC von Friedrich Ramser

Wir
haben nun Ihren Gewitterwarner auf einen PIC portiert. In Zuge dessen
haben wir gleich ein paar Änderungen einfliesen lassen, welche
z.Bsp. Energie sparen.

https://www.ramser-elektro.at/potzblitz-der-gewitterwarner/

Gewitterwarner Arduino-Shield von Friedrich Ramser

Nach einem Jahr Pause, haben wir einen neuen Bausatz für einen Arduino Shield entwickelt.
https://www.ramser-elektro.at/blitz-o-shield-der-gewitter-detektor/

SMD-Version mit Tiny13 von Christian Herden

Den Gewitterwarner habe ich nachgebaut, erst auf der Steckplatine (der
bekam selbst ein Gewitter direkt über uns nicht mit), dann erstellte
ich eine Platine mit dem Direkt-
Toner-Verfahren. Beim ersten Gewitter
blinkte die grüne LED erst bei Blitzen im Umkreis von 15 km. Kurz
nachgedacht und alle Geräte auf dem Schreibtisch ausgestellt und
den
Gewitterwarner noch mal gestartet - nun funktioniert er hervorragend.
Gestern zogen zwei Gewitter direkt drüber uns und eines im Abstand von
30 km vorbei. Alle
wurden erkannt und angezeigt bis hin zur roten LED.
Elektronik-Labor
 AVR
 HF  Projekte 

Das könnte Ihnen auch gefallen