PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem: Microcontroller Eingang schaltet - bei Zimmerlicht



Sokar
24.10.2006, 21:35
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.

Hubert.G
24.10.2006, 21:51
Einstreuung in die Tastenleitung, zeig mal deine Schaltung, zumindest diesen Teil mit der Taste.

Sokar
25.10.2006, 10:31
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

Hubert.G
25.10.2006, 18:26
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.

Gock
25.10.2006, 21:07
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ß

Sokar
25.10.2006, 22:04
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" :)

Laeubi
25.10.2006, 22:09
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

Gock
25.10.2006, 22:47
Mit der Abschirmung gegeneinander würde ich ja keinen zusätzlich Effekt erreichen oder?
Doch!
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ß

Sokar
25.10.2006, 23:25
den ganzen "elektromagnetsichen Mist"

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.

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?

Laeubi
26.10.2006, 06:53
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.

Gock
26.10.2006, 14:53
Also dass es mit einem 1k Pullup nicht funktioniert ist schon außergewöhnlich. Dass es mit zus. Kondensator funktioniert ist zwar erstmal schön aber für Dich anscheinend nicht befriedigend, versteh' ich.
Leider kenn' ich den Rest der Schaltung und der Software nicht, aber Du kannst mal noch folgendes probieren:
1. Schreibe die Software derart um, dass sie das Drücken den Tasters erkennt, dann min. 50-100ms wartet und sie erst dann schaltet, wenn der Taster wieder losgelassen wird. Wenn es wirklich Störungen auf der Leitung sind, dann werden diese für weniger als 50-100ms herrschen. Das ist meiner Meinung nach auch eine bessere Entprellung.
2. Tausche die beiden Kondensatoren aus: den einen, den Du hoffentlich DIREKT an die Versorgungspins (und zwar an jeden!) des µC gesetzt hast und den anderen, den Du eventuell vor dem Resetpin hast (auch wichtig). Es sollten 100nF Vielschichtkondensatoren sein, keine Elkos, kein Tantal. Glimmer oder Folie müsste theoretisch auch gehen.
Das Ergebnis würde mich mal interessieren...
Gruß

PS: Das mit den Störungen ist eine Wissenschaft für sich. Es ist gut möglich, dass sie ein SIgnal auf weniger als, wie Du sagst, 4,5V reduzieren, wenn auch nur für eine µs. Sie können aber auch von "hinten" reinkommen, zb indem sie nicht Dein Signal senken, sondern Deine Masse in gewissen Bereichen der Schaltung heben.
a. Hast Du eine Groundplane? Ich habe auf dem Bild keine gesehen. Atmel empfielt sogar eine unter dem gesamten µC!
b. Habt Ihr Halogentrafos im Haus oder andere induktive Lasten?
c. Schaltet sich der Himmel nachweislich mit anderen Verbrauchern im Haus an oder könnte es auch Zufall sein?
d. Was passert nach einem µC Reset? An oder Aus?
Fragen über Fragen...

Sokar
27.10.2006, 14:54
sorry das ich mich erst jetzt wieder melde - hatte keine zeit. bisher habe ich noch nichts neues ausprobiert - vielleicht wirds heute noch was.

also ich hab natürlich :) je einen 100nF Kondensator vor den Versorgungspins. allerdings sind das kerkos - keramik - wie siehts mit denen aus. das elkos bei höheren freq. nicht taugen ist mir klar - die sind einfach zu träge

achso noch schnell zu den Fragen:
b) lässt sich schwer beantworten - halogenlampen sollte wir haben
c) ja nachweislich - ich habs oftgenug ausprobiert (Licht an Licht aus) :)
d) nach uC reset ist der himmel aus

a) masseflächen habe ich letztens abgeschafft - weil da viel leichter fehler entstehen - sollte ich die doch lieber machen?

ogni42
27.10.2006, 15:00
Doch, Tiefpass am Eingang ist die Hardware-Methode um Tastenprellen und Störsignale zu unterdrücken. Aus diesem Grund wird ja auch AVcc per Spule und Kondensator von Vcc entkoppelt.

Per Software Abfrage kannst Du das Tastenprellen lösen, aber nicht das Störsignalproblem, da hier permanent über die Zuleitungen eingekoppelt wird. Da hilft eben nur der Tiefpass.

Sokar
27.10.2006, 16:16
hört sich schon vernünftig an - bei meinen versuchen hatte ich allerdings immer das problem. mit TP konnte ich gar keinen Tasterdruck detektieren.

wie würdest du die bauteile wählen? 100nF und wieviel ohm - 100? da wär ich dann bei einer zeitkonstanten von 10us

also häng ich den pullup direkt an den pin - danach den tp'widerstand mit Taster in Reihe auf masse und parallel zum taster den kondensator

Sokar
08.11.2006, 20:37
Also ich wollte mich nochmal bei allen bedanken. Ich bin erst jetzt wieder dazugekommen etwas am Himmel zu machen. Ich habe die Methode mit "erneutem Tasterabfragen nach ein paar millisek." ausprobiert --> perfekt, keine Probleme mehr.

Wenn ich wieder etwas mehr Zeit habe werde ich mich mit dem Thema EMV mehr auseinandersetzen ;)