Welches ist der beste Weg, um externes LED-Blinken mit ESP8266 zu erkennen, wodurch der Stromverbrauch der Schaltung sehr niedrig bleibt?

Ich habe eine externe LED (Farbe ist rot), die mit variabler Frequenz blinkt. Ich muss diese Blitze überwachen, berechnen, wie viele LED-Blitze in einer Minute geführt werden, und sie protokollieren.

Ich habe einen ersten Versuch mit einem Arduino + Fotowiderstand + LM358 als Komparator gemacht (um EIN / AUS-Signal vom Fotowiderstand zu erhalten) und es funktioniert.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ich verwende sie, weil ich diese Komponenten für einen Test zur Verfügung habe, aber jetzt muss ich eine sehr kleine Schaltung mit sehr geringem Stromverbrauch und drahtloser Verbindung erstellen.

Spezifikationen:

  • Mikrocontroller: ESP8266-01
  • VDD: 3,3 V (Knopfbatterie)
  • LED-Frequenz bis zu (ca.) 5Hz

Was ist mit der Lichtsensorschaltung? Was ist der beste Weg, um es zu vereinfachen und den Verbrauch sehr niedrig zu halten?

HINWEIS: Ich kann das Gerät, das ich überwachen muss, nicht öffnen/ändern. Die einzige Möglichkeit, seine Aktivität zu überwachen, ist die geführte Aktivität

Das riecht sooo sehr nach einem XY-Problem, was versuchst du wirklich zu lösen? Ich habe noch nie eine Anwendung gesehen, bei der die Überwachung einer blinkenden LED die richtige Lösung war.
Was ist mit dem Ersetzen der LED durch einen Optokoppler, da er eine LED enthält?
Ich habe einen Stromzähler, der eine LED einmal pro Verbrauch von ungefähr (ich schätze) 10.000 Joule aufleuchtet. Das Zählen der Blitze soll eine berührungslose Methode zum Ablesen des Stromverbrauchs sein, es gibt sogar eine Aussparung um die LED-Bereiche herum, die für die Aufnahme eines begleitenden Optodetektors vorgesehen ist. Ich werde mich mal darum kümmern! Wie lange sind die Blitze? Eine gute Möglichkeit, Energie zu sparen, besteht darin, die meiste Zeit zu schlafen. Gibt es Zeit, den Lichtdetektor einzuschalten, ihn stabilisieren zu lassen, für 90 % der Zeit wieder einzuschlafen, alles innerhalb der Dauer eines Blitzes? Sie können kein Messgerät öffnen, um mit der LED herumzuspielen.
Es ist ähnlich wie das, was Neil_UK sagt: Ich kann das Gerät*, das ich überwachen muss , nicht zerlegen, modifizieren usw. Die einzige Möglichkeit besteht darin, seine Aktivität durch Lesen der geführten Aktivität zu überwachen. Die LED-Frequenz ist nicht sehr hoch, bis zu etwa 5 Hz ().
Die LED-Frequenz beträgt etwa 5 Hz, aber was ist mit dem Arbeitszyklus? Ich meine, ist es während 10 ms an und während 200 ms aus, oder ist es 50%-50%?
Die Frequenz ist nicht festgelegt. Es ist variabel: Nach meiner Messung mit der Arduino-Schaltung überschreitet die Frequenz niemals 5 Hz, kann aber niedriger sein (auch < 0,5 Hz). Ich analysiere nie den Arbeitszyklus, weil ich denke, dass es in diesem Zusammenhang keinen Sinn macht.
Halten Sie die Lichterkennungsschaltung aktiv, bis Licht erkannt wird. Sobald das Licht aus ist, SCHRITT 1: Gehen Sie für MINIMUM_NO_LED_DURATION in den Schlafmodus. SCHRITT 2 Beginnen Sie mit dem Scannen nach LED für weniger als die Dauer von MINIMUM_LED_ON_DURATION. Gehe zu Schritt 1.
@PlasmaHH, hast du jemals im kWh-Zähler-Geschäft gearbeitet? ;) (da gibt es viele blinkende LED-Überwachungsgeräte)
@PkP: Diejenigen, mit denen ich gearbeitet habe, hatten eine IR-LED, die ständig Daten übertragen würde
Der Arbeitszyklus von @Noisemaker ist relevant, denn wenn Sie einen Fototransistor verwenden und dieser die meiste Zeit leitet (weil die LED eingeschaltet ist), bedeutet dies, dass der Pullup die meiste Zeit Strom verschwendet (R1 im Schaltplan von pjc50). Dies wird wahrscheinlich neben dem ESP8266 selbst Ihr Hauptabfluss sein.
@Noisemaker Wenn Sie also diese Stromverschwendung reduzieren möchten, können Sie beispielsweise das obere Ende des Pullups mit einem GPIO verbinden, sodass Sie den Pullup nicht dauerhaft aktivieren, sondern nur, wenn Sie ihn (regelmäßig) überprüfen. Ob es sich lohnt (oder komplett überarbeitet wird), hängt von Ihrem LED-Arbeitszyklus ab.
Mit der Arduino-Schaltung habe ich Interrupt an dem Pin verwendet, an dem der Sensor befestigt wurde. Meine Idee war also, den gleichen Ansatz mit ESP8266 zu verwenden (sollte möglich sein). Der Schlafzustand wird also der nächste Schritt sein. Jetzt muss ich wissen, wie ich am besten ein LOW / HIGH-Signal erzeugen kann, wenn die LED AUS / EIN ist. Dadurch wird der Interrupt ausgelöst. Die Verwendung eines hochwertigen Pullup-Widerstands sollte den Stromverbrauch ausreichend reduzieren?
Die Verwendung eines höheren Pullups reduziert den Stromverbrauch, aber Sie haben eine langsamere Reaktionszeit. Und wenn Sie ihn zu hoch einstellen, kann die Leckage erheblich werden und der hohe Pegel ist zu niedrig, um richtig erkannt zu werden. Ob es "genug" ist, ist eine Frage des Kompromisses und hängt von vielen Faktoren ab, die mir nicht bekannt sind (LED-Arbeitszyklus, ESP8266-Standby-Strom, ESP8266-Sendestrom, Sendezeiten, erwartete Lebensdauer usw.). ).
Ich denke an eine Fotodiode: Bei inverser Polarisation lässt sie nur dann Strom fließen, wenn Licht an ist, oder? So wird kein Strom verschwendet, wenn die LED aus ist.
Ich habe eine IR-Fotodiode in meiner Elektronikkomponentenbox gefunden und versucht: Sie erkennt hervorragend rotes LED-Licht, ist jedoch zu empfindlich gegenüber externen IR-Quellen (wie andere Licht in der Umgebung um den Stromkreis herum).

Antworten (1)

Ich hatte Erfolg mit https://github.com/dkroeske/emon-server :

Geben Sie hier die Bildbeschreibung ein

Ich verwende es jedoch mit einem Pi, der für Strom und Ethernet verkabelt ist. Ich habe mir nie die Mühe gemacht, den Stromverbrauch zu messen, aber wenn Sie einen CMOS 555 verwenden und die Diagnose-LED loswerden, sollte er ziemlich niedrig sein.

Sie werden ernsthafte Probleme haben, einen ESP8266 mit Knopfzellen zu betreiben. Die Sendeleistung kann mehrere hundert Milliampere betragen.

sie haben Recht! Ich habe mich nicht um die Sendeleistung gekümmert (es werden alle 10 Minuten Daten gesendet). Der Wechsel zu einem 3,7-V-Li-Ion-Akku mit Spannungsregler sollte funktionieren?
Ja das hört sich gut an. Ich bin mit dem Programmiermodell des ESP nicht vertraut genug, um zu wissen, wie es mit dem Ruhezustand umgeht, aber für die beste Akkulaufzeit sollte es so weit wie möglich im Ruhezustand und ohne WLAN sein. Wenn es nicht sehr gut schläft, kann es sich lohnen, einen winzigen Mikrocontroller hinzuzufügen, nur um das Zählen und die Leistungssteuerung für das ESP zu übernehmen.