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
Probleme mit DCF-77 Empfänger von Pollin
02.04.2019, 21:27
Beitrag #1
Probleme mit DCF-77 Empfänger von Pollin
Moin Leute,
Ich habe mir für ein kleines Projekt diesen DCF77-Empfänger gekauft.
Dann habe ich das angefügte Programm auf einen Arduino Uno geladen und es hat funktioniert. Dann wollte ich aber für mein Projekt einen Arduino Mega 2560 benutzen und habe dann den Daten-Pin des DCF-Moduls an den digitalen Pin 19 des Arduino Mega angeschlossen (andere Pins mit Interrupt Funktion sind nicht frei) und den Sketch hochgeladen (Pin im Code auf 19 geändert).
Ab dann hat es nicht mehr funktioniert. An der Schaltung, oder am Code wurde sonst nichts geändert.
Kann mir da bitte jemand weiterhelfen?

Code:
/*
* DCFSignalQuality
* Ralf Bohnen, 2013
* This example code is in the public domain.
*/
int Pin = 13;
#define DCF77PIN 2
void setup() {
  pinMode(Pin, OUTPUT);
  Serial.begin(9600);
  pinMode(DCF77PIN, INPUT);
  Serial.println("Beginne DCF77 Messung, bitte warten :");                                                      
  //Ein schlechter Empfang bedeutet nicht das wir kein Empfang haben, nur das es länger dauern würde
  //das Signal auszuwerten.
  Serial.println("KEIN SIGNAL <- |                                          <- MISERABEL <- |  SCHLECHT <- |          GUT          | -> SCHLECHT  | -> MISERABEL ->");
}

void loop() {
  //Führe eine Messung über 10 Impulse aus, ein Impuls dauert genau eine Sekunde
  int q = DCF77signalQuality(10);
  //Wenn kein Wechsel zwischen HIGH und LOW am Anschluss erkannt wurde
  //bedeutet das in 99,99% aller Fälle das der DCF Empfänger nicht arbeitet
  //denn bei extrem schlechten Empfang hat man Wechsel, nur kann man sie nicht auswerten.
  if (!q)
  {
    digitalWrite(Pin, LOW);
    Serial.print("# (Schaltung pruefen!)");
  }
  for (int i = 0; i < q; i++) {
    digitalWrite(Pin, HIGH);
    Serial.print(">");
    
  }
  Serial.println("");

}

int DCF77signalQuality(int pulses) {
  int prevSensorValue=0;
  unsigned long loopTime = 10000; //Impuls Länge genau eine Sekunde
  //Da wir ja mitten in einem Impuls einsteigen könnten, verwerfen wir den ersten.
  int rounds = -1;
  unsigned long gagingStart = 0;
  unsigned long waitingPeriod = 0;
  int overallChange = 0;
  int change = 0;

  while (true) {
    //Unsere Schleife soll das Eingangssignal (LOW oder HIGH) 10 mal pro
    //Sekunde messen um das sicherzustellen, messen wir dessen Ausführungszeit.
    gagingStart = micros();
    int sensorValue = digitalRead(DCF77PIN);
    //Wenn von LOW nach HIGH gewechselt wird beginnt ein neuer Impuls
    if (sensorValue==1 && prevSensorValue==0) {
      rounds++;
      if (rounds > 0 && rounds < pulses + 1) {overallChange+= change;}
      if (rounds == pulses) { return overallChange /pulses;}
      change = 0;
    }
    prevSensorValue = sensorValue;
    change++;

    //Ein Wechsel zwichen LOW und HIGH müsste genau alle 100 Durchläufe stattfinden
    //wird er größer haben wir kein Empfang
    //300 habe ich als guten Wert ermittelt, ein höherer Wert würde die Aussage festigen
    //erhöht dann aber die Zeit.
    if (change > 300) {return 0;}
    //Berechnen und anpassen der Ausführungszeit
    waitingPeriod = loopTime - (micros() - gagingStart);
    delayMicroseconds(waitingPeriod);
  }
}

Huh
Von den vielen Dingen die ich verloren habe vermisse ich am meisten meinen Verstand. -Ozzy Osbourne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2019, 21:37
Beitrag #2
RE: Probleme mit DCF-77 Empfänger von Pollin
Mit DCF77 kenne ich mich nicht aus, aber mir ist aufgefallen, dass du nicht den Pin19 definiert hast, sondern Pin2.
Das könnte evtl. der Fehler sein.
Hast du am Mega auch mal andere Pins getestet ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2019, 22:02
Beitrag #3
RE: Probleme mit DCF-77 Empfänger von Pollin
(02.04.2019 21:37)hotsystems schrieb:  Mit DCF77 kenne ich mich nicht aus, aber mir ist aufgefallen, dass du nicht den Pin19 definiert hast, sondern Pin2.
Das könnte evtl. der Fehler sein.
Hast du am Mega auch mal andere Pins getestet ?
Das war jetzt nur das Beispiel von der Webseite. Bei mir habe ich es geändert

Huh
Von den vielen Dingen die ich verloren habe vermisse ich am meisten meinen Verstand. -Ozzy Osbourne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2019, 06:32
Beitrag #4
RE: Probleme mit DCF-77 Empfänger von Pollin
(02.04.2019 22:02)unkreativ schrieb:  
(02.04.2019 21:37)hotsystems schrieb:  Mit DCF77 kenne ich mich nicht aus, aber mir ist aufgefallen, dass du nicht den Pin19 definiert hast, sondern Pin2.
Das könnte evtl. der Fehler sein.
Hast du am Mega auch mal andere Pins getestet ?
Das war jetzt nur das Beispiel von der Webseite. Bei mir habe ich es geändert

Wenn du uns falschen Code postest, wie sollen wir da einen Fehler finden ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2019, 08:23
Beitrag #5
RE: Probleme mit DCF-77 Empfänger von Pollin
Du weißt das dies ein 3 Volt Modul ist?

Ich nutze seit mehreren Jahren zwei dieser Module . Ich weiß, die sind um einiges teurer, aber mit dem von dir genannten habe ich schon öfter von Problemen gelesen Sad

Gruß

MiReu

Wer nix macht, macht nix falsch, lernt aber auch nix.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2019, 10:33
Beitrag #6
RE: Probleme mit DCF-77 Empfänger von Pollin
moin

Dann sollte doch n bidirektionaler logik pegelwandler ausreichen oder?

Wenn es nur die unterschiedlichen Spannungen sind....


Gruß

Nicht denken,...
...nachdenken... Rolleyes

Smarter - LiveData - KLAMM.de
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2019, 10:48
Beitrag #7
RE: Probleme mit DCF-77 Empfänger von Pollin
(02.04.2019 21:27)unkreativ schrieb:  (andere Pins mit Interrupt Funktion sind nicht frei)

Wo in Deinem Code gibt es einen Interrupt?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2019, 14:36
Beitrag #8
RE: Probleme mit DCF-77 Empfänger von Pollin
(03.04.2019 10:48)Tommy56 schrieb:  
(02.04.2019 21:27)unkreativ schrieb:  (andere Pins mit Interrupt Funktion sind nicht frei)

Wo in Deinem Code gibt es einen Interrupt?

Gruß Tommy
Interrupt ist notwendig, wenn man, nicht wie hier nur die Signalstärke und Funktionalität prüfen möchte, sondern wenn , man die Zeit anzeigen möchte.
So wie hier:
Code:
#include "DCF77.h"
#include "Time.h"

char time_s[9];
char date_s[11];

#define DCF_PIN 19             // Connection pin to DCF 77 device
#define DCF_INTERRUPT 4         // Interrupt number associated with pin

time_t time;
DCF77 DCF = DCF77(DCF_PIN,DCF_INTERRUPT);

void setup() {
  Serial.begin(9600);
  DCF.Start();
  Serial.println("Warte auf Zeitsignal ... ");
  Serial.println("Dies kann 2 oder mehr Minuten dauern.");
}

void loop() {

  delay(1000);
  time_t DCFtime = DCF.getTime(); // Nachschauen ob eine neue DCF77 Zeit vorhanden ist
  if (DCFtime!=0)
  {
    setTime(DCFtime); //Neue Systemzeit setzen
    Serial.print("Neue Zeit erhalten : "); //Ausgabe an seriell
    Serial.print(sprintTime());
    Serial.print("  ");
    Serial.println(sprintDate());  
  }    
  //---> hier könnte man die Ausgabe auch auf ein LCD schicken.
}

char* sprintTime() {
    snprintf(time_s,sizeof(time_s),"%.2d:%.2d:%.2d" , hour(), minute(), second());
    time_s[strlen(time_s)] = '\0';
    return time_s;
}

char* sprintDate() {
    snprintf(date_s,sizeof(date_s),"%.2d.%.2d.%.4d" , day(), month(), year());
    date_s[strlen(date_s)] = '\0';
    return date_s;
}

Huh
Von den vielen Dingen die ich verloren habe vermisse ich am meisten meinen Verstand. -Ozzy Osbourne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Nextion und die Probleme mit Arduino.... alpenpower 1 60 Heute 15:29
Letzter Beitrag: Tommy56
  Empfänger funktioniert nicht mehr jgrothe 5 352 06.09.2019 18:57
Letzter Beitrag: Tommy56
  Probleme mit dem Sloeber-Plugin in Eclipse mash3010 4 1.262 26.06.2019 15:15
Letzter Beitrag: MartinZ
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 18 11.895 27.05.2019 15:53
Letzter Beitrag: Hellow2
  LAN- Probleme mit Arduino UNO und W5100 Ethernet Shield SpooN 32 2.487 13.05.2019 16:54
Letzter Beitrag: SpooN
  Probleme Mit Sleep Hoeuzitry 1 485 20.04.2019 22:36
Letzter Beitrag: Chopp
  virtual wire empfänger-sender peterfried 30 2.114 17.04.2019 07:21
Letzter Beitrag: Tommy56
  Wiegezelle und hx711 Probleme Haukini 2 691 24.03.2019 16:27
Letzter Beitrag: Haukini
  Probleme im Editor 1.8.8 Petrowitsch 29 2.029 10.02.2019 14:11
Letzter Beitrag: Petrowitsch
  Probleme mit Kuman Tft Screen unkreativ 4 586 17.01.2019 11:36
Letzter Beitrag: unkreativ

Gehe zu:


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