Forum: Mikrocontroller und Digitale Elektronik AVR ATtiny 44A-PU: Ext. Interrupt löst aus sobald Lampe an Relais angeschlossen wird


von Patrick S. (psar04)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mit einem ATtiny 44A-PU eine kleine Steuerung gebastelt (siehe 
Schaltplan im Anhang). Sobald der externe Interrupt über einen Taster 
(S1) ausgelöst wird, aktiviert der Mikrocontroller das Relais (K1) für 
ein paar Sekunden (über Poti einstellbar, aber nicht so wichtig...). 
Sobald die paar Sekunden um sind geht der Controller in einen 
Warte-Zustand für ein paar Minuten (auch per Poti regelbar). Nach den 
paar Minuten geht dieser wieder in den "Bereitschaftsmodus" und wartet 
bis wieder der Taster S1 gedrückt wird. Über das Relais wird ein kleiner 
LED-Strahler (ca. 20 5mm LEDs, 230V) eingeschaltet.
Eigentlich funktioniert soweit alles, wäre da nicht ein Problem...: 
Sobald die Lampe (nur) am Relais angeschlossen wird, wird offenbar der 
externe Interrupt ausgelöst und damit das Relais aktiviert usw. Zudem 
wurde der Interrupt schon einmal ausgelöst, als eine Leuchtstoffröhre, 
die am gleichen Stromkreis hängt wie das Schaltnetzteil des 
Mikrocontrollers, eingeschaltet wurde. Das passiert aber nicht immer und 
das System lief auch schon etliche Stunden ohne diese Probleme.
Irgendwo gibt es also anscheinend Störfrequenzen oder ähnliches, die den 
Interrupt auslösen. Die internen Pullup-Widerstände sind aktiviert. Was 
muss ich ändern, damit die Schaltung zu 100% (oder sagen wir zu 99,9%) 
zuverlässig funktioniert?

Viele Grüße,
Patrick

: Bearbeitet durch User
von Schaltplanlesa (Gast)


Lesenswert?

Faszinierend.

Du hast einen Transformator der Gleichstrom hergibt.

Solange du keinen wirklich authentischen Schaltplan
lieferst wird das hier reines Rätselraten bleiben.

Ausserdem wird es auch erforderlich sein deinen Aufbau
anzusehen / zu beurteilen.

von Wolfgang (Gast)


Lesenswert?

Patrick S. schrieb:
> Was muss ich ändern, damit die Schaltung zu 100% (oder sagen wir zu 99,9%)
> zuverlässig funktioniert?

Den Aufbau verbessern und/oder die Software robuster gegen Störungen 
machen. Du entscheidest, was beim Auftreten eine Interrupts passiert. 
Du könntest z.B. eine Mindestdauer für den Tastendruck festlegen.

Warum wertest du den Taster überhaupt über einen Interrupt aus? Alle 10 
Millisekunden mal nach der Taste zu gucken, sollte doch ausreichen, um 
den Tastenzustand zu erkennen. Dann solltest du ein Störfilter davor 
setzen oder zumindest den Taster nebst Leitung gegen Störeinstrahlungen 
schützen.

von Patrick S. (psar04)


Lesenswert?

Schaltplanlesa schrieb:
> Faszinierend.
>
> Du hast einen Transformator der Gleichstrom hergibt.
>
> Solange du keinen wirklich authentischen Schaltplan
> lieferst wird das hier reines Rätselraten bleiben.

Danke erstmal für die Antwort. Stimmt, das hätte ich noch dazu schreiben 
können, habe kein Symbol für ein Schaltnetzteil in Eagle gefunden. Das 
war mein erstes Mal, dass ich mit Eagle gezeichnet habe, also seid da 
etwas nachsichtig. Der Rest sollte aber eigentlich so passen?! Was 
meinst du mit authentisch?

von Patrick S. (psar04)


Lesenswert?

Wolfgang schrieb:
> Den Aufbau verbessern und/oder die Software robuster gegen Störungen
> machen. Du entscheidest, was beim Auftreten eine Interrupts passiert.
> Du könntest z.B. eine Mindestdauer für den Tastendruck festlegen.

Ok, das könnte ich eventuell noch etwas verbessern. Ich hatte jetzt 
gedacht, dass eventuell noch jemand um die Ecke kommt und mir sagt "mach 
mal an Stelle xy noch einen Kondensator" oder so ähnlich dran. Aber wenn 
das nicht der Fall ist, dann werde ich mir softwareseitig noch was 
überlegen.

> Warum wertest du den Taster überhaupt über einen Interrupt aus? Alle 10
> Millisekunden mal nach der Taste zu gucken, sollte doch ausreichen, um
> den Tastenzustand zu erkennen. Dann solltest du ein Störfilter davor
> setzen oder zumindest den Taster nebst Leitung gegen Störeinstrahlungen
> schützen.

Die Software ist als endlicher Automat umgesetzt, da fand ich es mit dem 
Interrupt am schönsten.
Was meinst du, wenn du von Störfilter sprichst?

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo

vermutlich bildet sich über das Schaltnetzteil und das Relais eine 
kapazitive Kopplung, die die Störung in die Schaltung bringt.

Eventuell genügt es, den Taster gegen einen Widerstand von 100 Ohm 
arbeiten zu lassen.

MfG

von posti (Gast)


Lesenswert?

Hi

Die Leuchtstoff-Röhre deutet drauf hin, daß Du Dir Störungen einfängst, 
Die dem µC reichen, um drauf zu reagieren.

Was meinst Du mit (nur) ?
Ist die Lampe dann nur am Relais angeschlossen, oder ist Diese auch 
schon 'eingesteckt' - also das Relais würde die Lampe einschalten, wenn 
Es denn schalten würde?

MfG

von Schaltplanlesa (Gast)


Lesenswert?

Patrick S. schrieb:
> Was meinst du mit authentisch?

Dass auch die Stromversorgung das darstellt was in Realität
vorhanden ist.

Die Potis haben keine Werte. Sie lassen durch Hochohmigkeit
(wenn sie es denn sind) die Eingänge des AVR sehr empfindlich
auf Einstreuungen sein. Da gehören Kondensatoren hin.

Am Reset Pin ist kein Kondensator, dadurch kann der Controller
durch Störimpulse (leicher) zurückgesetzt werden.

von Patrick S. (psar04)


Lesenswert?

Christian S. schrieb:
> vermutlich bildet sich über das Schaltnetzteil und das Relais eine
> kapazitive Kopplung, die die Störung in die Schaltung bringt.
Das könnte sein, die beiden Komponenten sind relativ nahe beieinander.

> Eventuell genügt es, den Taster gegen einen Widerstand von 100 Ohm
> arbeiten zu lassen.
Werde ich probieren, danke!

von Peter (Gast)


Lesenswert?

Ich würde externe Pullups nehmen, die Internen sind relativ hochohmig.
Leider kann ich nicht die Spannungsversorung von deinem µC bewerten, 
evtl. hier noch einen großen C rein setzen.

von holger (Gast)


Lesenswert?

>Was muss ich ändern

Externer Pullup kleiner als 4k7 könnte schon Besserung bringen.

von R. F. (rfr)


Lesenswert?

Wenn du in allen Signalpfaden auf alle Möglichkeiten der 
Störunterdrückung verzichtest, musst du dich über Störungen nicht 
wundern.

Setze in allen Signalpfaden Tiefpassfilter ein, möglichst in CPU-Nähe. 
Dimensioniere diese auf ca 10 kHz.

Sorge per Software für eine mehrfache Abfrage. Ein Tastendruck kann bis 
zu 40 ms dauern, du kannst also öfter abfragen. Plausibilisiere die 
gelesenen Ergebnisse.

Berichte.

Gruss

Robert

von Patrick S. (psar04)


Lesenswert?

posti schrieb:
> Die Leuchtstoff-Röhre deutet drauf hin, daß Du Dir Störungen einfängst,
> Die dem µC reichen, um drauf zu reagieren.
Also die Lampe ist ca. 3,5m vom Mikrocontroller entfernt, die wurde nur 
per Schalter eingeschaltet und in dem Augenblick hat der Mikrocontroller 
auch das Relais geschaltet. Kann auch Zufall gewesen sein, dass das 
gerade in dem Augenblick war. Ich weiß nicht, ob das vorher klar 
geworden ist.

> Was meinst Du mit (nur) ?
Der Mikrocontroller wird mit Strom versorgt und ist im 
"Bereitschaftszustand" (wartet auf Tastendruck/ext. Interrupt). Wird 
dann die Lampe (nur) an den Kontakten des Arbeitsstromkreises vom Relais 
angeschlossen wird direkt das Relais geschaltet. Status LED geht an 
usw., so wie es vorgesehen ist. Das nur sollte aussagen, dass nichts 
weiter als das gemacht wird, also der Switch nicht gedrückt wurde oder 
ähnliches.

> Ist die Lampe dann nur am Relais angeschlossen, oder ist Diese auch
> schon 'eingesteckt' - also das Relais würde die Lampe einschalten, wenn
> Es denn schalten würde?
Das Relais würde die Lampe direkt einschalten und das passiert auch. 
Genau genommen hat die Lampe einen ganz normalen Eurostecker und der 
wird in eine Steckdose gesteckt, die über das Relais geschaltet wird. 
Die Steckdose hat allerdings ein Freund verdrahtet, er ist Elektriker, 
ich habe nur das Wissen um den Mikrocontroller zu programmieren. :)

von Wolfgang (Gast)


Lesenswert?

Patrick S. schrieb:
> Was meinst du, wenn du von Störfilter sprichst?

Soetwas wie im Artikel Entprellung: Einfacher Taster
Das hilft auch gegen Störungen, die über die Leitung kommen.

von Patrick S. (psar04)


Lesenswert?

Schaltplanlesa schrieb:
> Patrick S. schrieb:
>> Was meinst du mit authentisch?
>
> Dass auch die Stromversorgung das darstellt was in Realität
> vorhanden ist.
Ok, ich gebe zu, das hätte ich besser machen oder zumindest direkt 
darauf hinweisen können. Kannst du mir denn sagen, in welcher Kategorie 
ich in Eagle ein ein AC-DC Netzteil finde? Dann ändere ich das sofort.

> Die Potis haben keine Werte. Sie lassen durch Hochohmigkeit
> (wenn sie es denn sind) die Eingänge des AVR sehr empfindlich
> auf Einstreuungen sein. Da gehören Kondensatoren hin.
Stimmt, ändere ich auch eben... Das sind übrigens 10k Potis. Demnach 
also nicht hochohmig. Zumindest gemäß der Definition, die ich im Kopf 
habe.
Sind denn dann alle Eingänge des AVR empflindlich gegenüber 
Einstreuungen, wenn auch nur einer nicht genügend geschützt ist? Die 
Potis werden übrigens auch nur einmal nach dem Start des 
Mikrocontrollers über den ADC abgefragt.
Wo sollen die Kondensatoren genau hin und vor allem welche?

> Am Reset Pin ist kein Kondensator, dadurch kann der Controller
> durch Störimpulse (leicher) zurückgesetzt werden.
Mhh, dazu habe ich schon einiges gelsen, die einen empfehlen es, die 
anderen sagen das ist bei den modernen Atmel-Controllern nicht mehr 
erforderlich. Bis jetzt gab es zumindest noch keine Probleme, dass der 
Mikrocontroller ungewollt zurückgesetzt wurde.

von Patrick S. (psar04)


Lesenswert?

Peter schrieb:
> Ich würde externe Pullups nehmen, die Internen sind relativ
> hochohmig.
Ok, darüber habe ich auch schon nachgedacht. Ist ein Versuch wert. Die 
internen liegen gemäß Datenblatt bei 20-50kOhm. Ich würde dann mal 10k 
nehmen oder sogar nur 4700R? Kannst du was empfehlen?

> Leider kann ich nicht die Spannungsversorung von deinem µC bewerten,
> evtl. hier noch einen großen C rein setzen.
Liege ich richtig mit der Annahme, dass du den C zwischen die Ausgänge 
des Schaltnetzteils packen würdest? Größenordnung ca. 1000µF? Sorry, 
dass ich nachfrage, so oft habe ich mich damit noch nicht beschäftigt.

von Patrick S. (psar04)


Lesenswert?

R. F. schrieb:
> Wenn du in allen Signalpfaden auf alle Möglichkeiten der
> Störunterdrückung verzichtest, musst du dich über Störungen nicht
> wundern.
>
> Setze in allen Signalpfaden Tiefpassfilter ein, möglichst in CPU-Nähe.
> Dimensioniere diese auf ca 10 kHz.
Dazu werde ich mich etwas schlaulesen müssen. Notiere ich mir mal. 
Reicht es nicht eigentlich aus einen Filter auf den Eingängen 
einzubauen? Am Ausgang wo ich eine LED ansteuere ja wohl nicht?!

> Sorge per Software für eine mehrfache Abfrage. Ein Tastendruck kann bis
> zu 40 ms dauern, du kannst also öfter abfragen. Plausibilisiere die
> gelesenen Ergebnisse.
Das hatten wir ja weiter oben schon, die Software werde ich noch etwas 
überarbeiten. Bis zu 40ms oder mindestens? Die ideale Dauer/Anzahl 
Abfragen herauszufinden ist Trial and Error?

von Patrick S. (psar04)


Lesenswert?

Wolfgang schrieb:
> Patrick S. schrieb:
>> Was meinst du, wenn du von Störfilter sprichst?
>
> Soetwas wie im Artikel Entprellung: Einfacher Taster
> Das hilft auch gegen Störungen, die über die Leitung kommen.

Danke, schaue ich mir auch noch einmal genauer an. Bisher habe ich nur 
softwareseitig entprellt. Bzw. genau genommen wird sobald der erste 
externe Interrupt ausgelöst wurde lediglich der externe Interrupt 
ausgeschaltet. Und erst wenn der Controller wieder in den 
Bereitschaftsmodus wechselt (also nach einigen Minuten) wieder 
aktiviert.

von Patrick S. (psar04)


Lesenswert?

Christian S. schrieb:
> Eventuell genügt es, den Taster gegen einen Widerstand von 100 Ohm
> arbeiten zu lassen.

Nochmal eine Frage dazu: Wie war das genau gemeint? Also was soll wie 
verschaltet werden?

von Wolfgang (Gast)


Lesenswert?

Patrick S. schrieb:
> Bisher habe ich nur softwareseitig entprellt. Bzw. genau genommen
> wird sobald der erste externe Interrupt ausgelöst wurde lediglich
> der externe Interrupt ausgeschaltet.

Damit würde jeder ausreichend große Störpuls auf der Interruptleitung, 
egal wie lang er ist, garantiert einen Schaltvorgang auslösen.

Ist es das, was du willst?

von Patrick S. (psar04)


Lesenswert?

Wolfgang schrieb:
> Patrick S. schrieb:
>> Bisher habe ich nur softwareseitig entprellt. Bzw. genau genommen
>> wird sobald der erste externe Interrupt ausgelöst wurde lediglich
>> der externe Interrupt ausgeschaltet.
>
> Damit würde jeder ausreichend große Störpuls auf der Interruptleitung,
> egal wie lang er ist, garantiert einen Schaltvorgang auslösen.
>
> Ist es das, was du willst?

Nein, natürlich nicht. Als ich die Software entwickelt habe, war ich mir 
der Thematik "Entrprellung" bewusst, dass Störsignale mir so reinhauen 
können, aber nicht. Ich stelle mir gerade allerdings die Frage, wie ich 
meine Schaltung, die ich bisher habe, am besten verbessere. Also 
hardwareseitig, softwareseitig oder eine Kombination aus beidem?
Auch wenn ich bislang eher was mit der Programmierung der 
Mikrocontroller zu tun hatte, interessiert mich auch das Thema Hardware 
und E-Technik sehr. Falls jemand also einen Tipp, wie man sich da am 
besten mehr Wissen aneignet, dann nehme ich die auch gerne an, wenn es 
was kommerzielles ist, darf das natürlich auch ein bisschen was kosten. 
Ich weiß ja, dass ich da noch einiges dazulernen kann. //Offtopic aus ;)

von Peter (Gast)


Lesenswert?

Patrick S. schrieb:
> Falls jemand also einen Tipp, wie man sich da am
> besten mehr Wissen aneignet, dann nehme ich die auch gerne an

Kaufen würde ich es mir nicht, aber mal ausleihen, kann ich empfehlen.

https://www.amazon.de/EMV-St%C3%B6rungssicherer-Aufbau-elektronischer-Schaltungen/dp/3834808938

Nochmal zum Kondensator ich hätte so einen in der mit 47µF genommen, je 
nach Qualität deiner Versorgung.

Wie andere bereitserwähnten:
-Resetpin 100nF fehlt
-externe Pull-Ups (4k7 -10k <-musst ausprobieren)

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

also der Kondensator von Reset zu GND 100nf Keramisch sollte dazu, dann 
noch 100nF parallel zur Betriebsspannung und z.B. etwa 100 Ohm vom 
Interrupteingang zu +Ub würde ich vorschlagen. Damit ist der Eingang 
niederohmig abgeschlossen und nicht mehr so empfindlich. Auch eine 
Beschaltung als RC-Tiefpaß könnte hinreichend sein.

CMOS-Eingänge wie am AVR sind auf jeden Fall empfindlich für Störungen 
aus der näheren Umgebung. TTL-Eingänge kennst Du?

Allerdings ist ein billiges Steckernetzteil durchaus in der Lage, 
allerhand Störungen vom Netz in die Schaltung zu leiten. Da verbindet 
ein Kondensator
Primär- und Sekundärseite. Mit Batterien wäre diese Fehlerquelle 
ausgeschlossen.

Die nette Leuchtstofflampe bildet mit ihrer Induktivität, dem Starter 
und ihrer räumlichen Ausdehnung eine gut getarnte Sendeanlage für 
Störungen. Vielen Leuten ist das gar nicht bewußt. Wer so ein 
altmodisches Gerät, wie ein Radio mit Mittelwelle oder Langewelle bereit 
hält, kann sich davon leicht überzeugen.


Früher mußte man sich das in Büchern oder Zeitschriften zusammen suchen:
Störsichere Gate-Eingangsschaltung eines CMOS-IC 
http://www.elektronik-kompendium.de/public/schaerer/pullr.htm



Ursprünglich habe ich mal mit sowas hier angefangen:
http://s-huehn.de/elektronik/wecker/wecker.htm


Mit freundlichem Gruß

von Einer K. (Gast)


Lesenswert?

Patrick S. schrieb:
> softwareseitig oder eine Kombination aus beidem?

Software seitig..., da sage ich mal was zu.

Du sagst, du verwendest schon einen endlichen Automaten.
Das ist gut.

Jetzt baust du die Taster Abfrage auch zu einem endlichen Automaten um.
Dann hast du 2 endliche Automaten.
Ist doch schön, oder?

Tipp:
Endliche Automaten neigen zur Rudelbildung.
Und das ist auch gut so.

von Wolfgang (Gast)


Lesenswert?

Christian S. schrieb:
> ... und z.B. etwa 100 Ohm vom Interrupteingang zu +Ub würde
> ich vorschlagen.

Man muss es nicht gleich übertreiben. Wer weiss, ob der Schalter 
überhaupt für diese Stromstärke ausgelegt ist ;-)

Ein Tiefpass ist zur Unterdrückung kurzer Störimpulse effektiver.

von Bastian W. (jackfrost)


Lesenswert?

Hast du noch einen Timer frei ? Mit welcher Frequenz läuft der Attiny , 
1 oder 8 MHz ? Ggf kannst du diese 
https://www.mikrocontroller.net/articles/Entprellung#Timer-Verfahren_.28nach_Peter_Dannegger.29 
entprellung einbauen statt dem externen Int. Dann solltedtbdu keine 
Probleme mit den Impulsen mehr haben.

Gruß JackFrost

von Patrick S. (psar04)


Lesenswert?

Bastian W. schrieb:
> Hast du noch einen Timer frei ? Mit welcher Frequenz läuft der
> Attiny ,
> 1 oder 8 MHz ? Ggf kannst du diese
> https://www.mikrocontroller.net/articles/Entprellu...
> entprellung einbauen statt dem externen Int. Dann solltedtbdu keine
> Probleme mit den Impulsen mehr haben.
>
> Gruß JackFrost
Ja, der 8 Bit Timer ist noch komplett frei und in meinem 
"Bereitschaftszustand", also da wo ich auf den externen Interrupt warte, 
kann auch der 16 Bit Timer noch genutzt werden. Ich benutze ihn nämlich 
bislang nur in den anderen beiden Zuständen und deaktiviere ihn dann 
wieder. Der Controller läuft mit 1 MHz.
Guter Hinweis, die Entprell-Methode hatte ich mir sogar schon einmal 
angesehen, mich dann aber gefreut meinen Taster garnicht entprellen zu 
müssen, da ich den Interrupt einfach nach dem ersten mal abschalte. War 
wohl zu früh gefreut...
Viele Grüße und danke für die Antwort,
Patrick

von Patrick S. (psar04)


Lesenswert?

Vielen Dank an dieser Stelle auch noch einmal an Peter, Christian S., 
Arduino Fanboy und Wolfgang. Ich habe jetzt erstmal einige neue 
Erkenntnisse und werde mich noch mal an die Arbeit machen.
Patrick

: Bearbeitet durch User
von Patrick S. (psar04)


Angehängte Dateien:

Lesenswert?

Kurzes Update das ursprünglichen Schaltplans, damit zumindest der Trafo 
rauskommt und gegen ein passenderes Symbol ersetzt wird. Zudem habe ich 
den Wert der Trimmer ergänzt.

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.