www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Peaks aus Rechtecksignal entfernen


Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Remo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Häusler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. Dittrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.