PIC16F628A Zurücksetzen nach Ausschalten des Relais

Ich habe Probleme mit der Steuerung eines Relais mit Last darauf. Ich verwende PIC16F628A. Das Problem ist folgendes: Das Relais hat Last. Zunächst ist es aus. Wenn der Ausgang des Mikrocontrollers eingeschaltet ist, schaltet sich auch das Relais ein. Wenn das Relais abgeschaltet werden muss, ist der Ausgang des Mikrocontrollers ausgeschaltet. Aber wenn dies passiert, wird der Mikrocontroller zurückgesetzt.

EDIT: Die Last ist 220AC. Versuche, die Glocke zu kontrollieren.

Bitte beachten Sie, dass der Relaisbefehl ohne Last vollständig funktioniert, ohne den Mikrocontroller zurückzusetzen.

Hier sind die Schaltpläne und die Platine aus dem Projekt.

Schema

Leiterplatte

PS Der Kristall-Fußabdruck wurde in Kondensator geändert, weil ich den Fußabdruck für den Kristall zeichnen muss, aber er hat die gleichen Lochabmessungen wie der Kondensator.

EDIT2: PCB Design wurde wie vorgeschlagen aktualisiert. Die aktualisierten Schaltpläne und PCB:Schema Leiterplatte

Eine weitere hilfreiche Information: Könnten Sie das Datenblatt für das verwendete Relais teilen?
@JonL Ich konnte das Datenblatt für das Relais nicht finden. Hier einige Kenndaten 10A/24VDC, 10A/120VAC, 50/60Hz 10A/24VDC, 10A/240VAC. LINK So sieht es aus.

Antworten (6)

Ich wollte nur kommentieren, aber ich fand, dass ich zu viel zu sagen hatte:

Befolgen Sie den Rat von Spehro und Alexey. Hier gibt es mehrere Probleme. Führen Sie alle Korrekturen durch, auch wenn Sie feststellen, dass nur ein Überspannungsschutz oder Entkopplungskondensator ausreicht.

Die Last beträgt 220AC. Versuche, die Glocke zu kontrollieren.

Bitte beachten Sie, dass der Relaisbefehl ohne Last vollständig funktioniert, ohne den Mikrocontroller zurückzusetzen.

Dies scheint darauf hinzudeuten, dass das Schalten der Glocke die Quelle einer Spitze ist, die das Zurücksetzen verursacht. Lassen Sie den Snubber und/oder MOV, den Spehro vorschlägt, nicht weg, da das Relais eine induktive Last schaltet. Ich habe zu viele Probleme mit geschalteten induktiven Lasten gesehen, die Resets in Industrieanlagen verursachen, um die Notwendigkeit eines Snubbers und / oder MOVs lediglich als "Pflaster" zu betrachten. Neben dem Reset-Problem tritt ohne Unterdrückung der Spitze eine zusätzliche Lichtbogenbildung an den Relaiskontakten auf, was die Lebensdauer des Relais verkürzt. Sie können einen Snubber kaufen oder selbst herstellen.

Der hinzugefügte Entkopplungskondensator (vorgeschlagen von Alexey) muss den kürzestmöglichen Weg zu den PIC-Power/Gnd-Pins haben. Die zerschnittene Grundebene leistet dies nicht.

Die Platzierung der Power/Gnd-Pins auf dem PIC ist ein wenig schwierig, um einen kurzen Weg zum Entkopplungskondensator zu erreichen, ohne entweder Spuren zwischen den Pads zu führen (könnte längere, dünnere Pads erfordern) oder den Entkopplungskondensator auf der Rückseite zu platzieren.

Sie können den Entkopplungskondensator an die vorhandene Platine "klumpen", indem Sie die Leitungen kurz schneiden und entweder direkt an die PIC-Strom- / Erdungsstifte oben auf dem PIC löten oder an die Pads auf der Lötseite der Platine löten.

Noch ein paar unabhängige Kommentare zum Board-Layout. Da P1 und P2 an 220 VAC angeschlossen sind, isolieren Sie sie von einem Bereich der Platine ohne andere Spuren (auch nicht die GND-Ebene) in der Nähe. Siehe Kriechstrecke für Leiterplatten mit AC-Netzspannung? ... Ich würde die Schalter auch nicht zu nahe an die Klimaanlage stellen, da sich dort die Finger befinden. Erwägen Sie auch, der Platine einige Befestigungslöcher hinzuzufügen.

Ich würde sagen, beheben Sie das Problem und fügen Sie dann den Snubber / MOV als Versicherung hinzu. Die Kontakte werden mit zunehmendem Alter rissiger und der Snubber wird weniger effektiv.
@SpehroPefhany Ich fürchte, da muss ich widersprechen. Der Snubber und/oder MOV sollte nicht als optionaler betrachtet werden als die Flyback-Diode zum Schalten von induktiven DC-Lasten. Neben dem Reset-Problem tritt ohne Unterdrückung der Spitze eine zusätzliche Lichtbogenbildung an den Relaiskontakten auf, was die Lebensdauer des Relais verkürzt.
Okay. Ich habe gerade viele Fälle gesehen, in denen ein Außendienstmitarbeiter einen MOV oder R + C über eine Spule geheftet und verlassen hat, nur um das Problem zurückzugeben (zu hohen Kosten).
Wie gesagt, hier gibt es mehrere Probleme, und alle Probleme müssen behoben werden. Nur weil es nach dem Hinzufügen eines Snubbers (oder MOV) immer noch Probleme gibt, heißt das nicht, dass sie nicht benötigt werden.
Ja angenommen. Da das Rauschen je nachdem, wo im Zyklus das Relais schaltet, variiert, können viele Tests erforderlich sein.
Ich kann keinen Snubber parallel zur Last hinzufügen. Bedeutet dies, dass ich 2 Snubber für jeden Kontakt in die Schaltpläne aufnehmen muss?
@Triak Auf dem Red Lion SNUB0000-Datenblatt wird angegeben, dass Sie den Snubber über die Kontakte platzieren können, obwohl dies nicht die bevorzugte Methode ist (ein Snubber von P1 bis P2).
@Tut Ich habe das gelesen, aber ich habe keinen Zugriff auf die Glocke. BEARBEITEN: Ich muss die gleichen R- und C-Werte aus dem Datenblatt verwenden, richtig?
@Triak Wie gesagt, wenn Sie es nicht über die Last legen können, platzieren Sie den Dämpfer von P1 nach P2. Die Werte sind in der Regel unkritisch und hängen stark von der Belastung ab. Für mehr, als Sie wahrscheinlich wissen müssen :-) siehe: Wie konstruiert man einen RC-Snubber für ein Solenoidrelais, das eine induktive Last antreibt?
@Tut Ich werde C9 auf 0,1 uF / 400 V < oder mehr ändern

Ihr Layout ist nicht sehr gut (insbesondere der Vcc-Pfad ist lang, dünn und induktiv), und das ist ungefähr das schlechteste Relais, das Sie wählen können (es ist jedoch ungefähr das billigste). Ein besseres Relais mit hoher Isolation (vorzugsweise mit nicht gefälschten europäischen Zulassungen), Masse- und Vcc-Polygonguss (Sie haben Altium, es ist ein sehr gutes und teures Programm, Sie sollten diese Funktionen verwenden) und das Betreiben des Relais von der ungeregelten Eingabe würde alles helfen.

PICs sind ziemlich unempfindlich gegenüber Misshandlungen, aber sie sind keine Magier.

Sie könnten versuchen, das Rauschen an der (vermutlich zumindest etwas induktiven) Last mit einem Snubber oder MOV zu unterdrücken, aber das ist ein Pflaster und das Problem wird wahrscheinlich auf irgendeine Weise zurückkehren.

Fügen Sie den Kondensator 0,1u in der Nähe von Pin 14 hinzu. Ziehen Sie PortA5 (Pin4) auf Vdd.

Ich habe MCLR auf OFF gestellt.
Sie sollten sich Ihre integrierte Gleichstromleitung (C1 plus Pin) mit einem Oszilloskop ansehen, wenn das Relais ausgeschaltet wird. Ich vermute, dass das Trennen der Last von einer Wechselstromleitung eine Interferenz darin erzeugt, und diese Interferenz wird direkt auf Ihr MC-Netzteil übertragen, wodurch Ihr MC zurückgesetzt wird.
Und noch ein paar Dinge zum Layout Ihrer Platine: - Sie müssen sicher sein, dass alle Ihre GND-Polygone miteinander verbunden sind - jetzt schwebt die R8-GND-Kante in der Luft. - Drehen Sie P1-6 um 180 Grad - dies ermöglicht es Ihnen, Ihre VDD-Leitung so weit wie möglich vom DC-Eingangskreis entfernt zu platzieren.

Als ich ein Lernender war, hatte ich das gleiche Problem wie du jetzt. Und ich habe es nach vielen Fehlschlägen gelöst. Die Lösung deines Problems wäre wie folgt:

  1. Als erstes müssen Sie einen 0,1-uF-Keramikkondensator so nah wie möglich an Ihrem Mikrocontroller-Stromanschluss platzieren. Diese Kappe entfernt alle hochfrequenten Geräusche, bevor sie den Mikrocontroller erreichen.

  2. Wenn Sie Eingaben aus der externen Umgebung, wie z. B. Sensoreingaben, Schalterschnittstellen über lange Drähte oder andere Eingaben, als unerwünschtes Hochfrequenzrauschen in die Leitung oder Klemme einführen, wenn ein Relaisfunke oder ein anderer Schaltvorgang auftritt. Sie MÜSSEN es immer entfernen, sonst wird das Reset-Problem fortgesetzt.

Dieses Problem kann gelöst werden, indem ein 0,1-uF-Keramikkondensator auf jeden Eingangspin in Bezug auf Masse gelegt wird, bevor er die Mikrocontroller-Pins erreicht.

Dadurch werden alle Störungen aus Ihrem Schaltkreis entfernt und er funktioniert normal.

LMAO @ 'Alle hochfrequenten Geräusche entfernen' ! Hoffnung entspringt ewig!

ABER .. Sie stellen eigentlich keine Frage, aber es ist leicht, darauf zu schließen! Nach dem Motto ... "Wie kann ich das beheben?"

Da Sie 220V AC schalten möchten, warum nicht statt des Relais ein nulldurchgangsschaltendes SSR verwenden ? Keine Kontakte, keine Lichtbögen, fast kein Rauschen!

Vor Jahrzehnten stand ich vor einem ähnlichen Problem. Das Müll-PCB-Design war von einer ehemaligen „Beratungsfirma – so genannt“ geerbt worden, und es war kein Budget für eine Weiterleitung vorgesehen.

Kurz gesagt, die üblichen Verdächtigen wurden untersucht, wie das Hinzufügen von Snubbern und eine bessere lokale Entkopplung.

Das Update war eigentlich in der Software, etwas bizarr. Anstelle eines einzelnen I/O-Schreibvorgangs wurden die Ausgänge mehrfach geschrieben.

Dies hat es behoben. Sie können das gleiche versuchen

Zusätzlich zu allem, was Ihnen hier gesagt wurde, was ich immer mit einem Bild mache, das Relais steuert, setze ich direkt nach der Programmzeile, die das Ausschalten oder Einschalten des Relais anordnet, eine Pause (NOP) von 1 oder 2 ms, und führen Sie dann das Programm weiter aus.

Warum so? Basiert das auf einer theoretischen Idee oder einfach auf Erfahrung?
Ich sage es aus Erfahrung, das hat kleine Probleme für mich gelöst.