Hallo, habe hier im Forum ein Stück Code zur Motorsteuerung eines Garagentores gefunden und den am meine Bedürfnisse angepasst (wurde auch zur Fehlersuche veröffentlicht). Allerdings läuft der nicht zuverlässig und fehlerfrei auf meinem selbst erstelltem Board mit Atmel Mega 8. Erst mal vorweg der Schaltplan: http://img76.imageshack.us/img76/1915/schaltplansu0.jpg und der C Code als Anhang. Kurzfassung: der uC steuert über ein ULN2003 Treiber Relais an, die wiederum den Motor schalten. Ohne Motor an den Relaisausgängen funktioniert alles, unter "Last"/mit Motor sürzt der uC nach ein paar Schaltvorgängen "zuverlässig" ab und reagiert auf gar nichts mehr. Langfassung: es geht wie schon gesagt um die Ansteuerung eines Garagentor Motors (mit 0,7KW Leistung). Dazu habe ich eine Schaltung mit dem uC Atmel Mega 8 gezeichnet, geätzt und ein C Programm geschrieben ((Demoversion) von ICC AVR). Auf dem Schreibtisch läuft der uC einwandfrei, die LEDs zeigen den Status/Zustand an und ich höre und sehe die Relais (über einen ULN2003 Treiber angesteuert) schalten. Auch bei gleichzeitiger Betätigung mehrerer Tasten o.ä. läuft alles einwandfrei. Wenn ich nun allerdings den Motor an die Relaisausgänge anschließe, und die Relais Last schalten müssen geht das ganze ein zwei Schaltvorgänge gut, dann stürzt der uC ab. Und damit meine ich richtiges "abstürzen": er reagiert auf keinen Tastendruck (!) mehr, die Relais bleiben immer im gleichen Zustand usw. Woher kommt das? Selbst wenn die Spannung einbrechen sollte, würde der uC neu booten und wieder in den grundzustand gehen. Der bleibt aber einfach "irgendwo" stehen und reagiert auf keine Taste o.ä. Die Stromversorgung kommt über 230V auf die Leiterplatte, von dort in ein 12V Netzgerät das dann den Spannungsregler versorgt und eine kleine Außenlampe. An den 230V für die Leiterplatte/das Netzgerät hängt auch der Motor. Der Code ist mit Sicherheit nicht optimal (mein erster Versuch) und die Hardware hat hoffentlich keine Fehler (ist halt schon geätzt und gelötet). Wäre nett wenn sich das ganze mal jemand anschauen könnte und ein paar Tipps geben würde. Bestenfalls zur Software, schlimmstenfalls würde ich aber auch die Hardware noch mal neu machen. Björn
Hallo, naja, das Layout wäre vermutlich interessanter. Meine Vermutungen: ungünstige Leiterbahnführung, Netzleitungen parallel zu Datenleitungen, Abstand zu gering, kein Netzfilter, Relaiskontakte nicht entstört usw. usw. Irgendwo saut es rein, wenn die induktive Last (Motor) geschaltet wird. Gruß aus Berlin Michael
Wichtig wäre fürs erste wohl je ein geeigneter C vor und nach dem Trafo und RC parallel zu den Relaiskontakten. Wenn du nicht genügend Abstand von den 230V Leiterbahnen hast sieht es allerdings schlecht aus.
Hallo, für alle und Michael hier auch noch das Layout/die Leiterplatte: Gesamtansicht: http://img266.imageshack.us/img266/3927/gesamter5.jpg nur Draufsicht: http://img181.imageshack.us/img181/9862/toplx5.jpg nur Unterseite: http://img71.imageshack.us/img71/9531/bottomhe1.jpg War eigentlich "stolz" auf mein Werk, habe überall ein wenig Abstand gelassen und habe mich gefreut wie ein Honigkuchenpferd das die doppelseitige Platine so gut ging. Was meinst du mit entstören? Der uC ist doch durch den Treiber geschützt, oder nicht? Und was die Relais am Ausgang machen, sollte doch dem uC egal sein, da dort ja eine physikalche Trennung 230V/uC ist. an Hubert: Warum denn das? Der Trafo speist ja nur eine kleine Lampe, der dürfte das egal sein. Und der uC ist durch den 7805 versorgt, an dem 2 kleine und ein großer Kondensator ist. Wenn ich die 12V noch mal davor "puffere": kann ich einfach einen "dicken" Kondensator (gepolt und für 12V geeignet) nach dem Netzteil zwischen + und GND klemmen/löten, oder bräuchte der noch einen Ladewiderstand o.ä.? Denn an die Klemmen, bzw. ans Netzteil kann ich ja noch was dranlöten. Was ich nicht verstehe: wie kann der uC komplett "hängen"? Wenn ich mir den Code ansehe, frage ich mich immer wo "er" steht und ins Leere läuft. Hoffe ihr könnt mir weiterhelfen. Danke schon mal, Björn P.S. Werde morgen wahrscheinlich auch erst wieder Nachmittags/Abends (privat) ins Internet können.
Richtige Netzspikes machen auch vor Elkos und Spannungsregler nicht halt, da ist es besser sie schon vorher zu eliminieren. Die Frage ist hier noch, sind die Motoren entstört? RC an den Relaiskontakten fehlen. Wo der µC hängt kann dir keiner sagen, wenn du das vermeiden willst dann musst du einen Watchdog einbauen, der behebt aber die Störungen nicht, nur die Auswirkung.
Hallo auf den ersten Blick sind ein paar derbe Schnitzer (was Störanfälligkeit betrifft) reingeraten. Resetpin: Pullup und Kondensator für den Resetpin sind falsch dimensioniert. (C5 ungefähr 100nF und PullupWiderstand (R1 wesentlich verkleinern auf ca 1kOhm) R2 kannst du weglassen. Kondensator und Widerstand sollten viel näher am Resetpin platziert werden. Gleiches gilt für C6 und C10. sollten wesentlich näher an den entsprechenden uC Pins sitzen. Spannungsregler: Die Kondensatoren C2 und C4 auch näher an den Regler ransetzen (so na es geht) Der 470uF kondensator am Eingang ist schlecht platziert. (vom 12Volt Anschluss 1 Leiung zum Kondensator und dann direkt vom Kondensatorpin weiterführen zum Regler und nicht vom Einspeispunkt aufzweigen wie du es getan hast. Kurz etliche pufferelkos sind schlecht platziert und schlecht angeroutet. Die 5V für den Controller und die 5Volt für die Relaisspulen sollte man nur an einem Punkt (Spannungsreglerpin) zusammentreffen lassen. Paar Drosseln/Spulen an den richtigen Stellen wären wohl auch nicht ganz verkehrt. Ein Netzfilter solltest auch spendieren, wurde aber schon erwähnt. Relais: die fehlenden RC-Glieder über den Relaiskontakten wurden schon erwähnt. mfg phil
Hallo, dann will ich mal die Mittagspause sinnvoll nutzen :=) an Hubert: das leuchtet mir nicht so ganz ein, wird aber wohl so sein, denn die Praxis zeigt es mir ja (leider). Werde nachher mal einen Akkupack fertig machen und den als Versorgungsspannung verwenden. Dann ist aber wirklich alles vom Netz getrennt. Ansonsten: wie kann ich die Schaltung entkoppeln (Bauteil(-art), Bestellnummern, Dimensionierung...)? Motoren entsört? Gute Frage. Kann ich das irgendwie erkennen? Glaube fast nicht, ist eher Marke "alt und unverwüstlich ohne technischen Schnick-Schnack", Kupferwicklung auf Anker mit Klemmbrett und angeflanschtem Getriebe (so wie ich das in Erinnerung habe). RC an den Kontakten: könnte ich auch einen Varistor (250V, SCHEIBENVARISTOR; S20K250, Conrad Nr. 500387 - 62) verwenden? Die könnte ich nachträglich noch mit in die Relais mit reinklemmen. Watchdog: werde ich mir heute Abend mal was zu durchlesen. Keine Ahnung was das ist und obs funktioniert. für Phil: das es so schlimm ist hatte ich nun nicht befürchtet. Sieht für mich "gut" aus und ist ohne autoroute entstanden. Nun gut, muss ich wohl Lehrgeld zahlen... Reset: Habe ich mir von http://www.ar-online.de/AVR/AVR%20-%20Grundaufbau.htm abgeguckt. Die Erklärungen waren für mich einleuchtend. Gibt es irgendwo eine zuverlässige/richtige Beispielbeschaltung? Ansonsten: was rauslöten und Brücken machen ist kein Problem, verlegen schon eher (s.u.). Kondensatoren: deine Erklärungen leuchten mir ein, kann ich nachträglich aber schlecht ändern. Sollte ich noch mal was machen, werde ich dran denken. Drosseln/Spulen: Wohin sollte da etwas, Dimensionierung? Entstörfilter: z.B. so etwas ENTSTÖRFILTER 125/250V1A L 2X3.7MH, Conrad Nr. 521313 - LN ? RC an den Kontakten: könnte ich auch einen Varistor (250V, SCHEIBENVARISTOR; S20K250, Conrad Nr. 500387 - 62) verwenden? Die könnte ich nachträglich noch mit in die Relais mit reinklemmen. Würde die Leiterplatte ungern neu machen (war denn doch zu viel Arbeit) und die Bauteile sind ja auch draufgelötet. Hätte ich nur mal vorher gefragt, sah aber so gut aus... Danke für eure Mühen, Björn
Kleiner Unterschied zwischen deiner Reset-Beschaltung und der verlinkten: bei dir ist die Diode verkehrt herum drin. Die Standardbeschaltung wie Atmel sie in einer Application Note empfiehlt reicht aber aus. Wozu sind eigentlich R13&Co drin? Der ULN ist für direkte Anbindung konzipiert. Wenn man schon 12V hat, empfiehlt es sich, die Relais auch damit zu fahren und nicht mit 5V.
Hallo Björn, >Gibt es irgendwo eine zuverlässige/richtige Beispielbeschaltung? wenn du deinen AVR nicht in-system programmieren willst, kannst du den Reset Pin auf fest auf die positive Betriebsspannung des uC legen. Damit ersparst du dir die externe Beschaltung. Ansonsten findest du die Infos ab Seite 14 in der Application Note "AVR040: EMC Design Considerations" http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf
Der ULN2003 hat schon einen Basisserienwiderstand von 2,2K was sollen dein 15K Basisvorwiederstände, das ganze soll doch voll durchschalten. Du hast keine Strombegrenzung in deinen Relais die hängen direkt an dem 5V Regler wenn du da schaltest und die Relais haben einen geringen Innenwiderstand killst du dir die Stromversorgung deines Mikrocontrollers und beim schalten der Relais gab es doch Probleme. Sind es wirklich 5V Relais? Wenn ja hänge an die 5V schiene noch einen grossen Elko. Was soll die Diode in der Resetbeschaltung? Das RC-Glied ist zur Verzögerung des Starts des MC da, wenn du das mit einer Diode brückst wird der Mikrocontroller früher starten. Ausserdem hast du nicht die vollen 5V am Reset anliegen.
Ein Varistor am Relaiskontakt kappt dir nur Überspannungen aber keine Störungen, RC ist sinnvoller. Faustregel 1Ohm/V und 0,1uF/A. X2 Kondensatoren verwenden. Die bringst du leicht noch auf die Platine. Ich würde mal damit beginnen, wenn es nichts oder zuwenig bringt dann den Motor entstören mit 22n zwischen L und N und jeweils 10n von L und N nach PE. Ebenfalls X2 Kondensatoren verwenden. So einen Kondensator auch auf die Primärseite des Trafo.
Bei der Ansicht deines Schaltplans ist mir noch aufgefallen, wenn deine Motoren heftig stören, kannst du dir auch über die Auf/Zu/Stop Leitungen etwas einfangen. Ich weiss nicht wie dein Programm reagiert wenn massig undefinierbare Signale dort anstehen. Ein externer PullUp mit 1k und eventuell 10n nach GND würde nicht schaden. Parallel zu C9 sollte noch ein C mit 100n. @Wolfram Die Diode ist verkehrt drinnen. Sie soll den C entladen wenn die Versorgungsspannung weg ist, damit auf dem Reset keine höhere Spannung ansteht. Ist meiner Ansicht nach nur notwendig wenn der C sehr groß und die Versorgungsspannung ungenügend gepuffert ist.
Hallo, an A.K. wie dumm von mir. Schaffe es noch nicht mal richtig "abzumalen". Habe die Diode jetzt richtig rum drin (aus- und wieder eingelötet). Die Widerstände vor dem ULN Treiber hatte ich als Schutz für den uC gedacht. Habe die nun auch durch Drahtbrücken ersetzt. Das mit den Relais liegt daran, dass ich noch welche für so einen kleinen Spulenstrom (vom Modellbau) über hatte. an Patrick: wenn ich den nicht mehr in der Schaltung programmieren könnte, hätte ich ein Problem... Wollte das Programm später einmal erweitern und mit dem Speicher (EEPROM) arbeiten. Dort sollen die letzten Öffnungen/Schließungen gespeichert werden. Aber das ist noch Zukunftsmusik... an Wolfram: Ja, es sind "Schwachstromrelais", genauer gesagt für 6V. Die ziehen aber auf dem Schreibtisch und unter Last zuverlässig an (Tor fährt dann z.B. beim Absturz des uCs ständig gegen den (mechanischen) Endschalter). Ansonsten: Kondensator einfach in die Nähe der Relais zwischen VCC und GND? Der ULN ist ja schon über einen 470uF gepuffert. an Hubert: Ok, so was hat Conrad glücklicherweise da. Das C eher größer wählen oder kleiner (700W bei 230V => 3A (so ca.)) (0,27, 0,33, 0,47uF ist vorhanden)? Wie sieht es mit den Widerständen aus? Normale "Drahtwiderstände" 1/4W (?) dürften ja nicht reichen, oder? Auch hier: 180, 220, 270, 330Ohm? Verschaltung dann C und R in Reihe parallel zum Relaisausgang und in Reihe zum Varistor (der auch parallel zum Relaisausgang kommt)? Wie das allerdings noch auf die Leiterplatte soll (muss ja an die Relaisausgänge) weiß ich noch nicht... Erst mal einkaufen gehen. Undefinierte Signale? der uC liefert doch nur 1 oder 0 an mein Programm ab. Schlimmstenfalls geht das Tor halt zu statt auf wenn einer drunter steht ;=) Ernsthaft: meiner Meinung nach würde sich das Tor nur kurzzeitig (halt für den Moment der Störung/Überlagerung) falsch bewegen, dann sollte der Taster aber stärker sein und den Pin auf GND ziehen. Wenn mehrere Taster "aktiv sind" hat STOP Vorrang, dann AUF, dann ZU. an alle Helfer: die Resetschaltung habe ich von den Widerständen her erst einmal so gelassen, nur die Diode ist jetzt richtig rum drin. Reciht das, oder sollte ich die Änderungen wie von Phil vorgeschlagen auch noch durchführen? Gruß und Danke, Björn (Glaube fast es muss doch noch eine 2. Version geben)
Wenn's klappt ok, aber an sich ist ein 6V-Relais mit Darlington-Transistor aus 5V betrieben etwas riskant, immerhin gehen im ULN knapp 1V verschütt. Einzeltransistoren (keine Darlingtons) wären in diesem Fall dem ULN vorzuziehen. Die Reset-Schaltung ist ok so, komplizierter als nötig, aber kein Problem was die Schaltung angeht. Bloss wenn du sowieso neu layouten musst...
>Ja, es sind "Schwachstromrelais", genauer gesagt für 6V
strom wird in Ampere gemessen, gib doch mal bitte an welchen Strom ein
einzelnes Relais bei 5V zieht und welchen ohmschen Widerstand die Spule
hat.
Hi, also, die Relais haben einen Arbeitsbereich von 4,2...9V, einen Widerstand von ca. 55Ohm und einen Bemmessungsstrom von 110mA (alles lt. Datenblatt). Was da jetzt bei 5V an Strom durch die Spule fließt kann ich dir nicht sagen, ich würde aber auf 90mA tippen (I = U/R). Björn
Ucesat vom ULN ist typ. 0,9V, d.h am Relais kommen 5,0V - 0,9V = 4,1V an. Bischen eng bei 4,2V min. Hier zwar nicht das Problem, aber beim Neudesign dran denken und den ULN durch 3 entsprechend beschaltete BC337 oder BC635 ersetzen.
Bei 3A würde ich 220 Ohm und 0,33µ nehmen, 1/4 Watt sollte reichen für R, berührungssicher wäre natürlich angebracht. Das C9 mit 470µ genügt ist ein Trugschluß, der hat einen wesentlich größeren Innenwiderstand als ein Keramik C, also 100n Keramisch parallel. Ich würde trotzdem 1k Pullup vorsehen, du bringst die Störungen damit gar nicht erst auf die Platine. Wenn du die angeführten Entstörmassnahmen konsequent durchführst, wirst du keine zweite Version brauchen, es sei denn du möchtest in Serie gehen.
Hallo, leider hat Conrad vor Ort keine X2 Kondensatoren, so dass ich bei Reichelt bestellt habe (da ich auch bei Conrad hätte warten müssen). Es gibt aber schon eine schlechte Nachricht: habe die Schaltung mit einem 12V Akkupack versorgt und der Fehler tritt immer noch auf!!! Es muss also irgendwo irgendwas auf der Leiterplatte passieren... Den von außen kann es ja nciht mehr kommen, da die Akkus nichts mit dem Netz zu tun haben. Wie auch immer, hoffe die Maßnahmen am Relais, die 100nF am ULN und die Pullups helfen. Anbei noch einmal meine Schaltung zur Entsörung der Relais/zur Störunterdrückung. Hoffentlich klappt das. Währe nett, wenn sich das noch einmal jemand ansehen könnte. In Serie gehen? Mittlerweile wäre ich heilfroh wenn das ganze noch irgendwie irgendwann laufen würde. War am Anfang echt super froh und glücklich, mittlerweile eher ein wenig gefrustet. Noch mal muss ich das nicht haben, bzw. werde weiterhin bei meinen kleinen Spannungen bleiben. Björn
Hi, du MUSST die Relais entstören!!!!!!!!!!!!!!!!!! Das ist SEHR wichtig! syd
Hallo syd, was meinst du damit? Freilaufdiode ist im ULN2003 enthalten, und das Relais bekommt ja jetzt ein RC Glied. Und dass das wichtig ist, habe ich (schmerzlich) erfahren wenn du mal von Anfang an iest. Björn
Das mit den RC ist schon richtig so. Zum testen kannst du, wenn vorhanden, normale C nehmen für 250~, aber nur zum testen, wenn die nämlich durchknallen kann es ein Feuerwerk geben. Denk auch an die 1k Pullup an den Tastenleitungen.
Hallo Hubert, danke für deine Bestätigung. Wie ich schon schrieb, wird noch folgendes gemacht: 100nF an den ULN Pull-Ups an die 3 Eingänge Pin C0, C1, C2 RC Glied und Varistor über die Relaisausgänge 2,2mF an die 5V Versorgungsspannung gegen GND Hoffe nur, dass das hilft und danach (endlich) alles funktioniert. Die Leiterplatte sieht zwar jetzt schon super gefuscht aus, aber egal. Björn
gibts scho neues zu berichten? hat die entstörung der relaiskontakte was gebracht?
Hallo, danke der Nachfrage. Die X2 Kondensatoren scheinen ein echtes Problem zu sein. Conrad hatte die gar nicht vor Ort und Reichelt hat meine Bestellung einfach so "aufgeschoben", wird vorraussichtlich am Mittwoch ausgliefert (=> hoffentlich Do bei mir). Björn
nachtrag: in ner steuerung für n lötschwall hab ich mal "integrierte" RC-Glieder "entdeckt". Die Teile sahen aus wie normale X2 Kondensatoren hatten aber das R schon mit drinn. Wo man die beziehen kann weiss ich allerdings nicht. ev. im Conrad buisness sortiment. mfg phil
Hallo, Reichelt hat das Paket endlich geliefert, alle nötigen Teile sind da. Werde das heute Abend einbauen und dann morgen schauen ob es hilft (hoffentlich...). Was mir nur auffällt: die X2 Kondensatoren haben ein Rastermass von 22mm und sind verdammt groß... Mal so eben werden die nicht auf die Leiterplatte passen. Wird wohl ein SChrumpfschalugebastelanschluss werden müssen :=( Gruß, Björn
Hallo, es gibt schlechte Nachrichten: es ist wesentlich besser geworden, aber ab und an (10min auf den Tasten rumspielen) tritt das Problem immer noch auf. Was steht also als nächstes an? - Motor wie vorgeschlagen entstören - Leiterplatte evtl. neu machen :=( - weitere Vorschläge Werde es nun mit den Kondensatoren am Motor probieren, da die an den Relais eine deutliche Verbesserung gezeigt haben. Wenn ihr noch sonstige Vorschläge habt: muss eh bestellen/einkaufen ;=) Björn
Hast du die Pull-Up an den Tasten schon drinnen? Wenn es eine einmalige angelegenheit ist, wie du schon geschrieben hast, und alle anderen Maßnahmen nicht 100% greifen, würde ich den Wathdog in die SW einbauen.
Ich weiss jetzt nicht ob du schon probiert hast die Schaltung mal mit einer 12V Batterie zu betreiben, dann könnte man zumindest mal feststellen ob die Störung über die Stromversorgung kommt oder doch ausschließlich Einstreuungen und Kontakstörungen sind.
Hallo, danke für die Antworten und Interesse. 100nF an den ULN (dort wo die Durchkontaktierungen im obigen Layout bei C9 sind) Pull-Ups (1K Ohm) an die 3 Eingänge, Widerstände jeweils in die (ehemalige) Durchkontaktierung gesteckt und dann "gemeinsam" auf +5V bei der Durchkontaktierung für C10 gelötet RC Glied und Varistor über die Relaisausgänge, "fliegender" Aufbau auf der Unterseite der Leiterplatte, direkt unterhalb der Klemmen Torauf, Torstop, Torzu) 4,7mF an die 5V Versorgungsspannung gegen GND, +5V bei der Durchkontaktierung nach dem Spannungsregler (zwischen 7805 und ISP Buchse), GND neue Bohrung und Anlötung auf beiden Seiten Das mit dem Watchdog ist mir zum einen nicht so ganz klar, zum anderen sehe ich da ein Problem: wenn es wirklich an den Relais liegt, werden die ja durch den Watchdog-Reset ständig abfallen/anziehen usw. Kann mir nicht vorstellen, das dies eine gute Lösung ist. Werde ich aber auch in Betracht ziehen. Einen Akkupack hatte ich schon mal angeschlossen, brachte rein gar nichts :=( Da es evtl. nichts mit den Entsörmaßnahmen wird, werde ich nebenbei probieren die Leiterplatte neu zu machen. Mal sehen wie weit ich da komme, aber hoffentlich ist das unnötig. Björn
Versuche auch noch die 230V von der Leiterplatte wegzubringen. Ebenso die Tastenleitungen und die 12V Leitung vom Trafo soweit wie möglich von den 230V Leitungen entfernt verlegen. Wenn es möglich ist die Tastenleitungen in einem abgeschirmten Kabel zu verlegen, den Schirm dann aber nur auf der Platine mit GND verbinden. Zur SW noch, ich aktiviere bei unbenutzten Eingängen immer die Pull-Up, kann zwar nicht definitiv sagen das es etwas bringt, aber es ist so immer ein definierter Zustand eingestellt.
Hi, Reichelt hat wieder ein "Überraschungspaket" geliefert. Eingelötet (Entstörkondensatoren am Motor und an den externen Pull-Ups) und bis jetzt keine Abstürze mehr! Bin momentan super happy. Hoffentlich klappt das jetzt auch auf Dauer. Auf jeden Fall: vielen Dank für eure unermüdliche Hilfe, speziell an Hubert!!! Björn
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.