Einstreuung in die Tastenleitung, zeig mal deine Schaltung, zumindest diesen Teil mit der Taste.
Ganz seltsame Angelegenheit - ich bin ein bißchen verblüfft. Ich hab mir einen schönen großen Sternenhimmel gebaut, funtioniert auch wunderbar. Angeschlossen ist er über ein größeres Netzteil (Eigenbau). Das Netzteil hat natürlich Glättungskondensator, auch vorm 5V Spannungsregler sind Kondensatoren angebracht - sogar direkt vorm Mikrocontroller. Ein-/Ausschalten des Himmels erfolgt über eine Tasterabfrage (unendlich Schleife/Polling - ich weiß Interrupts wären besser). Grundsätzlich funktioniert auch alles wunderbar.
Mittlerweile habe ich aber festgestellt, das manchmal wenn ich heimkomme der Himmel schon an ist. Obwohl ich ihn früh ausgeschalten habe. Nach einigem hin und her hab ich herausgefunden woran das liegt. Zwar passiert es hin und wieder wenn ich mein Zimmerlicht (230V AC) ausschalte sich der Himmel einschaltet. Ja er schaltet sich EIN - kein Reset!!!
Irgendwie bekommt der Eingang am Mikrocontroller einen Low-Pegel - durch das Schalten meines Zimmerlichts. Das alles über 5 Kondensatoren, einen Trafo, Gleichrichter und Spannungsregler hinweg.
Jetzt die Frage: Weiß einer von euch wie soetwas kommen kann? Netzteil ausgetauscht habe ich auch schon - das Problem bleibt.
Wenn mir wer helfen könnte wär ich echt dankbar.
Einstreuung in die Tastenleitung, zeig mal deine Schaltung, zumindest diesen Teil mit der Taste.
Hier erstmal ein Teil meiner Platine mit dem Taster. Ich habe einen Taster auf der Platine angebracht und es können an die drei markierten Anschlüsse noch 3 (natürlich auch mehr) "externe" Taster angeschlossen werden.
Heut früh hab ich ein bißchen rumprobiert, mit meinem "Ersatzhimmel". Jetzt hab ich wahrscheinlich den Fehler gefunden: die Kapazität des Kabels für den externen Taster - wenn ich nämlich den externen Taster entferne, hab ich das Problem nicht mehr.
Ich frage mich nur wieso ist das so?
PS: Pullup ist natürlich aktiviert
Es ist sicher nicht die Kapazität des Kabel, gib noch einen PullUp mit 1k dazu dann ist die Störung ziemlich sicher weg. Der interne PullUp hat so um die 50k und das ist zu wenig. Eventuell hilft auch noch ein abgeschirmtes Kabel, den Schirm auf der Platine auf GND legen.
Hi!
Möglichkeit 1: Hubert hat Recht. Einstreuung von Störfeldern auf das Kabel und/oder die Platine. Lösung: Abschirmen und/oder mehr Strom im Kabel fließen lassen, auch wenn er aus ist, Groundplane auf Platine!
Möglichkeit 2: Dein Taster ist nicht entprellt und weil Deine Software "komisch" ist, kommen die Folgen erst ein paar Sekunden/Minuten später. Lösung: Taster entprellen!
Möglichkeit 3: Deine Spannungsversorgung ist nicht EMV-gerecht. µC sind sehr empfindlich gegen sowas. Lösung: Dazu gibt es eine sehr, sehr schöne Application Note von Atmel, die ich jedem nur ans Herz legen kann: AVR040 (Application Note AVR040 EMC Design Considerations)
Die Fehler unter Möglichkeiten 1 und 3 werden besonders gerne von Hallogenlampensystemen hervorgerufen, deren Trafos beim Ein- und Auschalten eine starke Störung auf die Netzleitung entlassen. Aber auch eingeschaltete Leuchtstoffröhren sind sehr strahlungsintensiv.
Gruß
Also zuersteinmal ein dickes Danke an euch beide. Ich habe heute tagsüber meine Taster im Zimmer eingebaut und angeschlossen. Ich habe auch Taster mit verschiedenen Kabellängen und Durchmessern ausprobiert. Dabei bin ich eindeutig zum Ergebnis gekommen, je länger das Kabel der Taster desto öfter/wahrscheinlicher tritt der Effekt auf. Wenn ich die externen Taster weg lasse und nur den Platinentaster nutze - hehe - treten keine Probleme auf.
Zu 1.
Da ich den Himmel an verschiedenen Stellen im Haus (Keller) ausprobiert habe entfällt das Problem mit Kabelabschirmung (noch!!!). Denn im Prinzip laufen von der Platine nur zwei Kabel weg. Nämlich die zwei für den Taster davon hat eines High-Level und das andere ja GND. Mit der Abschirmung gegeneinander würde ich ja keinen zusätzlich Effekt erreichen oder? Diese zwei Kabel laufen alleine - also nicht parallel zu anderen Kabeln welche Störungen einstreuen könnten. Also sollte das noch nicht das Problem sein - später einmal werden allerdings mehr Kabel parallel laufen, wie es dann aussieht weiß der Geier.
Zu 2.
Richtig mein Taster ist nicht entprellt. Eigentlich erledigt bei mir das die Software - ich hab mir für die Entprellung einiges angeschaut. Manche schwören auf Hardware - andere auf Software. Ich mach im Prinzip eine Softwareabfrage die 100ms wartet bevor sie erneut abfragt. Ich weiß das ist nicht die beste Lösung, aber funktionieren tuts. Empfehlt ihr Hardwareentprellung???
Zu 3.
Hmm das ist ein guter Tipp - also da hab ich nicht drauf geachtet. Werde mir das mal genauer ankucken.
---
Im Prinzip hab ich schon eine Lösung gefunden. Wie von Hubert vorgeschlagen habe ich den Pullup reduziert (1k) und dazu noch einen Kondensator (47uF) zwischen Port (im Auszustand ja High) und Masse geschalten. Ohne Kondensator hats noch nicht geklappt, mit funktioniert es jetzt aber ohne Probleme. Das ist aber sicher nicht die Lösung die ich anstreben sollte. Denn an jeden Eingang einen Kondesator als Tiefpass zu schalten - das werden die wenigsten machen - ist ja auch nicht Sinn und Zweck.
PS: Ich finds ja schon irgendwie cool das sich der Himmel in meinem Zimmer anschaltet, wenn ich im Wohnzimmer (20m Distanz) den Lichtschlater drücke - für einen Außenstehenden - "Zauberei"
Erm.. mach mal nen 1k Pullup an den µC ran der interne ist für sowas zu hochohmig, und machs so das mindestens 100 oder mehr "drücke" registiert werden müssen bevor er an/aus geht
Meine Elektronik Basteleien ( Leider noch nicht alles eingetragen und teilweise etwas wirr Wird zur Zeit überarbeitet. )
Doch!Mit der Abschirmung gegeneinander würde ich ja keinen zusätzlich Effekt erreichen oder?
Zur Info:
Du schirmst nicht gegen parallel liegende Kabel ab, sondern gegen den ganzen "elektromagnetsichen Mist", der ständig im Raum ist. Den kannst Du am leichtesten sichtbar machen, wenn Du den Tastkopf eines Oszis angreifst und einen geeigneten Bereich wählst. Da Du selbst nicht an einer Netzleitung hängst (hoffentlich...) sollte man annehmen, dass Du eine Flatline auf den Schirm bekommst. Dem ist aber ganz und garnicht so! Du wirst immer eine mehr oder weniger verzerrte 50Hz Sinuswelle erkennen können, selbst im Keller oder wenn Du die Sicherung in der Wohnung rausdrehst. Denn immerhin Dein Oszi hängt am Netz und die Leitung reicht schon völlig aus. Aber nicht nur das. Radiowellen, Fernsehwellen, Handywellen, Funkwellen, WLAN... All das ist natürlich auch noch da!
Sicher, in Deinem Fall scheint es das Ein/Ausschalten einer Lampe. Das geht bei mechanischen Schaltern immer mit Abrissfunken einher, da diese nur manchmal im Nulldurchgang der Neztfrequenz schalten (Zufall). Diese Abrissfunken stören für kurze Augenblicke das gesamte Netz im Haus und ließen sich an jeder Steckdose messen (gleiche Phase vorausgesetzt), auch an der, an der Dein µC hängt. Außerdem bewirken die Hochfrquenzpulse besonders starke Störungen auf sämtlichen Leitern in einigen Metern Entfernung, auch auf Deinem Tasterkabel. Wenn es nur daran läge, dann würde eine Schirmung reichen. ABER: Schirmung ist nicht gleich Schirmung!
Wichtig ist: Man muss Signal und GND ganz normal verbinden (mit Taster und µC). Zusätzlich schirmst Du die Leitung, befestigst aber den Schirm NUR auf seiten der Platine mit Ground. Ja, der Schrim hängt quasi in der Luft. Erst wenn danach immernoch Störungen auftreten, kannst Du Möglichkeit 1 auschließen.
Schirmen ist aber teuer und unnötig, denn wie meine Kollegen schon sagten tut es wahrscheinlich auch ein geringerer Widerstand. Der Trick ist der: Eingekoppelte Störungen haben nur sehr geringe Leistung (wie Radiowellen auch), können aber an hohen Widertänden große Spannungen erzeugen. Wenn (auch im ausgeschalteten Zustand) ein "hoher" Strom fließt, sagen wir 10mA, der Widerstand daher recht klein ist, dann gehen die Störungen sozusagen darin unter.
Alte Regel: Wenn's wenig rauschen soll, muss viel Strom fließen!
Gruß
hab ich schon bedacht, aber einfach mal ignoriert . Fehlt mir noch die Erfahrung. Aber vielen Dank für die ausführlichen Erleuterung zu EMV. Danke natürlich auch an die anderen.den ganzen "elektromagnetsichen Mist"
Ich habe ja jetzt bereits den 1k Pullup eingesetzt, aber nur mit zusätzlichen Kondensator sind die Probleme dann behoben. Warum? So habe ich das jetzt bisher verstanden:
Also mein Port liegt durch den externen Pullup auf HIGH, sollten jetzt durch Störfelder Stöme induziert werden so verursachen diese eben an dem niedrigen Pullup einen geringen Spannungsabfall als sie am 50k internen verursachen würden. Somit erhalte ich am Eingang durch Störung vielleicht nur noch 4,5V was aber ja noch HIGH wäre.
Gibt es jetzt noch einen anderen Grund warum ich den externen (geringeren) Pullup brauche? Weil ihr sagt der interne reicht grundsätzlich nicht - warum?
Hm... also externen Pullup nimmt man meist nur zur Störunterdrückung, oder um ggf den Stromverbrauch zu senken im Sleepmodus (damit die Ausgänge nicht floaten).
Gock hat ja schon geschrieben, bei 1k fließen etwa 0,005 A bei 50k 0,0001A um den Port auf LOW zu ziehen.
Ich würde trozdem zwei Tastendrücke auswerten, dann muß man den Taster vieleicht statt 100ms 200ms drücken... aber das verhindert auch das man durch jede Störspitze nen Schaltvorgang auslöst.
Meine Elektronik Basteleien ( Leider noch nicht alles eingetragen und teilweise etwas wirr Wird zur Zeit überarbeitet. )
Lesezeichen