AVR 230V Detektion

T

Torsten Schorr

Guest
Hallo!

Ich würde gerne mit einem AVR feststellen, ob an eine 230V Leitung
eingeschaltet ist oder nicht, bzw. es soll möglich sein ein mehrfaches
Ein_/Ausschalten zu zählen.
Dazu sollte die externe Beschaltung möglichst spartanisch sein, d.h. die
Beschaltung ist ähnlich der Beschaltung zur Zero-Cross-Detection von
Atmel: Ein Leiter ist mit Ground verbunden, der andere über 1MR mit
einem Eingangspin mit 100kR Pull-Down (damit wäre die Spannung am Pin
bei der positiven Halbwelle etwa 9ms > 2.5V, ich hab's auch schon mit
kleineren (15kR) Widerständen probiert: gleiches Verhalten).

Zum Programm: Der Controller wartet auf ein Einschalten und zählt dann
die Ein-/Ausschaltvorgänge bis eine 800ms Schaltpause kommt. "Schalter
eingeschaltet" erkennt er, wenn der Pin >5ms lang auf 1 ist, Schalter
aus, wenn der Pin >15ms auf 0 steht (ausprobiert für "so schnell
Abtasten wie möglich" und "alle ms Abtasten"):
Meistens funktioniert das Ganze und er zählt korrekt, häufig zählt er
jedoch zu wenig, d.h. erkennt ein Auschalten bzw. Einschalten nicht. Die
Endposition des Schalters erkennt er jedoch richtig.

Mangels Trenntrafo usw. habe ich noch nicht alle Möglichkeiten überprüft
bzw. ausprobiert und kann deswegen zunächst mal nur die Frage stellen,
ob das prinzipiell so funktioniert, bzw. mit welchen "Dreckeffekten" ich
rechnen muss. Bzw. hat sowas schonmal einer gemacht und es funktioniert
tadellos?

Danke schonmal und viele Grüße,

Torsten
 
Meistens funktioniert das Ganze und er zählt korrekt, häufig zählt er
jedoch zu wenig, d.h. erkennt ein Auschalten bzw. Einschalten nicht.
Entprellzeit verlägern. 40msec wird schon für schlechte Knackfrösche
spezifiziert.

Dazu sollte die externe Beschaltung möglichst spartanisch sein,
Wenn es kein Seriengerät ist sollte man sich einen Optokoppler
spendieren und würde damit übliche EMV-Probleme umgehen.
Ein 1M Ohm Widerstand in Bauform 0207 hält 220V gerade noch aus,
aber bei Spikes mit höherer Spannung erfolgt schnell Überschlag.

MfG JRD
 
Torsten Schorr <schorr@eit.uni-kl.de> wrote:
Hallo!

Dazu sollte die externe Beschaltung möglichst spartanisch sein, d.h. die
Beschaltung ist ähnlich der Beschaltung zur Zero-Cross-Detection von
Atmel: Ein Leiter ist mit Ground verbunden, der andere über 1MR mit
einem Eingangspin mit 100kR Pull-Down (damit wäre die Spannung am Pin
bei der positiven Halbwelle etwa 9ms > 2.5V, ich hab's auch schon mit
kleineren (15kR) Widerständen probiert: gleiches Verhalten).
Wie versorgst du denn den Atmel mit Betriebsstrom? Hat er eine
kleine Batterie oder machst du das Netzgespeist?
Wie filterst du evt. Netzstörungen aus? Wenn du einen Spannungsteiler
von 1M zu 100k hast ist das eine Spannungsreduktion um den
Faktor 11. D.h. an deinem Pin liegen bis zu 30V an. Willst du
das? Der Strom wird natürlich über die internen Schutzdioden abfliessen
und die gehe wegen des hohen Innenwiderstandes auch nicht kaputt. Aber
dafür sind die Schutzdioden nicht gemacht.

Scheint von der Idee nicht verkehrt zu sein. Aber warum richtest
du die Netzspannung nicht gleich und schaust dann?
Ich würde das so machen: Netzspannung über dicken Vorwiderstand
oder Kondensator Strombegrenzen, gleichrichten und über einen
Optokopler an einen Pin des uC anschliessen.
Das ganze so dimensioniert das das tau der Anordnung kleiner als
meine Schaltfrequenz ist. (Aber höher als die 50Hz)

Meistens funktioniert das Ganze und er zählt korrekt, häufig zählt er
jedoch zu wenig, d.h. erkennt ein Auschalten bzw. Einschalten nicht. Die
Endposition des Schalters erkennt er jedoch richtig.
Evt. startet der uC wg. Störungen etc. neu? Oder der Taktgenerator
faellt aus?

Tschüss
Martin L.

PS: Welche Schutzklasse soll das Gerät denn werden? Du kennst die
allg. Sicherheitsvorkehrungen?
 
Rafael Deliano schrieb:
Meistens funktioniert das Ganze und er zählt korrekt, häufig zählt er
jedoch zu wenig, d.h. erkennt ein Auschalten bzw. Einschalten nicht.

Entprellzeit verlägern. 40msec wird schon für schlechte Knackfrösche
spezifiziert.
Ich hätte jetzt gedacht, dass er durch Prellen zu viel zählen würde und
das als Ursache ausgeschlossen. Denn die Umschaltzeit von einem
"menschlichen Bediener" liegt doch mit hoher Wahrscheinlichkeit bei mehr
als 40ms?

Dazu sollte die externe Beschaltung möglichst spartanisch sein,

Wenn es kein Seriengerät ist sollte man sich einen Optokoppler
spendieren und würde damit übliche EMV-Probleme umgehen.
Eigentlich gings nicht um die Kosten, sondern um die Größe des
resultierenden Geräts, damit's in eine Wanddose passt. Aber der
Optokoppler würde mir wohl einige Probleme lösen und wäre eine
Überlegung (vlt. als SMD auf die Lötseite).

Ein 1M Ohm Widerstand in Bauform 0207 hält 220V gerade noch aus,
aber bei Spikes mit höherer Spannung erfolgt schnell Überschlag.
Ich hatte mindestens 2 Widerstände in Serie geplant wegen der
Spannungsfestigkeit. Für den Optokoppler brauche ich allerdings auch
Vorwiderstände. Ich hab mich jetzt noch nicht schlau gemacht, aber ich
hoffe, dass ich den Optokoppler einfach mit Widerstand ohne dicken
Kondensator dranhängen kann, ohne zuviel Verlustleistung?


Danke und Gruß,
Torsten
 
Martin Laabs schrieb:
Wie versorgst du denn den Atmel mit Betriebsstrom? Hat er eine
kleine Batterie oder machst du das Netzgespeist?
Im Moment noch Steckernetzteil -> 220uF -> 7805 -> 100nF.
Soll mal über Kondensatornetzteil laufen (230V -> 330nF -> 100R ->
1N4007 -> 5.1V Z-Diode usw.).

Wie filterst du evt. Netzstörungen aus? Wenn du einen Spannungsteiler
von 1M zu 100k hast ist das eine Spannungsreduktion um den
Faktor 11. D.h. an deinem Pin liegen bis zu 30V an.
Wenn ich einen Spannungsteiler für <5V nehme, Bringt die positive
Halbwelle den Pin nur für ca. 6ms über 2.5V. Das wollte ich verlängern
mit dem größeren Pull-Down.

Willst du
das? Der Strom wird natürlich über die internen Schutzdioden abfliessen
und die gehe wegen des hohen Innenwiderstandes auch nicht kaputt. Aber
dafür sind die Schutzdioden nicht gemacht.
Laut Atmel schon ;-):
http://www.atmel.com/dyn/resources/prod_documents/doc2508.pdf

Ich würde das so machen: Netzspannung über dicken Vorwiderstand
oder Kondensator Strombegrenzen, gleichrichten und über einen
Optokopler an einen Pin des uC anschliessen.
Mir wird wohl nix anderes übrig bleiben, als es so zu machen, aber
stattdessen einfach zwei/drei Widerstände zu nehmen klingt sehr verlockend.

Evt. startet der uC wg. Störungen etc. neu? Oder der Taktgenerator
faellt aus?
Das werd ich mal überprüfen!


PS: Welche Schutzklasse soll das Gerät denn werden? Du kennst die
allg. Sicherheitsvorkehrungen?
Wird alles miteinander ordentlich verpackt...

Danke und Gruß,
Torsten
 
damit's in eine Wanddose passt.
Soll mal über Kondensatornetzteil laufen
Dann macht Optokoppler für Eingang nur noch wenig
Sinn. Konventionelle Schaltung mit NPN-Transistor:

5V
|
R3
|
<---C
B--+-R2--
E K
| A
| |
GND GND

Transistor hat den Vorteil, daß er durch Verstärkung
für steilere Flanken sorgt.

Laut Atmel schon ;-):
http://www.atmel.com/dyn/resources/prod_documents/doc2508.pdf
Zweifelhafte Idee. Es scheint ein IRQ-Pin zu sein, also wohl nur
Input und nicht bidirektional und damit intern bessere
Schutzschaltungen mit Serienwiderstand möglich.

Welche Last schaltet der Schalter ?
Induktive Last mit Lichtbogen in unmittelbarer Nähe zum
Controller wird problematisch.

MfG JRD
 
Rafael Deliano schrieb:
Dann macht Optokoppler für Eingang nur noch wenig
Sinn. Konventionelle Schaltung mit NPN-Transistor:

5V
|
R3
|
---C
B--+-R2--
E K
| A
| |
GND GND

Transistor hat den Vorteil, daß er durch Verstärkung
für steilere Flanken sorgt.
OK, bau ich mal mit ein. Die meisten Optokoppler würden mehr Strom
brauchen als der ľC und bräuchten noch einen X2 Kondensator.

Zweifelhafte Idee. Es scheint ein IRQ-Pin zu sein, also wohl nur
Input und nicht bidirektional und damit intern bessere
Schutzschaltungen mit Serienwiderstand möglich.
Keine Ahnung. Irgendwo stand, dass es mit allen AVR funktionieren soll.
Meiner (ATtiny 13) hat keinen dedizierten IRQ Pin mehr. Es können alle
Pins für externen Interrupt verwendet werden. Aber mit Z-Diode sollte
das alles doch kein Problem mehr darstellen?

Welche Last schaltet der Schalter ?
Induktive Last mit Lichtbogen in unmittelbarer Nähe zum
Controller wird problematisch.
Ja, genau, das ist vlt. das nächste Problem: Er soll eine
Leuchtstofflampe mit KVG schalten...

Danke und Gruß,
Torsten
 
5V
|
R3
|
---C
B--+--+--R2--
E K |
| A R1
| | |
GND GND GND
Soweit das Signal wegen des Schalters offen sein kann bräuchte
man noch R1=1M damit dann der Transistor sicher abschaltet.

Meiner (ATtiny 13) hat keinen dedizierten IRQ Pin mehr.
Die interne Schutzschaltung für Eingänge seit anno CD40xx
ist Serienwiderstand, Dioden.
Offensichtlich kann es für einen bidirektionalen IO-Pin keinen
Serienwiderstand geben nur Dioden.

Aber mit Z-Diode sollte das alles doch kein Problem mehr darstellen?
Man will den Strom eines Spikes nicht quer durch den Controller
leiten weil das normalerweise zu Absturz führt.
Bei externer Schutzschaltungen führt man die Masse
getrennt auf den Sternpunkt am Elko der Stromversorgung.

Er soll eine Leuchtstofflampe mit KVG schalten...
Es würde nicht schaden schonmal Kontaktschutz
über den Schalter vorzusehen unabhängig ob man ihn dann
bestückt. Wirksam, aber voluminös wäre RC-Glied. Nicht so üppig
aber manchmal ausreichend ist ein Varistor.

MfG JRD
 
Rafael Deliano schrieb:
Soweit das Signal wegen des Schalters offen sein kann bräuchte
man noch R1=1M damit dann der Transistor sicher abschaltet.
Stimmt!

Offensichtlich kann es für einen bidirektionalen IO-Pin keinen
Serienwiderstand geben nur Dioden.
Ich dachte, dass für IRQ dann vlt. nur "dickere" Dioden drin sind oder so...
Bei externer Schutzschaltungen führt man die Masse
getrennt auf den Sternpunkt am Elko der Stromversorgung.
OK!
Er soll eine Leuchtstofflampe mit KVG schalten...

Es würde nicht schaden schonmal Kontaktschutz
über den Schalter vorzusehen unabhängig ob man ihn dann
bestückt. Wirksam, aber voluminös wäre RC-Glied. Nicht so üppig
aber manchmal ausreichend ist ein Varistor.
Der Schalter ist mir eigentlich egal. Da komme ich auch nicht dran,
könnte also nix parallel zum Schalter anbringen. Wäre für den Schutz der
Schaltung eine Suppressor-Diode parallel zur Diode noch sinnvoll, oder
unnötig?

Danke,
Torsten
 
Hallo Torsten,

Es würde nicht schaden schonmal Kontaktschutz
über den Schalter vorzusehen unabhängig ob man ihn dann
bestückt. Wirksam, aber voluminös wäre RC-Glied. Nicht so üppig aber
manchmal ausreichend ist ein Varistor.

Der Schalter ist mir eigentlich egal. Da komme ich auch nicht dran,
könnte also nix parallel zum Schalter anbringen. Wäre für den Schutz der
Schaltung eine Suppressor-Diode parallel zur Diode noch sinnvoll, oder
unnötig?
Bitte dabei beachten, dass gewoehnliche Metalloxyd Varistoren (MOV) bei
jedem "Schuss" ein wenig altern. Sie haben x Joule auf dem Konto und
wenn die leer sind, ist es aus.

Gruesse, Joerg

http://www.analogconsultants.com
 
Hallo alle zusammen!

Martin Laabs schrieb:
Evt. startet der uC wg. Störungen etc. neu? Oder der Taktgenerator
faellt aus?
Ich hab' nun festgestellt, dass der ľC beim Ein- bzw. Ausschalten des
Schalters einen Reset durchführt, da er die Störungen beim Schalten wohl
nicht verkraftet (auch mit der vorgeschlagenen Transistorschaltung).
Wenn kein Reset ausgeführt wird, zählt er korrekt.

Gibt es noch eine Möglichkeit, die Störungen abzuhalten/-leiten. Würden
Suppressor-Dioden noch was bringen? Oder bleibt dann nur noch der
Optokoppler? Was wäre denn da am einfachsten, mit möglichst
wenig/kleiner Beschaltung an der 230V Seite?

Versuchsweise benutze ich im Moment den Schalter einer Steckerleiste mit
Glimmlampe, der beim Schalten ohne Last (neben der Glimmlampe) schon
umgebene Lautsprecher zum Knacken bringt, also ordentlich Störungen
produziert.

Danke und viele Grüße,
Torsten
 
dass gewoehnliche Metalloxyd Varistoren (MOV) bei
jedem "Schuss" ein wenig altern.
Wenn man bei ihrer Nennleistung testet ja. Bei
Spikes mit geringer Energie ist der Effekt aber
nicht so ausgeprägt als daß er die Lebensdauer
einschränken würde. Varistoren sind keine
Qualitätslösung, aber ökonomischer als grosse
Folienkondesatoren.

MfG JRD
 
Ich hab' nun festgestellt, dass der ľC beim Ein- bzw. Ausschalten des
Schalters einen Reset durchführt,
Soll der das Schalten an Display anzeigen oder
hängen da andere Kabel raus ?

+------+--Schalter------+--------------+
| | | |
Last +------------ Schaltung 220V
| | |
+-----------------------+--------------+

Oder bleibt dann nur noch der Optokoppler?
Prüfen ( z.B. mit zum Test programmierter
LED-Blinkschaltung )
ob Controller schon abstürzt wenn der Eingang
überhaupt nicht angeschlossen ist.

MfG JRD
 
Rafael Deliano schrieb:
Ich hab' nun festgestellt, dass der ľC beim Ein- bzw. Ausschalten des
Schalters einen Reset durchführt,

Soll der das Schalten an Display anzeigen oder
hängen da andere Kabel raus ?

+------+--Schalter------+--------------+
| | | |
Last +------------ Schaltung 220V
| | |
+-----------------------+--------------+
So sieht's aus, nur noch keine Spannungsversorgung über Kondensator,
sondern über Netzteil. Momentan hängt an einem anderen Pin nur eine LED
zum Debuggen. Später soll ein Triac dran, um was zu schalten. Aber das
ganze ist noch auf einem Steckbrett drauf, ich bastele mal alles auf
eine Lochrasterplatine, damit nicht mehr so viele "Antennen" rumhängen.

Oder bleibt dann nur noch der Optokoppler?

Prüfen ( z.B. mit zum Test programmierter
LED-Blinkschaltung )
ob Controller schon abstürzt wenn der Eingang
überhaupt nicht angeschlossen ist.
Bisher hab ich nur geschaltet, ohne dass eine geschaltete Leitung in der
Nähe des ľC war, d.h. übers Netzteil kommt nix. Mit Schutzschaltung und
nicht angeschlossenem Pin probier' ich noch aus.

Ich hatte noch eine Idee gefunden mit kleiner geschalteter Spule und
Hall-Sensor. Hat da einer Erfahrung mit?

Gruß,
Torsten
 
Später soll ein Triac dran, um was zu schalten.
Der kann im Nulldurchgang schalten und damit
reduziert sich EMV entsprechend.
Der mechanische Schalter bringt Controller
ja auch nicht jedesmal zum Absturz sondern
abhängig vom Schaltzeitpunkt.

kleiner geschalteter Spule und Hall-Sensor.
Ein Stabkern würde am Kopf Feld erzeugen
und könnte auch zur Funkentstörung dienen.
Jedoch: wenn man alles sehr eng layouten will
will man eigentlich kein Streuefeld das den
Controller einnebelt erzeugen. Ringkern wäre
da besser und der erzeugt kein Feld.

MfG JRD
 
Hi Torsten,

jup, das funktioniert so (auch für Serienprodukte) Ich hab das mal als
Nullspannungsschalter für eine Phasenschnittsteuerung aufgebaut, hat soweit
auch funktioniert, nur der Prozessor hat nicht mehr viel Resourcen frei um
andere Dinge (wie Anschnittwinkel berechnen o.ä.) frei.

Die Eingangsbeschaltung sollte aus einem hochohmigen R und zwei externen
zusätzlichen SK-Dioden bestehen, um Transienten abzuleiten.

Gruß
Timo
 

Welcome to EDABoard.com

Sponsor

Back
Top