Astabile 555-Zeitgeberschaltung, die bei einem Herzschlag zurückgesetzt wird

Ich versuche, eine Schaltung zu entwerfen, die meinen ESP8266 zurücksetzt, wenn er abstürzt / hängt. Dies geschieht, indem jede Minute ein Herzschlag an einen 555-Timer gesendet wird, der den 555-Timer zurücksetzt. Der 555-Timer ist in einer stabilen Konfiguration konfiguriert, die alle eineinhalb Minuten einen Impuls an den Reset-Pin sendet, es sei denn, es wird ein Herzschlag empfangen. Dies ist das Design für meine Schaltung, die von hier aus basiert .Geben Sie hier die Bildbeschreibung ein

Nach der Simulation dieser Schaltung auf einem Steckbrett scheint es jedoch nicht zu funktionieren. Ich bin mit 555-Timern nicht sehr vertraut, der bereitgestellte Link gibt eine bessere Erklärung für die Schaltung. Jede Hilfe wird sehr geschätzt.

(1) Hat der ESP8266 keinen internen Watchdog-Timer? (2) Warum stürzt es ab/hängt? Schlechter Code?
1 Minute erwartet viel für eine analoge RC-Abklingzeit aufgrund der begrenzten Auswahl an Kunststoffkappen für niedrigen Leckstrom, viel weniger als Pull-up-Strom oder Äquiv. R. Sehr schlechtes Design zum Kopieren. Sie möchten einen flankenempfindlichen retriggerbaren Port, der niemals in Flimmern oder wiederholte falsche Trigger übergeht. Wählen Sie also eine bessere Spezifikation oder ein besseres Design zum Kopieren.
@Transistor Ich bin mir aus dem Grund des Absturzes/Hängens nicht sicher, aber das habe ich vom Client erhalten.
@TonyEErocketscientist Ich kann möglicherweise das Zeitintervall auf 30 Sekunden reduzieren, es ist nur so, dass ich den Code nicht auffüllen möchte, indem ich alle 30 Sekunden einen Impuls sende. Aber das Problem ist jetzt, dass die Schaltung nicht einmal funktioniert. Können Sie irgendetwas empfehlen, um das Problem zu beheben?
Nicht ohne Teilenummern. Ich vermute, Sie verwenden keine Echtzeit-IRQs, was diese Aufgabe erleichtert. Für eine Zeitmessung von 60 s benötigen Sie eine Kunststoffkappe.
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da "es scheint nicht zu funktionieren" keine gültige Problembeschreibung ist. Fragen müssen spezifisch zum Unterschied zwischen erwartetem Verhalten und beobachtetem Verhalten sein. Welche Debugging-Schritte wurden unternommen? Überwachen Sie entweder den Ein- und Ausgang mit einem Oszilloskop oder fügen Sie, wenn die Zeit im menschlichen Maßstab liegt, eine LED zu jedem hinzu, wobei Sie darauf achten, dies so zu tun, dass der Betrieb der Schaltung nicht gestört wird (dh nach einem Pufferverstärker möglich).
NE555DR funktioniert nicht mit 3,3 V, verwenden Sie stattdessen TLC555C oder 7555 usw.
@Transistor - eine Nebensache, aber im Allgemeinen bevorzuge ich externe Watchdogs gegenüber internen. Zu einfach für fehlerhaften Code, um versehentlich zu einer Routine zu gelangen, die den Watchdog deaktiviert. Ein externer Watchdog (vorzugsweise ein Fenster-Watchdog), der nicht vom Prozessor deaktiviert werden kann, ist viel robuster.

Antworten (1)

Als ich die Schaltung zum ersten Mal sah, war ich ein wenig zweifelhaft, dass sie überhaupt etwas bewirken würde, da die Thresh- und Trig-Pins mit nichts außer sich selbst verbunden zu sein scheinen. Wenn man zu der Quelle geht, die Sie gepostet haben, kann man sehen, dass der Schaltplan dies auch zu behaupten scheint ... Auf dem Bild der gesamten Schaltung, die auf dem Steckbrett aufgebaut ist, kann man jedoch sehen, dass ein grüner Draht von Pin 2 zum Kondensator führt , das ist genau das, was Sie brauchen, um diese Schaltung zum Laufen zu bringen. Dies ist das wahrscheinlichste Problem mit der Schaltung.

Nun zu einigen anderen möglichen Problemen.

Ich habe das erste Datenblatt für den 555-Timer nachgeschlagen, das ich finden konnte, und das war zufällig dieses: http://www.ti.com/lit/ds/symlink/ne555.pdf. In diesem Blatt wird angegeben, dass der Betrieb nur für Versorgungsspannungen von 4,5 bis 15 Volt definiert ist, während Sie den IC anscheinend mit 3,3 V betreiben. Ich würde empfehlen, den 555-Timer bei 5 V zu betreiben, es sei denn, Sie haben eine spezielle 3,3-V-Version des IC. Es gibt kein Problem mit nicht übereinstimmenden Spannungen am Ausgang, da die Diode am Ausgang des 555 dafür sorgt, dass der 555-Timer den Reset nur auf Low ziehen und nicht auf High drücken kann. Um dies besonders sicher zu machen, würde ich vor der Diode einen kleinen RC-Filter hinzufügen, damit die Schaltgeschwindigkeit des 555-Timers keinen kurzzeitigen 5-V-Blitz verursacht, wenn die parasitäre Kapazität der Diode erheblich ist, aber dies ist wahrscheinlich zu vorsichtig. Diese zusätzlichen Komponenten sind R3 und C3.

Das andere 5-V-3,3-V-Schnittstellenproblem ist am Impulseingang zu sehen. Auch hier können Sie einfach eine einfache Diode verwenden, um den Kondensator zu entladen, indem Sie den Impulsstift auf niedrig setzen. Dies würde den Kondensator jedoch nur auf etwa 0,7 Volt pro Zyklus entladen. Um dies zu beheben, habe ich stattdessen einen Transistor verwendet. Beachten Sie, dass dies bedeutet, dass der Impuls jetzt ein hochgehender Impuls sein muss, anstatt ein niedriggehender Impuls, um die Schaltung zu schlagen.

Eine letzte Sache, die ich beachten sollte, die Werte, die ich für alle Widerstände, Kondensatoren und andere Teile gewählt habe, waren größtenteils willkürliche Zahlen, da Ihr Beitrag auch keine Werte angegeben hat. Wahrscheinlich ist der Hauptteil davon, den Sie für Ihre spezifische Anwendung ändern möchten, die Werte für den Timing-Teil der Schaltung, R1, C1 und R2.

BEARBEITEN: Beachten Sie, dass ich auch mit dem übereinstimme, was andere Kommentatoren gesagt haben. Aufgrund von Leckströmen, Temperaturschwankungen des Timers und der Gesamtkomplexität ist dieses Design wahrscheinlich nicht das Beste. Optimalerweise würden Sie einen eingebetteten Watchdog-Timer verwenden oder einfach nur Ihren reparieren Code, damit es nicht abstürzt. Andere Hardwarelösungen, die möglicherweise zuverlässiger sind, könnten einen ganz anderen Mikrocontroller umfassen, um diese Zeitgebersteuerung oder kompliziertere digitale Chips durchzuführen.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

EDIT 2: Jasen schlug einen Reihenkondensator vor, um zu verhindern, dass der Impulseingang die Schaltung zu lange hoch hält, sowie eine Diode, um den Kondensator zu entladen. Ich habe dies in das Diagramm bearbeitet und einen Widerstand parallel zur Diode hinzugefügt, um sicherzustellen, dass sich der Kondensator in einem Zyklus vollständig entlädt, anstatt sich auf einen Diodenabfall zu entladen. Diese besteht aus C4, D4, R7 und R8. Beachten Sie, dass diese Werte ebenso wie die anderen Werte in diesem Schema willkürlich gewählt wurden, also passen Sie die RC-Zeitkonstante für Ihre Anwendung an.

Ich schlage vor, einen Reihenkondensator (und eine Diode von Masse) im Eingang hinzuzufügen, damit ein hängender "Impuls" -Eingang den Watchdog nicht für immer schlafen lässt.
Ein guter Vorschlag, ich werde ihn bearbeiten.
@KevinBrant Vielen Dank für die Hilfe und ich entschuldige mich zutiefst für den Mangel an Daten, da ich ziemlich neu bei 555-Timern bin. Ich habe die von Ihnen empfohlene Schaltung auf einem Steckbrett ohne die Schutzkomponenten wie den RC-Filter am Ausgang und Eingang (Impuls) simuliert, um den Proof of Concept zu testen. Wenn der Impulsstift schwebend gelassen wird, sendet der Ausgang in jedem eingestellten Intervall einen Impuls, wenn der Impuls auf Low gezogen wird, ist der Ausgang HIGH, wenn der Impuls auf High gezogen wird, ist der Ausgang LOW. Obwohl ich derzeit nach bestimmten ICs suche, um dieses Problem zu beheben, würde ich dennoch gerne Fehler in dieser Schaltung beheben.