www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM und DCF77


Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle miteinander,

ich habe folgende Schaltung:
-atmega8 der eine pwm von ca. 15kHz erzeugt und damit einen BUZ11
ansteuert -> stromerzeugung für einen 'Trafo'
-gleichzeitig hängt an dem atmega noch ein DCF77-Modul von Conrad.

Das Problem ist, daß sobald die pwm läuft, das DCF Modul nix mehr
empfängt. Eigentlich logisch :)

Zumindest bin ich jetzt soweit, daß es auch nicht funktioniert, wenn
ich das DCF-Modul mittels Kabel 2m weg entfernt betreibe. Also kommt
die Störung schon von der Versorgungsspannung. Besser geht es nämlich,
wenn ich das DCF-Modul mit z.B. einem Akku betreibe und die Masse des
Akkus mit der Masse der Hauptplatine verbinde. Dann wird das DCF-Signal
fast sauber empfangen.

Hat jemand eine Idee, wie man die pwm störung von der
Versorgungsspannung wegbekommt, so daß das DCF-Modul doch wieder von
der Hauptplatine mit Strom versorgt werden kann ?

Ich hab schon 100nf Kondensator zwischen + und - am DCF-Modul probiert.
In die + und - Leitung auch schon kleine Drosseln auf Ferritkern
eingeschleift, aber hat alles nichts geholfen.

Vielen Dank schon mal, Peter

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte ähnliche Probleme mit einer Multiplexanzeige MAX7219, wollte
aber unbedingt die DCF77-Antenne ins gleiche Gehäuse setzen.

Meine Lösung:

Ich schalte nachts um 3.21 Uhr die LED-Anzeige aus und warte dann max
5min, bis ein korrekter DCF77-Datensatz empfangen wurde.


Peter

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Idee, daran habe ich auch schon gedacht, nur daß es in meinem Fall
nicht geht.
Ich will nämlich die DCF Uhrzeit mittels Infrarot auf eine Propelleruhr
übertragen. Und wenn ich die PWM ausschalte, dann hat der Propeller
keinen Saft mehr und kann dann nichts mehr empfangen. Selbst ins Knie
geschossen :)

Ich könnte zwar die PWM ausschalten, das DCF signal empfangen und
auswerten, dann die PWM wieder einschalten und die Daten übertragen.
Und das ganze dann halt z.B. nur einmal am Tag. Müßte ich halt nur den
Quellcode so abändern. Momentan übertrage ich halt dauernd die
DCF-Daten, sobald ein gültiges Paket da ist. Ist eigentlich nicht
notwendig, weil soooo falsch wird die Uhr ja nicht abweichen ;)

Gruss, Peter

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich will mich auch noch mit dem dcf77-modul von conrad rumärgern.
ich habe mich aber dazu entschieden das dcf signal nur einmal am tag
auszuwerten und dann das ganze in einen pcf8583 zu schieben. wenn das
teil dann 1-2 sek am tag falsch läuft fält es nicht weiter auf, da die
uhr ja täglich sychronisiert wird. vielleicht ist es auch gar nicht
nötig das signal täglich zu holen, sondern nur bei nem reset oder
einmal die woche.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Code jetzt mal umgeschrieben. Beim einschalten wird erst
mal die DCF Zeit empfangen. Ist das komplette Paket da und die Parity
stimmt auch, dann wird erst das PWM erzeugt und die Propeller-Uhr
bekommt Saft. Dann etwas warten bis das Teil 'hochgefahren' ist und
die Daten über IR senden.
Sollte reichen.

Aber: interessieren würde mich es schon, ob es rein schaltungstechnisch
eine Möglichkeit gibt, die 'Störfrequenzen' des PWM signals vom DCF
Modul fernzuhalten. Vielleicht hat ja jemand eine Idee ;)

Gruss, Peter

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sebastian

"...und dann das ganze in einen pcf8583 zu schieben."


???

Wenn Du DCF77 hast, wozu dann noch nen extra RTC ?

Du brauchst doch dann keinen RTC mit Stützbatterie mehr, hole einfach
die Zeit bei jedem Einschalten vom DCF77.

Oder stören Dich die 2 Minuten, bis die Zeit da ist, so sehr ?


Peter

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

in einem Thread habe ich gelesen, daß es auch C-Beispiele von Dir im
Web gibt.
Kannst Du mir sagen wo, oder hier ein Attachment anhängen mit C-Code.
Das Assembler Programm für den Tiny will ich nicht unbedingt benutzen
;)

Vielen Dank, Peter

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen herzlichen Dank Peter :)

Booooaahhh ist die dcf77 vielleicht kurz, wow. Sowas nenn ich optimiert
;)

Gruss, Peter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Booooaahhh ist die dcf77 vielleicht kurz"


Naja, ich bin halt etwas schreibfaul.

Und ehe ich da so einen riesen Monster-switch mit 38 cases hinschreibe
überlege ich mir, ob da nicht Gemeinsamkeiten bestehen.

Und siehe da, man muß jedesmal zu einer bestimmten Speicheradresse
einen bestimmten Wert addieren bzw. da das 1-er Bit immer zuerst kommt,
die Variable vorher löschen.

Deshalb habe ich einfach eine Tabelle mit 38 Einträgen angelegt, in der
steht, zu welcher Variable welcher Wert zu addieren ist.

Da es nur 6 Variablen und 8 Werte sind, habe ich für beides je 1 Nibble
(4 Bit) als Kennzeichen genommen. Für die Parityprüfung habe ich noch
0xFF als Kennzeichen benutzt.


Peter

Autor: Arno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schreibst, daß Deine PWM ca 15kHz Takt erzeugt. Die 5. Harmonische
von 15kHz ist 75kHz. Je nach Genauigkeit der PWM liegt die Oberwelle
bei oder auf der Empfangsfrequenz von 77,5kHz und stopft den Empfänger
zu. Variiere mal die PWM-Frequenz nach oben (subjektiv besser) oder
unten und stelle fest, wie sich das auf den Empfang auswirkt.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Arno,

die PWM-Frequenz, die ich momentan verwende, wird vom Timer1 des
atmega8 erzeugt. OCR1A ist 500 und ICR1 ist 1000. Puls-Pause-Verhältnis
also von 1:1.
Der Code ist:
  TCCR1A = (1<<COM1A1) | (1<<COM1A0) | (1<<WGM11);
  TCCR1B = (1<<WGM12) | (1<<WGM13) | (1<<CS10);    //kein prescaler -
systemtakt
  OCR1A = 500;
  ICR1 = 1000;
  DDRB |= (1<<PB1);

Es sollten also 16kHz sein. Somit wäre die 5 Oberwelle bei 80kHz. Ich
habe wie gesagt auch schon das Modul über 1m lange Kabel angeschlossen.
Funktioniert auch nicht. Der Fehler ist meiner Meinung nach nicht wie
weit die PWM strahlt, sondern schon auf der Versorgungsspannung des
Moduls. Sobald ich es an einen separaten Akku dranhänge (Masse Akku mit
Masse Platine verbunden), funktioniert es auch. Die LED die dranhängt
blinkt dann auch schön im sekundentakt.

Aber ich werde nochmal mit der PWM Frequenz rumspielen und vielleicht
weiter nach unten noch gehen, damit es dann irgendwann die 7. oder 8.
Oberwelle wird, die dann hoffentlich nicht mehr so stark ist. Mal
sehen.

Gruss, Peter

Autor: Arno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
80kHz sind ebenfalls nur 2,5kHz von der Empfangsfrequenz entfernt.
Hast Du schon mal in der Versorgungsspannung des DCF-Moduls ein
Siebglied
ausprobiert? Schwerstes Geschütz wäre 10 - 22Ohm mit einem kleinen
Goldcap 0,1  - 0,22F direkt am Modul.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Arno,

kannst Du mir erklären, wie das Siebglied aussehen sollte ? Genau das
ist nämlich mein Problem, da ich in diesen Grundlagen der Elektronik
nicht so bewandert bin, sondern eher programmieren kann ;)

Vielen Dank, Peter

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein Goldcap  scheint mir nicht das Richtige zu sein (ist zu "weich").
Versuch es mal mit einer Drossel (100...470 üH) und einem C von
22...470 nF.
Auch eine einfachere RC  von 10..47 Ohm und  22..470nF ist ev.
ausreichend.

Gruss Kurt

Autor: Arno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ja extra geschrieben "schwerstes Geschütz".
Bei Kleinverbrauchern lasse ich immer am Serien-R 3-10% der
Betriebsspannung abfallen und berechne dann nach der erforderlichen
Grenzfrequenz des RC-Glieds die Mindestgröße des Parallelkondensators.
Noch ein paar zusätzliche Hilfsmaßnahmen:
Masseschleifen vermeiden. Wenn die Betriebsspannung nicht über das
hoffentlich abgeschirmte Signalkabel läuft, sollte die Masse nur einmal
verbunden sein, d.h. Schirm nur an einer Seite festlöten.
Das Modul hat eine Ferritantenne mit Dipolcharakteristik. Die minimale
Emfindlichkeit ist in Längsrichtung der Antenne.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.