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.
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:
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.
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.
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:
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.
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.
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.
Jon L
Triak