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
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.
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.
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?
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?
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
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
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.
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!
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.
>Was muss ich ändern
Externer Pullup kleiner als 4k7 könnte schon Besserung bringen.
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
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. :)
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.
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.
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.
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?
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.
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?
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?
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 ;)
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)
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ß
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.
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.
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.