Forum: Mikrocontroller und Digitale Elektronik Peaks aus Rechtecksignal entfernen


von Carsten (Gast)


Lesenswert?

Hallo Bastler,

da ich zum Suchen oder Google zum Finden für mein Problem
offensichtlich zu doof ist, schreibe ich hier mal eine Frage rein:


Ich generiere aus der 230V Netzspannung ein Rechtecksignal, welches ich
für ein paar Basteleien verwende (Frequenzmessung, Phasenanschnitt,
etc.). Verwendet wird ein LM358 OPV, der als Komparator die gepulste
Gleichspannung eines Netztrafos mit Masse vergleicht (Phasenversatz
wird mit Spannungsteilern ausgeglichen). Dieses Verfahren funktioniert
recht gut, bis... bis zum jetzt folgenden Satz:

leider versauen mir Störungen (Einschalten von Waschmaschine,
Ventilator, etc.) immer wieder dieses TTL-Signal. Während das Signal 0V
besitzt, kommen kleine Peaks auf 5V und während der 5V kleine Peaks auf
0V. Ich habe schon mit Kondensatoren versucht, das Signal etwas Träger
zu bekommen, allerdings bringt das nur geringen Erfolg.

So sieht das Signal ungefähr aus:

____|__----|--____|__----|--____|__
  0V     5V     0V     5V     0V

Gibt es Bauteile, die diese Störungen rausfiltern, bzw. OPV die Träger
sind, als der LM358, damit nicht kleinste Störungen den OPV
durchschalten?

Da ich die TTL-Spannung meist mit einem µC verwende, würde mir auch ein
Tipp genügen, wie ich diese kleinen Peaks irgendwie entprellen(?) kann.
Ich arbeite immer mit 50Hz.

Meine Idee, einen Timer loslaufen zu lassen, wenn eine "falling Edge"
einen Interrupt angesprungen hat, habe ich schnell wieder verworfen, da
ich teilweise nur noch auf die Peaks getriggert habe. :-/


Hat hier vielleicht jemand eine resistentere Schaltung auf Lager?

Wenn man bei Google "ZeroCrossing Detection" eingibt, dann bekommt
man zwar etliche Schaltpläne, aber keiner filtert diese Störungen
korrekt.


Besten Dank!
mfg, Carsten

von Wolfram (Gast)


Lesenswert?

Eine Möglichkeit wäre ein Tiefpass der die Spikes aus dem TTL Signal
filtert. Du solltest dir anschauen warum diese Spikes entstehen. Ein
schmitttrigger ist wahrscheinlich besser.

CU Wolfram

von Carsten (Gast)


Lesenswert?

Hi Wolfram...

Die Spikes entstehen hauptsächlich aufgrund von Lasteinschaltungen und
Phasenanschnitten (oft auch auf anderen Phasen, sodass die Störungen
zudem schön über die Zeitachse verteilt liegen und mehrere Spikes auf
das TTL-Signal draufspielen).

Einen Tiefpass habe ich ja schon versucht: ich habe einen 470 Ohm
Widerstand in der Zuleitung zum µC zusammen mit einem 0,1µF Elko gegen
Masse drangehängt, dadurch wurden die Störungen gedämpft, aber die
Spikes sind teilweise bis +5V im 0V-Bereich, und das kann der kleine
Elko nicht ausgleichen. Größere Kondensatoren verwischen die Flanken
des TTL-Signals zu stark.



Ach ja: Verschiebe ich denn mit dem Schmitt-Trigger das TTL-Signal
nicht horizontal auf der x-Achse? Die ZC-Eigenschaft des normalen
Komparators war z.T. sehr angenehm für einige Schaltungen?

Ich werde das heute Abend mal versuchen. -In des LM358 auf Masse, +In
an Schleifer z.B. eines 100k Potis, welches als Spannungsteiler
zwischen Ausgang des LM358 und Wechselspannung hängt. So richtig,
oder?


Mir ist da auch noch eine Idee gekommen:
Ich hatte aus dem Printtrafo nur eine Hälfte der Sinusspannung
verwendet. Wenn ich diese Spannung über Dioden auf die andere
(negierte) Hälfte addiere, so müssten doch die Störungen, die ich im 0V
Teil des TTL-Signals erhalten habe, verschwinden, oder? Ich werd mal ein
bisschen Basteln...

Danke schonmal soweit! :D
...Carsten

von Remo (Gast)


Lesenswert?

Normalerweise (z.B. beim Atmel AVR) brauchst du den OP garnicht.
Leg einfach die 230V über einen GROSSEN Widerstand (besser du schaltest
wg. der Spannung mehrere in Reihe)  an einen Pin (siehe dazu auch
Application Note AVR 182 von Atmel, www.atmel.com).
Die Pins sind über Dioden vor Überspannung geschütztz und außerdem
haben sie eine Schnitt-Trigger Funktion.
Zum Filtern könntest du die Methode verwenden, dass du pro Halbwelle
mehrmals den Pegel prüfst und die Flanke nur als gültig auswertest wenn
du immer den gleichen Logikpegel gemessen hast. So kannst du Spikes die
ja nur kurz sind von Halbwellen unterscheiden.

Viel Glück
Remo

von Carsten (Gast)


Lesenswert?

Hmm, ich werde immer kribbelig, wenn ich 230V an einen Chip anlege, an
dem z.B. auch Tasten, LEDs und vor allem PCs per RS232 hängen...

ich werde erst mal die Möglichkeit von Wolfram ausprobieren und dann
mal (falls dieses dann nicht klappen sollte) die Spannung direkt an den
Atmel hängen...


:D

von The Daz (Gast)


Lesenswert?

Carsten,
die Idee mit der zweiten Haelfte der Sinuskurve kannst du gleich wieder
vergessen. Beide Wicklungen schwingen ja in die gleiche Richtung.
Invertierst du eine und addierst sie zur anderen ist das Ergebnis
konstant 0. Die Differenzbildung funzt nur dann wenn zuerst das
Differenzsignal gebildet wird und erst danach der Fehler gleichmaessig
auf beide Signale induziert wird.

Dein 470/100nF Teifpass hat bei ca. 21 kHz ein Daempfung von 6dB. Damit
bekommst du deine Stoerung nicht weg. Was du brauchst ist ein wirklich
steiler Tiefpass mit einer Grenzfrequenz von 50Hz -> grosser Widerstand
+ grosser Kondensator. Dahinter dann der Schmitt-Trigger (sollte der uC
keinen solchen schon im Eingang haben). Auf jeden Fall bekommst du eine
Phasenverschiebung. Der Tiefpass bringt sein mit und ein Schmitt-Trigger
ebenfalls.

von Carsten (Gast)


Lesenswert?

Gibt es denn bei dieser Problematik nicht bereits ein funktionierendes
Schaltungchen? Das ist doch sicher kein so ausgefallenes Problem. Da
wird doch wohl eine praktikable Lösung irgendwo im Internet, oder in
irgendeiner Schublade liegen? g

von The Daz (Gast)


Lesenswert?

Ich kenne keinen, der ernsthaft versucht, aus dem Netzstrom irgendeine
Art von Referenz zu bauen. Nimm nen 1 Mhz Quarz und teile den runter,
bis du auf 50 Hz kommst.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Nicht direkt an den Controller, sondern ueber einen Widerstand. Der
Controller bekommt keine 230V.

von Carsten (Gast)


Lesenswert?

[Nicht direkt an den Controller, sondern ueber einen Widerstand. Der
Controller bekommt keine 230V.]

>DAS< ist mir klar, nur ist keine galvanische Trennung mehr vorhanden!

Ich benötige für meine Projekte halt eine Netzsynchronisation, wenn ich
in meine Anwendungen einen Phasenanschnitt einbauen möchte
(Lüfterdrehzahl von 230V Lüftern, Lampen, etc.)

Zudem funktioniert eine Messung der Netzfrequenz doch nicht ohne
Netzsync, oder g

von Andreas Häusler (Gast)


Lesenswert?

Hi Carsten

Versuchs doch mal mit einem switched capacitor filter.
Die Dinger sind extrem steil und einfach in der Handhabung.

Vielleicht kannst Du Dir ja damit ein Tiefpassfilter bauen, welches nur
das Nutzsignal durch lässt.

Du kriegst sie von Linear, Maxim und National.

Google Dich mal durch.

Gruss Andy

von A. Dittrich (Gast)


Lesenswert?

Sicher kann man an Deinem analogen Frontend noch vieles anders/besser
machen. Per Software ist folgendes Verfahren sehr robust, Stichwort PLL
- geht in etwa so (eine einfache Variante):
Du nimmst Dir einen Timer, dessen Frequenz Du zwischen zwei Frequenzen
im laufenden Betrieb umschalten kannst, z.B. f1=99.9 Hz, f2=100.1 Hz.
Dieser Timer löst alle 0.01 s einen Interrupt aus. In der Int-Routine
liest Du das Sinus-ähnliche Signal ein, x=0 : "kleiner als
Schwellwert", x=1 "größer als Schwellwert". Alternierend reagierst
Du jetzt. Bei den "geraden" Interrupts schaltest Du bei x=0 auf die
hohe Frequenz, bei x=1 auf die kleinere. Bei den "ungeraden"
Interrupts gerade umgekehrt. Nach nur wenigen Int's bist Du
automatisch perfekt mit dem Signal synchronisiert.

Gruß, Andreas

von Carsten (Gast)


Lesenswert?

Dieses PLL-Verfahren könnte ich ja theoretisch mit der Idee von Remo
umsetzen, oder? Ich gebe dem Atmel über entsprechende Widerstände die
230V Sinuskurve und lese dann mit den µC eigenen Funktionen, ob die
internen Routinen synchron laufen.


Hmm, dass bedeutet, ich muss mich nochmal extrem mit Assembler
auseinandersetzen...


danke für die weitere Option.
Werde mal rumbasteln.

cu, Carsten :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.