Blitz-O-shield der Gewitter Detektor

Blitze mit einem Arduino UNO detektieren?
Leichte Anbindung an einen PC / Raspberry PI?

Dieser Artikel ist nicht mehr aktuell!
HIER geht es zur Revision 2 des Blitz-O-shields 🙂

Schon vor einiger Zeit habe ich euch den Potzblitz Gewitterdetektor vorgestellt.
Nach zig Nachfragen habe ich beschlossen, den PotzBlitz Gewitterdetektor auf die Arduino Uno (oder kompatibel ) Plattform zu portieren.
Wie immer Schritt fĂŒr Schritt erklĂ€rt .

Überlegungen zu diesem Vorhaben:

  • Physik: Wie kann ich einen Blitz / ein Gewitter detektieren?
  • Hardware: Welche Voraussetzungen sollen erfĂŒllt werden?
  • Designen des Shields
  • Zusammenbau des Shields

Physik: Wie kann ich einen Blitz / ein Gewitter detektieren?
ZunÀchst sollte man sich im klaren sein was ein Blitz ist, wie er entsteht und welche verschiedenen Arten es gibt.
Hierzu möchte ich nicht nur auf Wikipedia verweisen sondern auch auf Seiten, welche mir verschiedene Möglichkeiten aufzeigten, wie man das Problem mit der Detektierung angehen kann:
http://www.elektronik-labor.de/Projekte/Blitzwarner10.html

Wie sollte der Blitzdetektor arbeiten?
EntlÀdt sich ein Blitz, sendet dieser breitbandige Radiowellen aus, welche sich hauptsÀchlich im AM Band befinden.
AM lÀsst sich leicht verarbeiten. Im Grunde reicht eine Diode aus, um ein Audion zu bauen.
Ich bin immer ein Freund von bereits vorhandenen Schaltkreisen, da Diese auch nicht einfach mal so an einem Tag erfunden wurden und Ihre Berechtigung haben.
In diesem Projekt werden wir den AM EmpfÀnger IC TA7642 benutzen, um die NÀhe eines Gewitter zu ermitteln.

Arduino-Blitzdetektor-Shield-Schaltung-Blitzoshield-Ramser-Elektrotechnik-Webshop

Dies erfolgt auf folgende Weise:
Die Funkwellen der Blitze werden vom TA7642 empfangen, vorverstÀrkt, demoduliert und verstÀrkt.
Danach wird der Ausgang auf den Analogeingang A0 des Arduino gefĂŒhrt.
Dies ergibt pro Blitzentladung einen „Spannungeinbruch“ der Spannung am A0 Arduino Eingang, welche sich auswerten lĂ€sst.
Umso mehr „SpannungeinbrĂŒche“ am Analogeingang, umso mehr Entladungen, umso nĂ€her das Gewitter.
Die Amplitude des Signals ist in diesem Projekt egal!

Arduino-Blitzdetektor-Shield-PWM-Schaltung-Blitzoshield-Ramser-Elektrotechnik-Webshop

Beim Blitzwarner des Elektroniklabors wurde der normale Logiklevel des Portpins gewÀhlt, um einen Interrupt auszulösen.
Bei meinem Blitzdetektor wird der ADC des Arduino verwendet.
Dadurch kann die PWM Dynamisierung fĂŒr den AGC besser angepasst werden!

Die VerstÀrkung des TA7642 wird mittels geglÀtteter Spannung eines PWM Signals geregelt. Ja, richtig gelesen! Sie wird nicht gesteuert, sondern geregelt. Mehr dazu spÀter.

Hardware: Welche Voraussetzungen sollen erfĂŒllt werden?
Bei diesem Projekt soll ein standardmÀssiges Arduino Uno kompatibles Board benutzt werden, das mittels Shield erweitert wird.
Dieses Blitz-O-Shield besitzt die ganze Hardware, um die Blitze bzw. Gewitter zu detektieren.
Die Arduino IDE ist Freeware und das Sketch kann auch frei heruntergeladen werden.

Designen des Shields
Am Anfang wird wieder ein Schaltplan gezeichnet und eine Platine designt.

Arduino Blitzdetektor Shield Schaltung - Ramser Elektrotechnik Webshop

Dann heisst es warten bis die Platinen aus einem regionalen Betrieb eintreffen. Sind die Platinen eingetroffen, kann mit der BestĂŒckung begonnen werden.

Zusammenbau des Shields
Zuerst sollten alle Bauteile positioniert werden, um den Zusammenbau zuerleichtern. Bei dem im Shop erhĂ€ltlichen Bausatz ist eine BestĂŒckungsanleitung mit von der Partie, um den Zusammenbau zu erleichtern.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 1

Zuerst bestĂŒcke ich den 100k Widerstand R1.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 2

Danach folgen die ganzen 1k WiderstÀnde R2 R5 und R6.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 3

Gefolgt von den ganzen 160R LED VorwiderstÀnden R3 R7 R8 R9 und R10 sowie die 1N4148 Diode D1.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 4

Danach können die LEDs und die Drossel L2 bestĂŒckt werden.
(Zur Vereinfachung der Auschnitt der Board File. Hier ist die abgeflachte Stelle an der LED zu sehen )

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 5
Arduino Blitzdetektor Shield LED Ausrichtung - Ramser Elektrotechnik Webshop

Nach den LEDs kann der 270pF Kondensator, der TA7642, sowie die Elektrolytkondensatoren fĂŒr die geglĂ€ttete PWM Spannung bestĂŒckt werden.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 6

Jetzt folgt nur noch die zweite Drossel und die 100nF Kondensatoren.
Auch der Optokoppler fĂŒr die Fernauslösung kann gleich mitbestĂŒckt werden.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 7

Zum Schluss noch die Pinheader und alles ist gut 😉

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 8

Euer Blitzoshield kann nun auf dem Arduino Uno montiert und softwaremÀssig in Betrieb genommen werden.

Arduino Blitzdetektor Shield - Ramser Elektrotechnik Webshop 00

Die Software:
Sie kann natĂŒrlich wieder vollkommen frei downgeloaded werden und kann in der Arduino IDE geöffnet werden.

Die Funktionsweise der Software
Bei Start wird die Spannung des TA7642 so lange erhöht, bis eine gewisse Grundspannung am TA7642 anliegt.
Dies dient dazu, die Exemplarstreuung auszugleichen.
Anschliessend wird zyklisch ein laufender Mittelwert gebildet, um StöreinflĂŒssen entgegenzuwirken.
Trifft ein Blitzevent auf (Spannung bricht am A0 ein), so wird einer Countervariable erhöht.
Nach einer gewissen Zeit wird der Wert natĂŒrlich wieder dekrementriert.
AbhÀngig vom Wert, werden die LEDs angesteuert.

Ihr seht, wie simple die Welt sein kann.
Viel Spass beim Löten und Blitz detektieren 🙂

PS: Aufbau/Test von unabhÀngigen Personen:
https://draeger-it.blog/blitz-o-shield-von-ramser-elektronik/
https://www.aeq-web.com/ramser-blitz-o-shield-arduino-blitzdetektor/

Dieser Artikel ist nicht mehr aktuell!
HIER geht es zur Revision 2 des Blitz-O-shields 🙂

41 thoughts on “Blitz-O-shield der Gewitter Detektor

    1. fritz Post author

      Hallo Heiko,
      Klicke auf unserer navigationsleiste auf „Support“ und danach auf „Downloads“.
      In der Ruprik „BausĂ€tze“ ist das Sketch fĂŒr den Blitzoshield gelistet.

  1. Steineiche

    Hallo, schönes Projekt. Ich werde mich mal am Blitz-Schield versuchen. Gibt es fĂŒr die Kombi mit Arduino auch einen GehĂ€usevorschlag, sowie fĂŒr den PotzBlitz?

    1. fritz Post author

      Hallo,
      Hammond Typ „001113“ ist fĂŒr den Potzblitz sehr gut geeignet.
      Bilder, siehe Potzblitz ĂŒber „software“.
      FĂŒr den Blitz-O-shield ist mir leider kein komplett geschlossenes GehĂ€use bekannt.
      Falls Jemand aber eines in die finger bekommt, bitte gleich hier posten 😉

  2. JoRa

    Hallo sehr schönes Projekt,
    ich habe alles wie beschrieben zusammen gebaut und hatte das GlĂŒck, dass auch gleich ein Gewitter ĂŒber uns war. Leider muss ich sagen hat das Teil komplett versagt.
    Da hat außer beim selbsttest nicht geleuchtet.
    Schade

    1. fritz Post author

      Sehr geehrte/er JoRa,
      Der Blitzoshield ist eher als empfindlich bekannt, als unempfindlich.
      Was wurde im Terminal als Debugtext ausgegeben?
      (PWM,ActValue,AverangeValue,Difference,Warnlevel,Decay,Strikecount?)
      Reagiert der Blitzdetektor Shield, wenn Sie mit dem Finger die Drossel L1 am Kern berĂŒhren?
      Reagiert der Blitzdetektor Shield auf ein Piezo Feuerzeug?
      Wie sieht das Signal am Analogeingang A0 aus?

      1. JoRa

        Hallo fritz,

        danke fĂŒr die Antwort
        am Terminal wird folgendes ausgegeben:
        19:36:02.919 -> PWM:14 Actual:932 Averange:932.83 Difference:0 Warnlevel:1079 Decay:4 Strikecount:0
        19:36:03.937 -> PWM:14 Actual:934 Averange:933.01 Difference:0 Warnlevel:1075 Decay:4 Strikecount:0
        19:36:04.955 -> PWM:14 Actual:933 Averange:932.89 Difference:0 Warnlevel:1071 Decay:4 Strikecount:0
        19:36:06.010 -> PWM:14 Actual:933 Averange:932.94 Difference:0 Warnlevel:1067 Decay:4 Strikecount:0
        19:36:07.009 -> PWM:14 Actual:933 Averange:933.00 Difference:0 Warnlevel:1063 Decay:4 Strikecount:0
        19:36:08.037 -> PWM:14 Actual:933 Averange:933.12 Difference:0 Warnlevel:1059 Decay:4 Strikecount:0
        19:36:09.061 -> PWM:14 Actual:933 Averange:932.95 Difference:0 Warnlevel:1055 Decay:4 Strikecount:0
        19:36:10.108 -> PWM:14 Actual:932 Averange:932.62 Difference:0 Warnlevel:1051 Decay:4 Strikecount:0
        Wenn ich an die Drossel fasse wird strike ausgelöst.
        Wenn ich das Piezo zĂŒnde wird auch strike ausgelöst.

        Ich weiß nicht an was es liegt.

        1. fritz Post author

          Hallo JoRa,
          Bei mir sieht es so aus:
          PWM duty cycle tuning started
          PWM duty cycle tune successfull
          PWM:18 Actual:944 Averange:1018.06 Difference:7 Warnlevel:255 Decay:0 Strikecount:32
          PWM:18 Actual:951 Averange:949.91 Difference:-1 Warnlevel:509 Decay:1 Strikecount:255
          PWM:18 Actual:951 Averange:950.81 Difference:0 Warnlevel:508 Decay:1 Strikecount:0
          Wird ein „Blitz“ detektiert, ist die Ausgabe wie folgt:
          PWM:18 Actual:951 Averange:950.19 Difference:0 Warnlevel:1495 Decay:5 Strikecount:0
          PWM:18 Actual:951 Averange:950.22 Difference:0 Warnlevel:1490 Decay:5 Strikecount:0
          PWM:18 Actual:949 Averange:939.57 Difference:-9 Warnlevel:1739 Decay:6 Strikecount:255
          PWM:18 Actual:939 Averange:936.79 Difference:-2 Warnlevel:1987 Decay:7 Strikecount:255
          PWM:18 Actual:945 Averange:943.30 Difference:-1 Warnlevel:2234 Decay:8 Strikecount:255
          PWM:18 Actual:950 Averange:950.02 Difference:0 Warnlevel:2226 Decay:8 Strikecount:0
          PWM:18 Actual:945 Averange:945.69 Difference:0 Warnlevel:2218 Decay:8 Strikecount:0

          Man kann nun an zwei Schrauben drehen:
          1.Man erhöht die Empfindlichkeit der Schaltung.
          Dazu wird in der TunePWM() folgende Zeile modifiziert:
          PWM_DutyCycle = (PWM_DutyCycle /3 ) * 2;
          Original wird der PWM Wert auf 2/3 des Maximums gesetzt.
          Man kann den PWM Wert ja mal auf 5/6 setzen.

          2.Man veringert die Tolleranz gegenĂŒber Störungen.
          Dazu gehört in der loop() folgende Zeile modifiziert:
          if (Difference >= 15){
          WĂŒrde da mal 12 testen.

  3. JoRa

    Danke fĂŒr die Hilfe nach einer feinjustierung wie beschrieben funktioniert es Prima.
    Jetzt habe ich allerdings noch ein Problem.
    Da ich die Daten auf nen Server laden will benötige Wlan.
    Weshalb ich den D1 oder ein Esp8266 einsetzen möchte.
    Gibt es den sketch auch fĂŒr den Ardunino D1?
    Ist ja im Prinzip kompatibel, jedoch funktioniert der Sketch vom UNO dort nicht.

    analogReferenz Fehler!

    Die funktion habe ich bei beiden nicht hinbekommen.
    Bitte um kurze Antwort.

    Recht herzlichen Dank und mit freundlichen GrĂŒĂŸen
    JoRa

  4. Michael Krispin

    Waere es nicht einfacher (auch sicherer) den Blitz ueber seinen sicher vorhandenen UV Lichtanteil zu detektieren?
    Diese UV Dioden liefern eine Spannung als Teil eines Spannungsteilers.
    Abtastraten von etwa 4-5 mal /pro Sekunde sollte kein Problem darstellen, weder fuer den ADC1115 noch fuer den uCtrl
    Das in ein Array rollierend speichern fuer etwa 5 Sekunden und ueber die rate of change durch vergleich der aktuellen mit den Vorgroessen auf einen deutlichen Peak pruefen.
    Ich bin gerade daran fuer meine Wetterstation
    Lieben Gruß aus Thailand,
    Michael

    1. fritz Post author

      Hallo Michael,
      Über UV Licht ist unserer Meinung nach suboptimal.
      Elektromagnetische Wellen durchdringen WĂ€nde.
      UV Licht leider nicht.
      Über Radiowellen ist eine Detektion ĂŒber 50km kein Problem.
      Über UV Licht, wird der analoge Schaltungsteil sehr anspruchsvoll.
      Physikalische Grenzen auszuloten ist aber unser KerngeschĂ€ft 😉

  5. Michael Krispin

    Hallo Fritz,
    Mein UV Sensor ist draussen an meiner Wetterstation wasserdicht montiert.
    Erste Versuche mit einem ADC1115 (4 AI) ueber I2C an meinem ESP8266 angeschlossen zeigen gute Resultate.
    Da ist nur ein weiterer Widerstand noetig um einen Spannungsteiler zu bilden. Diese UV Photodiode aendert intern seinen Spannungsabfall in Abhaengigkeit der einfallenden UV Lichtstaerke. Das ist kein lahmer LDR.
    Ich habe zur Zeit taeglich Gewitter hier und optimiere nur noch die Peakerkennung per Software.
    Mich interessiert obendrein auch nur Gewitter in meiner Umgebung.
    Aber es fuehren bekanntlich viele Wege nach Rom
    LG, Michael

  6. Jörg Michael GĂŒnther

    Hej Fritz
    Eine Frage ….
    Kann man die Ausgabe auf irgendeine Weise auch in Daten fassen, die ich in einer Datenbank speichern kann und dann auf meiner Wetterseite darstelle?
    Vielleicht zusÀtzlich zu den Leuchtdioden. Das Ganze befindet sich nÀmlich nach Montage ausserahlb des Hauses in einer Box.
    Herzlichen Gruss aus Schweden
    Jörg

    1. fritz Post author

      Hallo Jörg,
      Da gibt es einige Möglichkeiten.
      Am einfachsten die UART Ausgabe nutzen und den Arduino an einen Raspberry PI anbinden.
      Dann hast du genĂŒgend Rechen Power fĂŒr eine Datenbankanbindung und bist zugleich vernetzt.

      1. Jörg Michael GĂŒnther

        Danke ! Das ging ja fix.
        Nun warte ich erstmal bis der Bausatz da ist 😉
        Gruss aus Schweden
        Jörg

  7. Andreas Golla

    Richtig guter Bausatz und Sketch.
    Ich habe noch ein 128×32 OLED ĂŒber I2C angeschlossen und den Sketch entsprechend erweitert. Die lange Zeile fĂŒr den seriellen Monitor wird jetzt 4-zeilig auf dem OLED ausgegeben. Mit aufgesetztem Shield blieb das OLED allerdings zunĂ€chst dunkel. Egal ob an A5/A4 oder SDA/SCL angeschlossen, obwohl die Pins am Shield laut Schaltplan nicht benutzt werden. Seltsam. Hab mir dann so beholfen, dass ich das Shield ĂŒber SDA/SCL am Rand ausgesĂ€gt habe und das OLED direkt in die Pins des darunterliegenden Arduinos stecke. Und siehe da, es funktioniert. Nur manchmal wird beim Schreiben aufs OLED ein Störimpuls (Blitz) erzeugt. HĂ€ngt irgendwie davon ab, wie das Kabel liegt. Vielleicht hat jemand eine Idee, wie man das noch robuster bekommt. (5V und GND sind ohne Probleme direkt am Shield angeschlossen)

    Ansonsten einwandfreier Betrieb auch am alten Labornetzteil. USB-Steckernetzteile allerdings gehen wegen Störungen gar nicht.

      1. Andreas Golla

        Hallo Herr Ramser,
        danke fĂŒr den Tip. Absenken der I2C Frequenz bis runter auf ca. 1kHz hat jedoch nichts gebracht. Die Lösung war dann ein zusĂ€tzliches ‚delay(50)‘ nach dem Schreiben der 4. und letzten Zeile aufs OLED mit ‚display.display()‘. Der Störimpuls ist jetzt weg. Ein ‚delay(10)‘ war ĂŒbrigens zu klein.

        1. fritz Post author

          Sehr geehrter Herr Golla,
          Leider können wir einen Befehl, in einem unbekannten Programm, auf einer unbekannten Hardware, ohne Schaltplan nicht nachvollziehen und damit verbunden auch leider keinen Support anbieten.

  8. Lutz

    Hallo

    bausatz zusammengebaut und funktioniertprima. werd den mal ein paar tage laufen lassen. bis dahin alles prima. Ich möchte damt eine kamera ansteuern und Blitzfotografie machen. Kann mir bitte jemand helfen ? Wie muss ich den optokoppler betreiben ? Welcher pin ist was ? Ich habe einen potentialfreien kontakt an der kamera und einen kabelgebundenen fernauslöser.
    Danke fĂŒr jede Hilfe!!

      1. Lutz

        hallo Fritz

        danke fĂŒr den Link. Aber der OK auf dem Bausatz ist ein Transistor.. brauch ich eine Beschaltung fĂŒr den Pin 6 ?

  9. Chrsitoph Gralla

    Gibt es die möglichkeit den Sketch auf einem D1 WEMOS mini laufen zu lassen?
    Beim Kompilieren bricht der Kompiler bei „analogReference(INTERNAL);“ ab. DER D! hat anscheined keine Interne Spannung.
    Kommentiert man diese Zeile aus, dann erscheint untenstehnde meldung. Ohne Abbruch?!

    . Variables and constants in RAM (global, static), used 28440 / 80192 bytes (35%)
    ║ SEGMENT BYTES DESCRIPTION
    ╠══ DATA 1536 initialized variables
    ╠══ RODATA 1120 constants
    ╚══ BSS 25784 zeroed variables
    . Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 61247 / 65536 bytes (93%)
    ║ SEGMENT BYTES DESCRIPTION
    ╠══ ICACHE 32768 reserved space for flash instruction cache
    ╚══ IRAM 28479 code in IRAM
    . Code in flash (default, ICACHE_FLASH_ATTR), used 240260 / 1048576 bytes (22%)
    ║ SEGMENT BYTES DESCRIPTION
    ╚══ IROM 240260 code in flash

    Gibt es hier eine Lösung? oder muss es ein Arduino UNO sein?

  10. Christoph Gralla

    Hallo dazu nocheinmal:
    Der Sketch lies sich dennoch hochladen und ist angelaufen.
    GrĂŒne LED kam, gelbe LED kam, dann Abbruch mit blinken.

    Habe darauf den Sketch modifiziert mit Debug Meldungen:
    Kondensator wird entladen.
    Kondensator wird auf 1/3 geladen.
    Der Analogwert (digits) starten dann bei ca 285. ZĂ€hlen hoch bis ca. 450 und schwanken dann um 380 bis 410 solange bis der Timeout kommt (Blinken von allen LEDS).
    Anscheinend wird der Kondensator nicht vollstÀndig geladen. Woran kann das liegen?
    Danke fĂŒr eine kurze Idee.
    Gruß
    Christoph

    1. fritz Post author

      Es sollte die Versorgungsspannung des TA7642 gemessen werden.
      Es sieht so aus, dass diese zu klein ist und daher der AGC Schwellwert nicht erreicht wird.

  11. Christoph Gralla

    Hallo Fritz,
    Danke fĂŒr den Hinweis.
    Ich habe in der Software den Analog Read mit dem Faktor 100/33 multipliziert, dann funktioniert das PWM Tunig. Die Spannung beim Analogin liegt dann nach erfolgreichem PWM Tunig bei ca. 0,9 V. Dann funktioniert auch die Anzeige des Warnlevel. (ersteinmal. Ich habe zur Zeit kein Gewitter hier). Der Test mit dem Piezofeuerzeug funktioniert einwandfrei! Das angeschlossene OLED Display SD1306 lĂ€uft auch noch obwohl anscheinend auch der Speicher des D1 WEMOS an der Grenze arbeitet. Zur Zeit ist hier Gewitterzeit und ich lasse es jetzt ersteinmal auf dem Steckbrett durchlaufen befor ich ein 3D Druck GehĂ€use konstruiere. Das stelle ich dann gerne hier ein. Ziel ist hier das es die Blitz Daten ĂŒber WIFI an meine Hausautomation ĂŒbertrĂ€gt und dann an meiner Wetterstation zusĂ€tzlich anzeigt. (Node Red machts möglich.).

    Bisher kann ich nur sagen: Ein Klasse Bausatz und eine sehr fitte Software.
    .

  12. Markus

    Hallo Fritz,
    vielen Dank fĂŒr dieses tolle Projekt.
    Ich habe das zusammengelötete Shield auf meinen Arduino Mega2560 gesteckt. Ich musste in Zeile 48 „INTERNAL“ durch „INTERNAL1V1“ ersetzen (Mega spezifisch). Dann ließ sich alles kompilieren und hochladen.
    Leider ist der „StrikeCount“ permanent auf 255 obwohl kein Gewitter herrscht, sodass der maximale Warnlevel bereits nach 30 Sek. erreicht wird:

    PWM duty cycle tuning started
    20:18:36.668 -> PWM duty cycle tune successfull
    20:18:36.705 -> PWM:48 Actual:1023 Averange:1023.00 Difference:0 Warnlevel:255 Decay:0 Strikecount:0
    20:18:37.731 -> PWM:48 Actual:999 Averange:994.44 Difference:-4 Warnlevel:509 Decay:1 Strikecount:255
    20:18:38.756 -> PWM:48 Actual:1002 Averange:999.12 Difference:-2 Warnlevel:762 Decay:2 Strikecount:255
    20:18:39.784 -> PWM:48 Actual:1011 Averange:989.22 Difference:-21 Warnlevel:1014 Decay:3 Strikecount:255
    20:18:40.810 -> PWM:48 Actual:1016 Averange:998.34 Difference:-17 Warnlevel:1265 Decay:4 Strikecount:255
    20:18:41.848 -> PWM:48 Actual:927 Averange:980.49 Difference:53 Warnlevel:1515 Decay:5 Strikecount:255
    20:18:42.883 -> PWM:48 Actual:999 Averange:1006.53 Difference:7 Warnlevel:1764 Decay:6 Strikecount:255
    20:18:43.914 -> PWM:48 Actual:993 Averange:970.94 Difference:-22 Warnlevel:2012 Decay:7 Strikecount:255
    20:18:44.946 -> PWM:48 Actual:988 Averange:1006.39 Difference:18 Warnlevel:2259 Decay:8 Strikecount:255
    20:18:45.963 -> PWM:48 Actual:930 Averange:967.28 Difference:37 Warnlevel:2505 Decay:9 Strikecount:255
    20:18:47.014 -> PWM:48 Actual:993 Averange:975.76 Difference:-17 Warnlevel:2750 Decay:10 Strikecount:255
    20:18:48.039 -> PWM:48 Actual:986 Averange:972.91 Difference:-13 Warnlevel:2994 Decay:11 Strikecount:255
    20:18:49.080 -> PWM:48 Actual:930 Averange:956.77 Difference:26 Warnlevel:3237 Decay:12 Strikecount:255
    20:18:50.109 -> PWM:48 Actual:933 Averange:971.34 Difference:38 Warnlevel:3479 Decay:13 Strikecount:255
    20:18:51.109 -> PWM:48 Actual:932 Averange:959.78 Difference:27 Warnlevel:3720 Decay:14 Strikecount:255
    20:18:52.172 -> PWM:48 Actual:937 Averange:947.82 Difference:10 Warnlevel:3960 Decay:15 Strikecount:255
    20:18:53.180 -> PWM:48 Actual:993 Averange:996.39 Difference:3 Warnlevel:4199 Decay:16 Strikecount:255
    20:18:54.203 -> PWM:48 Actual:927 Averange:956.12 Difference:29 Warnlevel:4437 Decay:17 Strikecount:255
    20:18:55.269 -> PWM:48 Actual:931 Averange:950.04 Difference:19 Warnlevel:4674 Decay:18 Strikecount:255
    20:18:56.265 -> PWM:48 Actual:1015 Averange:995.17 Difference:-19 Warnlevel:4910 Decay:19 Strikecount:255
    20:18:57.329 -> PWM:48 Actual:930 Averange:952.12 Difference:22 Warnlevel:5145 Decay:20 Strikecount:255
    20:18:58.343 -> PWM:48 Actual:1004 Averange:1003.75 Difference:0 Warnlevel:5379 Decay:21 Strikecount:255
    20:18:59.385 -> PWM:48 Actual:1012 Averange:991.55 Difference:-20 Warnlevel:5612 Decay:22 Strikecount:255
    20:19:00.407 -> PWM:48 Actual:1011 Averange:997.46 Difference:-13 Warnlevel:5845 Decay:22 Strikecount:255
    20:19:01.462 -> PWM:48 Actual:1003 Averange:992.30 Difference:-10 Warnlevel:6077 Decay:23 Strikecount:255
    20:19:02.469 -> PWM:48 Actual:989 Averange:1004.06 Difference:15 Warnlevel:6308 Decay:24 Strikecount:255
    20:19:03.508 -> PWM:48 Actual:927 Averange:948.42 Difference:21 Warnlevel:6538 Decay:25 Strikecount:255
    20:19:04.539 -> PWM:48 Actual:1010 Averange:1005.88 Difference:-4 Warnlevel:6767 Decay:26 Strikecount:255
    20:19:05.576 -> PWM:48 Actual:1019 Averange:1001.58 Difference:-17 Warnlevel:6995 Decay:27 Strikecount:255
    20:19:06.617 -> PWM:48 Actual:994 Averange:998.72 Difference:4 Warnlevel:7000 Decay:28 Strikecount:255

    Woran kann das liegen (die LED „Strike“ flackert in sehr hoher Frequenz)?
    Ich kann mir nicht vorstellen, dass es hier starke Störfelder gibt …

  13. Markus

    Nachtrag:
    Ich habe die Empfindlichkeit in der Zeile „PWM_DutyCycle = (PWM_DutyCycle /3 ) * 2“ auf 2/11 verringert (PWM=12). Damit „funkt“ die Strike-LED nicht mehr von alleine. Der Test mit dem Piezofeuerzeug funktioniert auch.
    Wenn ich allerdings mit dem Finger in die NĂ€he von L1 komme (5mm), feuert „Strike“ wie verrĂŒckt.

    1. fritz Post author

      Hallo Markus,

      Wie schon in der vorigen Antwort geschrieben, hast du das verÀndert, was der Auslöser des Fehlverhaltens war:
      Die PWM ist(war) zu hoch!

      Man darf nicht vergessen, dass der Arduino Mega auch eine Störabstrahlung hat, welcher eingekoppelt werden kann.
      Gerade eine Kommunikation mit I2c (400kHz) kann hier ein Problem darstellen.

      Das man die Spule nicht anfassen sollte, hast du ja selbst rausgefunden 😉
      Das ist normal.
      Es werden ĂŒber den menschlichen Körper Störfelder eingekoppelt.

      PS:
      Vielleicht hilft es auch, wenn man die PWM dynamisch verminderst. (if (StrikeCount >= 255){)
      Wenn z.Bsp. in der Auswertung des Strikes, bei einem Strikecount grösser 255 die PWM reduziert wird.

  14. Markus

    Hallo Fritz,
    danke fĂŒr Deine rasche RĂŒckmeldung. Ich weiss jetzt auch warum die PWM so hoch ist: Die “ while (ActValue PWM duty cycle tuning started
    07:14:34.910 -> PWM:1 Actual:468
    07:14:35.149 -> PWM:2 Actual:503
    [

    

    
]

    07:14:42.155 -> PWM:30 Actual:981
    07:14:42.403 -> PWM:31 Actual:992
    07:14:42.653 -> PWM:32 Actual:999
    07:14:42.935 -> PWM:33 Actual:1003
    07:14:43.180 -> PWM:34 Actual:1012
    07:14:43.428 -> PWM:35 Actual:1020
    07:14:43.678 -> PWM:36 Actual:1023
    07:14:43.920 -> PWM:37 Actual:1023
    07:14:44.169 -> PWM:38 Actual:1023
    07:14:44.419 -> PWM:39 Actual:1023
    07:14:44.674 -> PWM:40 Actual:1023
    07:14:44.920 -> PWM:41 Actual:1023
    07:14:45.173 -> PWM:42 Actual:1023
    07:14:45.425 -> PWM:43 Actual:1023
    07:14:45.665 -> PWM:44 Actual:1023
    07:14:45.914 -> PWM:45 Actual:1023
    07:14:46.162 -> PWM:46 Actual:1023
    07:14:46.412 -> PWM:47 Actual:1023
    07:14:46.673 -> PWM:48 Actual:1023
    07:14:46.924 -> PWM:49 Actual:1023
    07:14:47.173 -> PWM:50 Actual:1023
    07:14:47.429 -> PWM:51 Actual:1023
    07:14:47.685 -> PWM:52 Actual:1023
    07:14:47.937 -> PWM:53 Actual:1023
    07:14:48.190 -> PWM:54 Actual:1023
    07:14:48.436 -> PWM:55 Actual:1023
    07:14:48.684 -> PWM:56 Actual:1023
    07:14:48.938 -> PWM:57 Actual:1023
    07:14:49.194 -> PWM:58 Actual:1023
    07:14:49.444 -> PWM:59 Actual:1023
    07:14:49.694 -> PWM:60 Actual:1023
    07:14:49.939 -> PWM:61 Actual:1023
    07:14:50.953 -> PWM duty cycle tune successfull

    Nachtrag: Hab den Fehler gefunden: „ActValue“ muss als „FLOAT“ deklariert werden, dann klappts!

  15. Bernd

    Hallo Fritz,
    Ich habe eine generelle Frage ĂŒber Gewitter Detektor.
    Kann ich mit diesem Gewitter Detektor auch Kurzschlussfunken detektieren.
    Zum Beispiel, Hochspannungsmast 35.000V Spannung (AC, 50Hz) 2000A Strom. Eine Phase schlÀgt gegen Hochspannungsmastkonstruktion. Es entsteht ein Funken. Kurzschluss dauert z.B. 0.1 bis 1 Sekunde dann trennt sich diese Phase wieder vom Mast. Entfernung zum Detektor zum Funken ca. 3-20 Meter.
    Bei wie viel kHz sendet so eine Kurzschlussfunke hast Du darĂŒber Erfahrung. ?
    Es geht hier darum, ob man vom Kurzschlussfunken ein Signal empfĂ€ngt oder nicht also es geht um ja oder nein, es können manchmal auch Falschsignale sein, das ist nicht schlimm . Kannst Du darĂŒber was sagen ?

    1. fritz Post author

      Leider können wir keine Aussage ĂŒber Funken, welche bei KurzschlĂŒssen an Hochspannungsmasten entstehen, machen.

  16. Olaf Tönne

    Hallo fritz,

    ich habe eure Schaltung nachgebaut und sie funktioniert auf Anhieb!!
    Gebe es auch die Möglichkeit an einem freien Port einen passiven
    Piezosummer anzuschliessen, und mit diesem den
    „Strike“ hören zu lassen? Was mĂŒsste im Code dazu hinzugefĂŒgt/verĂ€ndert werden?
    Vielen Dank im vorraus fĂŒr die Hilfe!

    Gruß O.

    1. fritz Post author

      Ein Piezo mĂŒsste mit einigen kHz angesteuert werden.
      WĂŒrde da eher einen Summer verwenden und danach mit einem normalen Vergleicher des Wertes „StrikeCount“ auf 0 lösen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert