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
18.08.2016, 12:44
Beitrag #9
RE: AS3935
In die Lib bin ich auch nicht tiefer eingestiegen. Hatte an der Stelle die Hoffnung dass sie fehlerfrei ist. Mit den Keywords hatte ich etwas gespielt, konnte aber nicht wirklich Vorteile für die Anwendung finden. Und auf die unterste Protokollebene wollte ich auch nicht hinab steigen.
Der Beispielskech macht eigentlich schon alles wichtige.

Dann berichte mal was sich ergab wenn ein Gewitter kommt.

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
18.08.2016, 14:17 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2016 14:23 von Wampo.)
Beitrag #10
RE: AS3935
So Gewitter ist da. Bin aber leider Maßlos entäuscht. Es wurden 3 Blitze geortet der rest waren fehler?!
Hatt es die ganze nacht an und hatt nicht eine störmeldung zu beklagen.

Spiele jetzt gerade noch an den settings aber keine chance es wird iwie gar kein blitz erkannt. Statt Blitze denke ich Wurden störungen erkannt ich hatte nämlich über 250 störungen.. hier in der gegend blitzt es immernoch aber iwie wills einfach nicht.
Und das hier sind mehr wie nur drei Blitze...minimal
   

Entweder is der noisefloor zu niedrig zu hoch, aber das is mir recht egal weil er sich ja selber regelt... oder iwas stimmt mit dem ding nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.08.2016, 14:43
Beitrag #11
RE: AS3935
Das sind ja keine guten Nachrichten. Dodgy

Wie gut das Ding funktioniert hängt auch davon ab wo es positioniert ist. Ich hatte es an einem Fenster unter gebracht. Noch besser ist wohl es im Freien weit ab von Störquellen zu postieren. Im Raum in dem evtl. noch ein PC oder andere Geräte laufen wird der Noislevel vermutlich angehoben. Evtl. Stört auch der Arduino wenn der ungeschirmt in nächster Nähe zum Sensor liegt.
Dann gibt es in der Lib die ich verwendet habe die Keywords "setIndoors" und "setOutdoors". Vielleicht kann man auch damit mal spielen.
Und 40km Umkreis soll ja auch das Maximum sein. War das Gewitter direkt über dir?

Irgendwie hatte ich auch den Eindruck, dass das Modul recht experimentell zu handhaben ist. Also nicht die Geduld verlieren und mit den möglichen Einstellungen aus der "keywords.txt" spielen. "setAFEGainBoost" ist evtl. auch so ein Kandidat an dem man drehen kann.

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
18.08.2016, 16:33
Beitrag #12
RE: AS3935
Ja ich bin dirket um Zentrum vom Gewitter gewesen. Ich hab jetzt wirklich jegliche Kombi durch NoiseLevel, Rejection, und Watchdog, indoors und outdoors ebenfalls jetzt gerade alles nochmal gecheckt. leider is der sensor so dermaßen empfindlich wenn er auf indoors gestellt ist das ich es gar nicht drücken kann.

Gerade fegt wieder son nettes Gewitterchen knapp an uns vorbei.
   

Ich glaub das teil ist einfach nur Hack.... Ich bekomm wirklich ne menge an Störungen rein und ich glaube auch das die Störungen Stark dem Gewitterblitzen entsprechen aber ich bekomm ja auch keine entfernung angezeigt.

Ich bin echt verzweifelt weil das ein Sensor war auf den ich mich am Allermeisten für meine Station gefreut hab. Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.08.2016, 17:35
Beitrag #13
RE: AS3935
Ich hatte das Board erst über den I2C Bus angesprochen, mit vielen Problemen und wenig Erfolg. Du hast auch I2C verwendet?

Dann habe ich diese Library verwendet und das Board via SPI bedient. Damit lief es bei mir gleich besser.

Der AS3935-Chip kann beides, I2C und SPI. Man muss ihm nur über den "SI" Pin sagen was benutzt wird.
SI Pin LOW = SPI
SI Pin HIGH = I2C

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
18.08.2016, 18:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2016 20:26 von Wampo.)
Beitrag #14
RE: AS3935
Aktuell benutz ich den Sensor per I2C (auch schon Taktreduzierung), hatte auch schon SPI dran aber ahalt auch mit mäßigem erfolg.

Ich Probiers einfach nochmal wenn die nexte Gewitterfront anrollt. Wenns dann nicht geht dann schick ich es dem Verkäufer wieder zurück. 36€ für nichts und dann probier ich höchstens noch ein andres.

Das mit dem SI weiß ich danke Wink Hab auch an den SDA SCL leitungen extra 10k pullups dran, lief aber vorher auch ohne.

So nochmal über SPI probiert. Selbes Spiel wieder jetzt ist er sogar noch "Aggresiver" als vorher und keine Gewitter mehr da...

Ich dreh am Rad.....

Noooja... Ich hab ihn jetzt mal so eingestellt per SPI das er ohne Gewitter ruhig ist.
Nur ab und zu geht der NoiseLevel mal auf Stufe 1 hoch aber wegen der AutoTunefunktion juckt mich das jetzt grad nicht.

Ich lass Ihn mal so laufen morgen solls Angeblich nochmal Gewittern.
Anbei noch der Aktuelle Code der gerade läuft, wer vielleicht eine Falsche einstellung findet der kann mir das ja mitteilen.
Code:
#include <SPI.h>
#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;
byte SPItransfer(byte sendByte);
void AS3935Irq();

AS3935 AS3935(SPItransfer,SS,2);

unsigned long previousMillis = 0;
const long interval = 10000;
bool autotune = true;

int strokeDistance;
int led = 7;
int buz = 6;
int nc,sc,bc,nlv;
int noiselevelthreshold = interval / 10000;

void setup()
{
  lcd.begin(20,4);
  Wire.begin();
  SPI.begin();
  // NB! chip uses SPI MODE1
  SPI.setDataMode(SPI_MODE1);
  // NB! max SPI clock speed that chip supports is 2MHz,
  // but never use 500kHz, because that will cause interference
  // to lightning detection circuit
  SPI.setClockDivider(SPI_CLOCK_DIV16);
  SPI.setBitOrder(MSBFIRST);
  
  pinMode(led, OUTPUT);
  digitalWrite(led,LOW);
  pinMode(buz, OUTPUT);
  digitalWrite(buz,LOW);
  
  lcd.setCursor(0,0);
  lcd.print("! ! Kalibrierung ! !");

  AS3935.setOutdoors();
  AS3935.setWatchdogThreshold(3);
  AS3935.setNoiseFloor(2);
  AS3935.setSpikeRejection(2);
  AS3935.enableDisturbers();
  AS3935.setMinimumLightnings(1);
    
    if(!AS3935.calibrate()){
    lcd.setCursor(0,0);
    lcd.print("Tuning out of range!");
    lcd.setCursor(0,1);
    lcd.print("Retry.....Calibrate!");
    
    // reset all internal register values to defaults
    AS3935.reset();
    if(!AS3935.calibrate()){
      lcd.setCursor(0,0);
      lcd.print("Dont Work Check Wire");
      lcd.setCursor(0,1);
      lcd.print("take it or leave it ");
    }
  }
  
  digitalWrite(buz, HIGH);
        lcd.setCursor(0,1);
        lcd.print("Tuned CAP: ");
        lcd.print(AS3935.registerRead(AS3935_TUN_CAP));
        lcd.print("  ");

        lcd.setCursor(0,2);
        lcd.print("Min Lightning: ");
        lcd.print(AS3935.getMinimumLightnings());
        lcd.print("  ");
        
  AS3935IrqTriggered = 0;
  attachInterrupt(0,AS3935Irq,RISING);
  digitalWrite(buz,LOW);
  delay(1500);
  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++;
       digitalWrite(buz,HIGH);
      }
  }
  
  updatelcd();
  digitalWrite(led,LOW);
  digitalWrite(buz,LOW);
  if (autotune){
  setNoiseLevel();
  }    
}


void updatelcd()
{
      lcd.setCursor(0,0);
      lcd.print("N_Lev : ");
      lcd.print(AS3935.getNoiseFloor());
      lcd.print("  ");
      lcd.setCursor(11,0);
      lcd.print("[");
      lcd.print(nc);
      lcd.print("]  ");
      
      lcd.setCursor(0,1);
      lcd.print("Faults: ");
      lcd.print(AS3935.getSpikeRejection());
      lcd.print(" ");
      lcd.setCursor(11,1);
      lcd.print("[");
      lcd.print(sc);
      lcd.print("]  ");

      lcd.setCursor(0,2);
      lcd.print("Stroke: ");
      lcd.print(AS3935.getMinimumLightnings());
      lcd.print(" ");
      lcd.setCursor(11,2);
      lcd.print("[");
      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 > noiselevelthreshold){
      nlv++;
      nc = 00;
      if(nlv > 7){
        nlv = 7;
      }
      AS3935.setNoiseFloor(nlv);
      AS3935.calibrate();
      updatelcd();
  }
  
     else
      nlv--;
      nc = 00;
      if(nlv < 0 ){
        nlv = 0;
      }
      AS3935.setNoiseFloor(nlv);
      AS3935.calibrate();
      updatelcd();
    
}
}


void AS3935Irq()
{
  AS3935IrqTriggered = 1;
}

byte SPItransfer(byte sendByte)
{
  return SPI.transfer(sendByte);
}

// this is irq handler for AS3935 interrupts, has to return void and take no arguments
// always make code in interrupt handlers fast and short

Greetz aus Bayern
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.08.2016, 14:17
Beitrag #15
RE: AS3935
Hallo,
wenn ich einen UNO frei habe werde ich deinen Sketch mal bei mir laufen lassen.
Ich muss den jedoch auf eine Ausgabe zum SerialMonitor umbauen weil ich kein 4x20 LDC habe. Oder auf 2x20 LCD ändern.

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
Antwort schreiben 


Gehe zu:


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