INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
AS3935
16.08.2016, 14:41 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2016 14:42 von Wampo.)
Beitrag #1
AS3935
Kann mir jemand den AS3935 etwas genauer erklären?

Was hat es mit dem Noise Floor auf sich bzw welche zahl macht ihn Sensiebler.
Was macht der Watchdog?
Wie is das mit dem Kalibrieren?

Wie stellt man das ding richtig ein?

Jemand damit schon erfahrungen?

Mein Code schaut aktuell so aus, mit NoiseFloor Autotune
Code:
#include <AS3935.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void AS3935Irq();
volatile int AS3935IrqTriggered;

AS3935 AS3935(2,0x02); // (InterruptPin, Adresse)
int strokeDistance;
int led = 13;
int nc,sc,bc,nlv;

unsigned long previousMillis = 0;
const long interval = 60000;

void setup()
{
  lcd.begin(20,4);
  Wire.begin();
  pinMode(led, OUTPUT);
  digitalWrite(led,LOW);
    
    lcd.setCursor(0,1);
        lcd.print("Kalibrierung");
        AS3935.clearStats();
  // reset all internal register values to defaults
    AS3935.reset();
    
  if(!AS3935.calibrate()){
    lcd.setCursor(0,0);
    lcd.print("Tuning out of range!");
    delay(1200);
  }
  
   int tunecap = AS3935.registerRead(AS3935_TUN_CAP);
        lcd.setCursor(0,2);
        lcd.print("Tuned CAP: ");
        lcd.print(tunecap,DEC);
        lcd.print("  ");
  
    
  AS3935.setOutdoors();
  AS3935.setWatchdogThreshold(3);
  AS3935.setNoiseFloor(3);
  AS3935.setSpikeRejection(3);
  AS3935.enableDisturbers();
  
  AS3935IrqTriggered = 0;
  attachInterrupt(0,AS3935Irq,RISING);
  
  delay(1200);
  lcd.clear();
    
}

void loop()
{
   if(AS3935IrqTriggered)
  {
    
    AS3935IrqTriggered = 0;
    int irqSource = AS3935.interruptSource();
    digitalWrite(led,HIGH);
    // returned value is bitmap field, bit 0 - noise level too high, bit 2 - disturber detected, and finally bit 3 - lightning!
    if (irqSource & 0b0001){
       nc++;
      }
    
    if (irqSource & 0b0100){
       sc++;          
      }
      
    if (irqSource & 0b1000){
       strokeDistance = AS3935.lightningDistanceKm();
       bc++;
      }
  }
  
  updatelcd();
  digitalWrite(led,LOW);
  setNoiseLevel();    
}


void updatelcd()
{
      lcd.setCursor(0,0);
      lcd.print("Noise Level: ");
      lcd.print(AS3935.getNoiseFloor());
      lcd.print("  ");
      lcd.print(nc);
      lcd.print("  ");
      
      lcd.setCursor(0,1);
      lcd.print("Faults: ");
      lcd.print(sc);
      lcd.print("  ");

      lcd.setCursor(0,2);
      lcd.print("Strokes: ");
      lcd.print(bc);
      lcd.print("  ");

      lcd.setCursor(0,3);
      if (strokeDistance == 63 || strokeDistance == 0){
      lcd.print("No Lightnings       ");
      }
      if (strokeDistance < 63 && strokeDistance > 0){
      lcd.print("Distance: ");
      lcd.print(strokeDistance,DEC);
      lcd.print(" km     ");
      }
}

void setNoiseLevel(){
  unsigned long currentMillis = millis();
  nlv = AS3935.getNoiseFloor();
  if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;

  if (nc < 10){
      nlv++;
      nc = 00;
      if(nlv > 7){
        nlv = 7;
      }
      AS3935.setNoiseFloor(nlv);
      updatelcd();
  }
  
     if(nc > 10){
      nlv--;
      nc = 00;
      if(nlv < 0 ){
        nlv = 0;
      }
      AS3935.setNoiseFloor(nlv);
      updatelcd();
     }
}
}


void AS3935Irq()
{
  AS3935IrqTriggered = 1;
}

Thx
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.08.2016, 23:46
Beitrag #2
RE: AS3935
Hallo Wampo,
ich hatte mich vor gut 2 Jahren mal damit beschäftigt, kann dir deine Fragen aber leider nicht beantworten.
Ich weiß nur noch dass man das Teil sowohl über I2C als auch SPI ansprechen kann. Per I2C hatte ich kaum Erfolg, aber über SPI lief es irgendwann.
Ich hatte auch kein LC-Display verbaut sondern alles über den SerialMonitor beobachtet. Deshalb würde dir auch mein letzter Code der irgendwie funktionierte kaum weiter helfen.
Mein größtes Problem war aber, dass zu der Zeit als ich am Testen war kein Gewitter aufzog und wenn mal ein Gewitter war, dann war ich nicht zu Hause zum Testen.
Als Notbehelf hatte ich dann irgendwelche induktive Lasten in der Nähe geschaltet, dann meldete sich das Teil schon mal und sagte "Blitz erkannt".

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.08.2016, 07:50
Beitrag #3
RE: AS3935
Ahh ok,

Trotzdem danke!
Hast du den Sensor denn noch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.08.2016, 12:16
Beitrag #4
RE: AS3935
Hallo,
den Sensor habe ich noch. Es ist dieser.
Ich will da aber nochmal ran und den evtl. in meine Wetterstation einbauen.

Welchen hast du denn?

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.08.2016, 15:11
Beitrag #5
RE: AS3935
(17.08.2016 12:16)ardu_arne schrieb:  Hallo,
den Sensor habe ich noch. Es ist dieser.
Ich will da aber nochmal ran und den evtl. in meine Wetterstation einbauen.

Welchen hast du denn?

Gruß
Arne

Hi Arne,
...also wenn das so weitergeht werde ich auch noch "Blitzgescheit"...lach...
interessanter Chip..
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.08.2016, 20:59 (Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2016 21:04 von Wampo.)
Beitrag #6
RE: AS3935
Ich hab mir diesen hier gegönnt, vom aufbau her so ziemlich gleich, nur das man die I2C adresse per lötjumper verstellen kann.

http://r.ebay.com/4TDC9O

Ich hab auch beide anschlussmöglichkeiten ausprobiert (I2C und SPI) beides mit gleichem erfolg. Etwas weniger Rauschen hatte ich als ich die I2C geschwindigkeit auf 50khz gedrosselt hatte, das wars mir aber nicht wirklich wert mein ganzes system dadurch zu verlangsamen. Bei 400khz war das dann schon wieder extremes rauschen und fast nur Störungen, auch mit twisted leitungen und schirmung.

Ich hab das ganze jetz mit
WatchdogThreshold = 3
SpikeRejection = 2
und NoiseFloor tune ich Automatisch mit ein paar zeilen Code alle 30sec

Ich würde gern wissen was die TuneCap mir sagen will, hab dort aus dem Register den wert 7 immer rausgelesen. Is das gut schlecht?!

Scheint soweit zu funktionieren, jedoch haben wir noch nirgends Gewitter in der nähe...

Auf piezofeuerzeuge reagiert der sensor jedoch mit einem Rauschen...und der NoiseFloor wird angehoben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.08.2016, 21:23
Beitrag #7
RE: AS3935
(17.08.2016 20:59)Wampo schrieb:  ...
Auf piezofeuerzeuge reagiert der sensor jedoch mit einem Rauschen...und der NoiseFloor wird angehoben.

Hallo,
das sieht meiner Meinung nach gut aus.

Zu WatchdogThreshold und SpikeRejection kann ich nichts sagen, meine Übungen sind zu lange her.

Mit der TuneCap Geschichte wir ein Oszillator (in 16 Schritten?) auf 500kHz abgeglichen. Die Stufe bei der deine Platine am nächsten an 500kHz liegt ist Stufe 7. Ich denke das ist ein sehr guter Wert.
Ich hatte auch ewig auf ein Gewitter gewartet und als es dann da war hatte ich keine Zeit mich um den Sensor zu kümmern. Das ist also eine Sache für die man viel Geduld braucht.

@Bitklopfer,
der Chip ist wirklich interessant aber auch nicht so einfach zu verstehen. Ich habe mich da auch viel auf die Libraray verlassen und gehofft dass die alles richtig macht.
Der Bau einer Feldmühle mit Arduinounterstützung ist da eine interessantere Aufgabe.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.08.2016, 21:50
Beitrag #8
RE: AS3935
Ahhh okay.
Konnte nix mit der TuneCap anfangen aber jetzt blick ichs..
Hatte da auch schon mal was gelesen aber als uninteressant empfunden weil ich auch nirgends sehen kann welche Kondis eingepflanzt wurden.

Ich werde einfach mal warten, morgen solls in der Erdinger Umgebung Gewittern, das wäre super.

Ich hab mir schon die Lib mal genauer angeschaut auch mit den Keywords aber da wird man irgendwie nicht ganz schlau draus und beim Datenblatt bin ich auch raus, da kann ich mit 0x3f ect nichts anfangen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste